【发布时间】:2019-09-04 18:41:05
【问题描述】:
目前正在处理我的任务的一个问题,我面临一些挫折。该问题旨在模拟玩家之间的骰子游戏。已经解决了大部分问题,但遇到了一个我一开始没有模拟的意外问题。
玩家的名字存储在字典中,所以键是每个玩家的名字。必须至少有 3 名玩家,最多 5 名玩家。 首先获取 3 到 5 名玩家的姓名。玩家的名字必须是唯一的。如果用户在记录 3 个玩家之前击中,则会显示错误消息。如果有重复的名字,将显示错误消息如果用户在玩家人数为 3 或 4 时点击,游戏将开始。如果玩家人数为 5 人,游戏将自动开始,无需进一步提示输入玩家姓名。
一直在使用 While 循环,因为必须连续显示错误消息,直到输入正确的玩家人数达到最低要求。
players = {}
while True:
name = input("Enter player's name, <Enter> to end: ")
x = len(players.keys()) #count number of players
if name in players.keys(): #error for when names exits
print("Name already exists, try again.")
if x < 3 and name == "": #for when user keys <Enter> when number players less than 3
print(f"Minimum 3 players please, currently only {x} players!")
continue
elif x == 5: #when number players is 5
break
elif x >= 3 and x < 5 and name == "": #when number players is 3 or 4 and user hits <Enter>
break
else:
players[name] = [[],2] #first list dice value, second is points
print(f"{x} players playing.")
return players
字典的记录工作正常,最多只能捕获 5 个名字。问题是在我成功输入第五个名字后,While 循环将再次运行,提示另一个输入,然后才满足 5 个玩家的中断条件。
【问题讨论】:
标签: python-3.x