结果是:
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
alien_number is:30
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': 10, 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'yellow', 'points': 15, 'speed': 'medium'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'red', 'points': '15', 'speed': 'fast'}
{'color': 'yellow', 'points': 15, 'speed': 'medium'}
我认为前五个不应该全是红色我认为正确的顺序应该是红色黄色 黄色红色黄色为什么会感到困惑?
import rando
alien_0={'color':'green','points':5,'speed':'slow'}
alien_1={'color':'yellow',"points":15,'speed':'medium'}
alien_2={'color':'red','points':10,'speed':'fast'}
aliens_1=[]
color=('red','yellow','green')
for alien_number in range(30):
random_num=random.randint(0,len(color))-1 #create a random number in order to get a random color
if color[random_num] == 'green':
aliens_1.append(alien_0)
elif color[random_num] == 'red':
aliens_1.append(alien_2)
else :
aliens_1.append(alien_1)
for alien in aliens_1[:5]:
print(alien)
print("alien_number is:"+str(len(aliens_1)))
for alien in aliens_1[0:5]:
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_1[0:10]:
print(alien)
答案 0 :(得分:0)
您不小心更改了整个词典,而不是想要词典表示的特定外星人。
现在,每次将外星人字典添加到外星人的随机列表中时,只需添加.copy()
。
if color[random_num] == 'green':
aliens_1.append(alien_0.copy())
将来,最好用类而不是字典来处理。
分配多个变量以反映字典时,它们不会复制其值。它们是彼此相同的字典。换一换一换。使用.copy()
可以解决这个问题,但是类对此类型的使用会更加灵活,并且应该减少“陷阱”问题。