尝试更新字典值

  • 本文关键字:字典 更新 python
  • 更新时间 :
  • 英文 :


我只是在学习编程,并且在尝试创造一款僵尸骰子游戏时遇到了一个障碍,就像许多人之前看到的那样。我试图添加一个积分计数器,使用字典跟踪每个玩家在整个游戏中的积分。在这种情况下,我试图将在这一轮中获得的点数添加到玩家的总得分中,但当我尝试更新"大脑"时;值它总是给我这个错误,我似乎不知道出了什么问题。

import random, time
diceTypes = ('green', 'yellow', 'red')
diceSides = ('brains', 'footsteps', 'shotguns')  # Each number represents Brains, Footsteps, and Shotguns
dieRolled = []
result = ''
brainsCounter = 0
shotgunCounter = 0
players = {'Player 1': {'name': 'Lane', 'brains': 0},
'Player 2': {'name': 'Brian', 'brains': 0},
'Player 3': {'name': 'Sam', 'brains': 0},
'Player 4': {'name': 'John', 'brains': 0},
'Player 5': {'name': 'Jack', 'brains': 0},
'Player 6': {'name': 'Joseph', 'brains': 0},
'Player 7': {'name': 'Damian', 'brains': 0},
'Player 8': {'name': 'Eli', 'brains': 0}}

# Pick three die randomly
def diceDraw():
dieRolled.extend(random.choices(diceTypes, weights=(33, 34, 33), k=3))
print('You rolled a ' + str(dieRolled[0]) + ', ' + str(dieRolled[1]) + ', and a ' + str(dieRolled[2]))

# Roll the different die
def redDie():
result = random.choices(diceSides, weights=(17, 33, 50), k=1)
feedback(result)

def greenDie():
result = random.choices(diceSides, weights=(50, 33, 17), k=1)
feedback(result)

def yellowDie():
result = random.choices(diceSides, weights=(33, 34, 33), k=1)
feedback(result)

def feedback(result):
global brainsCounter, shotgunCounter
if result[0] == 'brains':
print('You ate a brain!')
brainsCounter += 1
elif result[0] == 'footsteps':
print('The human got away!')
else:
print('You got shot!')
shotgunCounter += 1

def rollDice(dice):
for i in dice:
if i == 'Red':
redDie()
elif i == 'Green':
greenDie()
else:
yellowDie()
time.sleep(1)
if shotgunCounter == 3:
break
if brainsCounter == 1 and shotgunCounter == 1:
print('You have ' + str(brainsCounter) + ' brain, and have been shot ' + str(shotgunCounter) + ' time.')
elif brainsCounter != 1 and shotgunCounter == 1:
print('You have ' + str(brainsCounter) + ' brains, and have been shot ' + str(shotgunCounter) + ' time.')
elif brainsCounter == 1 and shotgunCounter != 1:
print('You have ' + str(brainsCounter) + ' brain, and have been shot ' + str(shotgunCounter) + ' times.')
else:
print('You have ' + str(brainsCounter) + ' brains, and have been shot ' + str(shotgunCounter) + ' times.')

def turn(player):
global brainsCounter
input('Press enter to begin your turn...')
diceDraw()
while True:
time.sleep(1)
rollDice(dieRolled)
if shotgunCounter < 3:
print('Would you like to roll again or stop there? (y/n)')
answer = input()
if answer == 'y':
continue
elif answer == 'n':
break
else:
print('Your turn is over and you lost those brains!')
break
players[[player]['brains']] += brainsCounter
brainsCounter = 0

# todo determine end of turn and record points for turn
# todo cycle turns between players
# todo determine winner
# todo create catchup round
# todo request number of players and save variable
turn('Player 1')
print(players['Player 1']['brains'])
print(brainsCounter)

这一行不对:

players[[player]['brains']] += brainsCounter

我希望你能:

players[player]['brains'] += brainsCounter

PS:你真的应该显示你在问题中得到的错误,包括完整的堆栈跟踪。

最新更新