问题描述
我正在创建一个骰子游戏。我被困住了,我想让游戏针对每个玩家的掷骰输出roll = randint(1,6)
进行比较,以便得分最高的玩家获胜。但是,我真的不知道该怎么做。
from random import randint
def main():
player = int(input('How many players> '))
step = 1
player += 1
player_dict = {}
for pl in range(1,player,step):
player_name = input(f'Player {str(pl)} name> ') # Get players name from user input
player_dict[pl] = player_name
for x in player_dict:
roll_dice(player_dict[x])
def roll_dice(player_name):
start_rolling = input(f'{player_name} roll dice? y/n> ')
if start_rolling == 'y' or start_rolling == 'Y':
roll = randint(1,6)
print(roll)
return roll_dice
解决方法
在下面看这个例子。
from random import randint
def main():
players_count = int(input('How many players> '))
player_dict = {}
for pl in range(players_count):
player_name = input(f'Player {str(pl + 1)} name> ') # Get players name from user input
player_dict[player_name] = 0 # Initialize all players scores to 0
for player_name in player_dict:
player_dict[player_name] = roll_dice(player_name) # Update score of each player
print(sorted(player_dict.items(),key=lambda item: item[1])) # Display sorted scores
def roll_dice(player_name):
start_rolling = input(f'{player_name} roll dice? y/n> ')
if start_rolling == 'y' or start_rolling == 'Y':
roll = randint(1,6)
return roll
main()
,
from random import randint
def main():
player = int(input('How many players> '))
step = 1
player += 1
player_dict = {}
scores_dict = {}
for pl in range(1,player,step):
player_name = input(f'Player {str(pl)} name> ') # Get players name from user input
player_dict[pl] = player_name
for x in player_dict:
score = roll_dice(player_dict[x])
scores_dict[player_dict[x]] = score
highest_score = max(scores_dict,key=scores_dict.get)
sorted_scores = {k: v for k,v in sorted(scores_dict.items(),key=lambda item: item[1],reverse=True)}
print('----------Results------------')
[print(f'Position {i+1}: {key} with a roll of {value}') for i,(key,value) in enumerate(sorted_scores.items())]
print('----------Winner-------------')
print(f'{highest_score} wins')
def roll_dice(player_name):
start_rolling = input(f'{player_name} roll dice? y/n> ')
if start_rolling == 'y' or start_rolling == 'Y':
roll = randint(1,6)
print(f'{player_name} rolls a {roll}')
return roll
return
if __name__ == '__main__':
main()