第一段代码运行后发现不是自己的预期结果,显然elif是在运行完if 的基础上对‘color’值进行判断:为什么对if执行的‘color’值,elif会在执行完if以后再次进行判断执行?
debug一步一步查看才看出来是循环的问题。
(1)
#创建一个用于存储外星人的空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
new_alien={'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
#修改前三个外星人颜色为黄色、速度为中等且值10个点
for alien in aliens[0:3]:
if alien['color']=='green':
alien['color']='yellow'
alien['points']=10
alien['speed']='medium'
elif alien['color']=='yellow':
alien['color']='red'
alien['points']=15
alien['speed']='fast'
#显示前五个外星人(运用切片)
for alien in aliens[:5]:
print(alien)
print("....")
#显示创建了多少个外星人
print("Total number of aliens: "+str(len(aliens)))
输出:
(2)
正确代码:
#创建一个用于存储外星人的空列表
aliens=[]
#创建30个绿色的外星人
for alien_number in range(30):
new_alien={'color':'green','points':5,'speed':'slow'}
aliens.append(new_alien)
# 显示前五个外星人(运用切片)
for alien in aliens[:5]:
print(alien)
print("....")
# 显示创建了多少个外星人
print("Total number of aliens: " + str(len(aliens)))
#修改前三个外星人颜色为黄色、速度为中等且值10个点
for alien in aliens[0:3]:
if alien['color']=='green':
alien['color']='yellow'
alien['points']=10
alien['speed']='medium'
elif alien['color']=='yellow':
alien['color']='red'
alien['points']=15
alien['speed']='fast'
for alien in aliens[:5]:
print(alien)
print("....")
输出:

本文通过对比两段代码的输出结果,揭示了在循环结构中使用if-elif语句时常见的逻辑陷阱。作者首先展示了错误的代码示例,其中对多个外星人属性的修改未能达到预期效果。通过debug分析,发现问题根源在于循环内的条件判断顺序和执行时机。随后,通过调整代码结构,将修改属性的操作置于循环之外,确保了条件判断的正确执行,最终实现了预期的输出结果。
441

被折叠的 条评论
为什么被折叠?



