首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在if语句为true时执行block块。

在if语句为true时执行block块。
EN

Stack Overflow用户
提问于 2020-11-15 13:40:25
回答 1查看 31关注 0票数 0

我刚开始学习Python (在学校学习),很难理解这个简单的代码:

代码语言:javascript
复制
# Take a planet name as input. Example: Mars, Neptune, Mercury etc.
myPlanet = raw_input("Enter the name of a planet: ")

# Check if 'myPlanet' is stored in the list of dictionaries.
for dictionary in planets:
    if (dictionary["name"] == myPlanet):
        print(dictionary)
    else:
        print("Unknown planet specified.")
        return

示例输出:

代码语言:javascript
复制
Enter the name of a planet: Mercury
{'radius': 2439.7, 'name': 'Mercury'}
Unknown planet specified.

当水星存在于列表中时,为什么在这里执行else块?

输出“未知行星”?会显示出来。我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-15 13:47:24

因为您检查是否为每个字典找到匹配的。假设有几个行星并且你找到了匹配的行星,你继续迭代到下一个行星,当它不匹配的时候,你会得到else语句。您可能需要取消else的缩进,并将一个break添加到if中,以创建for/else构造:

代码语言:javascript
复制
for dictionary in planets:
    if (dictionary["name"] == myPlanet):
        print(dictionary)
        break
else:
    print("Unknown planet specified.")

在这里,else只会在循环耗尽而不破坏的情况下执行,这意味着没有一个行星与此条件匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64845062

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档