【问题标题】:For-loop with else condition runs even though the condition is true即使条件为真,带有 else 条件的 For 循环也会运行
【发布时间】:2020-04-29 20:53:49
【问题描述】:

初学者问题!即使for 语句是Trueelse 条件也会运行,并打印出声明它没有找到密钥的文本消息。由于声明是True,它也给了我想要的信息,问题是它运行else,即使forTrue

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")

我做错了什么?

【问题讨论】:

  • rooms_with 中的值是什么?

标签: 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 分支已执行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多