【问题标题】:I'm trying to write a condition on the python list我正在尝试在 python 列表上写一个条件
【发布时间】:2021-12-07 15:32:35
【问题描述】:

我尝试编写一个 Python 程序来接受来自用户的以 0 开头并以 20 结尾的整数列表。所述列表的每个整数要么与前一个整数相差两倍,要么是前一个整数的四倍。返回真假

有人可以纠正我写的条件

lst = []

n = int(input("Enter the no of elements in the list :"))

for i in range (0,n):
    elem = int(input("Enter the elements between 0 and 20 : "))
    lst.append(elem)

if elem >= 0 and elem <=20:
    print(lst)
    
for i in elem:
    if (i+1) >= 2(i) or 4(i+1) == i:
        print(True)
else:
    print(False)

【问题讨论】:

  • 您是否试图将用户输入的元素限制在 0 到 20 之间?
  • @sowbarnika 如果您喜欢我的回答,我们将不胜感激。否则,如果需要修复,请 lmk

标签: python python-3.x list data-science


【解决方案1】:

您可以使用 zip 将项目与其继任者配对。这将使您可以比较它们并根据您的要求使用 any() 或 all() 检查您的状况:

if any(abs(a-b)==2 or a*4==b for a,b in zip(lst,lst[1:]):
   print(True) # at least one number pair meets the criteria
else:
   print(False)

if all(abs(a-b)==2 or a*4==b for a,b in zip(lst,lst[1:]):
   print(True) # all numbers meets the criteria
else:
   print(False)

【讨论】:

    【解决方案2】:
    arr_len = int(input("Input a length for list: "))
    
    nums = [0] * arr_len
    res = [False] * arr_len
    
    for i in range (len(nums)): 
        num = -1
        while not(num >= 0 and num <= 20):
            num = input("Enter the elements between 0 and 20 : ") 
            num = nums[i] = int(num)
            if (num >= 0 and num <= 20):
                print('appended')
            else:
                print('that number is not between 0 and 20')
    for i in range(1,len(res)):
        num = nums[i]
        prev_num = nums[i-1]
        if (abs(num-prev_num)) == 2 or prev_num == 4*num: 
            res[i] = True 
    for i in range(len(nums)):
        print('i is: ', i , 'nums[i], ', nums[i],
                  ', is allowed in array: ', res[i])
    res = dict(zip(nums,res))
    print(res)
    

    【讨论】:

    • 很好,但是为什么 res[0] = False 以及如果我输入 65 会发生什么,我的列表中的元素会比我想要的少?
    • 我只是使用res 来保存哪些索引具有遵循规则的数字。如果你愿意,你可以制作 res[0] True
    • res = [False] * arr_len 已经将 res[0] 设为 false 否?
    猜你喜欢
    • 2019-08-03
    • 2016-10-19
    • 1970-01-01
    • 2023-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-01
    相关资源
    最近更新 更多