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