即使条件为true,带else条件的For循环也会运行

时间:2020-01-13 06:40:43

标签: python for-loop if-statement input

初学者问题!即使else语句为forTrue条件也会运行,并且会打印出表明尚未找到密钥的文本消息。由于该语句为True,它也为我提供了我想要的信息,所以问题是即使elsefor,它也运行True

input_namn = input("Ange ett namn: ")               
for key in rooms_with:                          
    if input_namn in rooms_with[key]:
        print (input_namn + "\ndelar rum med \n" + key)
else: 
    print ("\nPersonen du angav är inte en del av föreningen\n")

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您的缩进else子句中不正确。

由于它与for循环处于同一级别,因此else属于for循环,而不是if语句。

只需缩进 else子句,其级别与if相同,如下所示:

input_namn = input("Ange ett namn: ")
for key in rooms_with:
    if input_namn in rooms_with[key]:
        print (input_namn + "\ndelar rum med \n" + key)
    else: # This is indented correctly
        print ("\nPersonen du angav är inte en del av föreningen\n")

else属于for循环时会发生什么?

Python documentation说:

循环语句可以包含else子句;当循环通过穷尽可迭代对象(使用for终止或条件变为假(使用while)终止时执行,而不是通过break语句终止循环执行

基本上,在循环结束时执行else块,除非循环由break语句停止。

由于您的循环中没有break语句,因此您的else分支已执行。