如果if语句至少满足一次,如何不执行for循环的else语句?

时间:2018-05-24 18:24:53

标签: python python-3.x for-else

我正在尝试检查列表中的所有元素,以查看它们是否满足“小于5”的条件。我想要做的是如果我的列表中没有数字小于5,我想打印一条声明“此列表中没有小于5的元素”,否则只打印那些数字,而不是“此列表中没有小于5的元素。“还

list = [100, 2, 1, 3000]
for x in list:
    if int(x) < 5:
        print(x)
else:
    print("There are no elements in this list less than 5.")

这会产生输出:

2
1
There are no elements in this list less than 5.

如何摆脱输出的最后一行?

4 个答案:

答案 0 :(得分:7)

如果遇到else,则只会跳过for-loop的{​​{1}}。因此,break语句不适合来查找列表中的多个元素。

相反,请使用列表推导并根据结果进行相应的打印。

for-else

答案 1 :(得分:1)

您可以执行以下操作:

if max(mylist) < 5:
    print('there are no elements in this list greater than 5')
else:
    for x in mylist:
        if int(x) < 5:
            print(x)

这会检查您的列表是否包含任何大于5的内容,如果有,则会运行您的循环。

答案 2 :(得分:1)

在循环外部保留一个布尔标志。如果找到至少一个元素,则将其设置为true。如果标志没有改变 - 打印出关于没有找到大于5的元素的声明:

list = [100, 2, 1, 3000]
found = False
for x in list:
  if int(x) < 5:
    print(x)
    found = True

if found == False:
  print("There are no elements in this list greater than 5")     

答案 3 :(得分:-1)

您需要的是某种标志,以便跟踪是否满足条件,如下面的代码所示。 list = [100, 2, 1, 3000] flag = False for x in list: if int(x) < 5: print(x) flag = True if not flag: print("There are no elements in this list greater than 5.")