Python字典列表外星人示例中if后的elif条件语句无法生效问题
问题原因
你的代码里,处理前3个外星人的循环中,每个外星人只会被单次检查:
- 初始状态下这些外星人都是绿色,所以会执行
if分支,把它们改成黄色; - 但
elif和if属于同一个条件判断块,这次循环里不会再对已经变成黄色的外星人做二次判断,循环结束后这些外星人停留在黄色状态,自然不会出现红色。
解决办法
有两种简单的修复方式:
方式1:拆成两个独立的if语句
把原来的elif改成独立的if,这样同一个外星人在一次循环里会被两次检查:先从绿色转黄色,接着立刻检查黄色状态并转红色。修改后的代码片段:
for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 # 将elif改为独立的if if alien['color'] == 'yellow': alien['color'] = 'red' alien['speed'] = 'fast' alien['points'] = 15
方式2:分两次循环处理
先执行一次循环把绿色外星人转成黄色,再执行一次循环把黄色外星人转成红色,逻辑更直观:
# 第一次循环:绿色→黄色 for alien in aliens[0:3]: if alien['color'] == 'green': alien['color'] = 'yellow' alien['speed'] = 'medium' alien['points'] = 10 # 第二次循环:黄色→红色 for alien in aliens[0:3]: if alien['color'] == 'yellow': alien['color'] = 'red' alien['speed'] = 'fast' alien['points'] = 15
两种方式都能让前3个外星人最终变成红色,执行后输出就能看到红色外星人的信息了。
内容的提问来源于stack exchange,提问作者Jorge Bailon
相关产品推荐
相关产品推荐

