关于if与elif掉进循环的疑惑

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 第一段代码运行后发现不是自己的预期结果,显然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("....")

输出:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值