如何在 for 循环中停止重复打印 print 语句,同时继续运行循环?

4

我的代码中的情况使得即使仔细查找,我也找不到适用的答案。这是我的代码的简化版本:

value = int(input())
list = [5,10,15,20]

for i in list:
    if i == value:
        print("Value is in list.")
        break
    else:
        print("Value is not in list.")
       

如果我输入了15,那么代码将会打印出:
"值不在列表中。 值不在列表中。 值在列表中。"
但我只想让它打印一次"值在列表中",如果它在列表中并且打印一次"值不在列表中",如果它不在列表中。我必须保留for循环和if/else语句。据我所知,在else语句中使用break会彻底结束循环。我该怎么办?
5个回答

6

你可以使用一个标志位,默认情况下标志位是False,如果您找到了该值,则将标志设置为True。

for 循环结束后,您可以检查标志变量的值,以确定该值是否在列表中。

value = int(input())
list = [5,10,15,20]

found = False
for i in list:
    if i == value:
        found = True
        break

if found:
    print("Value is in list.")
else:
    print("Value is not in list.")

这是一种更新算法并使其工作的方法,否则您可以使用 if value in list 检查元素是否在列表中。


5
这可能不是您的目标,但是您可以仅检查列表中的值是否存在一次,而无需迭代。
value = int(input())
_list = [5,10,15,20]

if value in _list:
    print("Value is in list.")
else:
    print("Value is not in list.")

1
同意,我认为这是最好的方法。 - LPR
@LPR 当然更符合Python风格的做法是不进行迭代,但是可能OP的使用情况/分配等需要通过迭代来标记。 - will-hedges
1
是的,我已经测试过了,但我的程序要求使用for循环,具体来说。不过还是谢谢! - darthcode

2

您可以创建一个布尔值。

value = int(input())
list = [5,10,15,20]
firstTime = True
for i in list:
    if i == value and firstTime == True:
        print("Value is in list.")
        firstTime = False
    else:
        if firstTime == True
            print("Value is not in list.")
            firstTime = False

我已经尝试过这个,但除了5以外的任何输入都会打印出“值不在列表中”。 - darthcode
那不是我的问题。我已经展示了我所问的内容。虽然我是个好人,我会找出原因并编辑我的帖子。 - Thavas Antonio
其实我刚意识到,最佳答案已经提供了解决方案。 - Thavas Antonio

1
你可以将其移到一个函数中,该函数可以随时终止。
def isin(val):  
    list_ = [5, 10, 15, 20]  
    for i in list_:  
        if val == i:  
            print("Value in list")  
            return  
    print("Value not in list")      


isin( int(input()) )  

我认为这样做是最干净的,因为无需使用标志而只需迭代列表。 - will-hedges

0
你可以按照以下方式声明一个布尔变量:
value = int(input())
list = [5,10,15,20]
avail=False

for i in list:
    if i == value:
        avail=True
        break  
        
if avail:
    print('Value in List')
else:
    print('Value not in List')

一个更简单的方法是使用以下代码中的in关键字:
value = int(input())
list = [5,10,15,20]

if value in list:
    print('Value In list')
else:
    print('Value Not in list')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接