【问题标题】:For-loop with else condition runs even though the condition is true即使条件为真,带有 else 条件的 For 循环也会运行
【发布时间】:2020-04-29 20:53:49
【问题描述】:
初学者问题!即使for 语句是True,else 条件也会运行,并打印出声明它没有找到密钥的文本消息。由于声明是True,它也给了我想要的信息,问题是它运行else,即使for 是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")
我做错了什么?
【问题讨论】:
标签:
python
for-loop
if-statement
input
【解决方案1】:
您的 缩进 在 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 分支已执行。