Python 在我的石头剪刀布游戏中,循环不';在pass语句之后不能正确工作
所以我遇到的麻烦是。游戏运行良好,一旦计算机或用户达到3胜,我们将收到一条赢或输的消息。在那之后,你被要求再次比赛。如果你点击“否”,代码结束。如果您点击yes,游戏将正确重启,但在您第一次选择时,它会将您带回赢或输屏幕。似乎win计数器没有重置,或者我有不正确的缩进 感谢您的帮助Python 在我的石头剪刀布游戏中,循环不';在pass语句之后不能正确工作,python,python-3.x,Python,Python 3.x,所以我遇到的麻烦是。游戏运行良好,一旦计算机或用户达到3胜,我们将收到一条赢或输的消息。在那之后,你被要求再次比赛。如果你点击“否”,代码结束。如果您点击yes,游戏将正确重启,但在您第一次选择时,它会将您带回赢或输屏幕。似乎win计数器没有重置,或者我有不正确的缩进 感谢您的帮助 PS:我知道可能还有一种更简单的方法来制作游戏,而不是使用所有那些elif语句。也许是上课什么的?我是新来的,所以这对我来说是最简单的。你发现了问题!你必须重置游戏结束计数。为此,只需将endgame变量放入whil
PS:我知道可能还有一种更简单的方法来制作游戏,而不是使用所有那些elif语句。也许是上课什么的?我是新来的,所以这对我来说是最简单的。你发现了问题!你必须重置游戏结束计数。为此,只需将
endgame
变量放入while True
循环(在开始处)
这应该行。您发现了问题!你必须重置游戏结束计数。为此,只需将
endgame
变量放入while True
循环(在开始处)
这应该行得通。一些旁注建议:
- 要检查变量是否为字符串选择之一,可以通过执行以下操作使其更加紧凑:
while True: endgame = 0
- 无需将int转换为int:)
int(1)==1
用作旗帜-游戏是否结束。因此,使用布尔值-endgame
/True
-比使用int更有意义False
现在您的主要问题是,您的代码根据
player\u wins
和comp\u wins
设置endgame
变量。当你开始一个新游戏时,那些人会保持他们原来的价值观,所以在一轮游戏结束后,游戏马上就结束了。只需在代码的最后部分重置所有关键变量:
endgame=False
...
如果玩家赢>=3:
终局
...
如果comp_赢>=3:
终局
...
如果游戏结束:
用户_pick=input(“您想再次播放吗(y/n)”)
如果用户在[“y”,“yes”]中选择.lower():
终局=错误
玩家赢=0
comp_wins=0
其他:
打破
奖金旁注建议: 通常,可以减少重复的
if
/elif
/else
树结构。在其他语言中,您有switch
语句,这使得代码看起来与if/else
不同。
在Python中,通常可以将大多数if
树转换为字典中的选择。因此,您的comp_选项可以更改为:
if user_pick.lower() in ["rock", "r"]:
一些旁注建议:
- 要检查变量是否为字符串选择之一,可以通过执行以下操作使其更加紧凑:
while True:
endgame = 0
- 无需将int转换为int:)
int(1)==1
endgame
用作旗帜-游戏是否结束。因此,使用布尔值-True
/False
-比使用int更有意义
现在您的主要问题是,您的代码根据player\u wins
和comp\u wins
设置endgame
变量。当你开始一个新游戏时,那些人会保持他们原来的价值观,所以在一轮游戏结束后,游戏马上就结束了。只需在代码的最后部分重置所有关键变量:
endgame=False
...
如果玩家赢>=3:
终局
...
如果comp_赢>=3:
终局
...
如果游戏结束:
用户_pick=input(“您想再次播放吗(y/n)”)
如果用户在[“y”,“yes”]中选择.lower():
终局=错误
玩家赢=0
comp_wins=0
其他:
打破
奖金旁注建议:
通常,可以减少重复的if
/elif
/else
树结构。在其他语言中,您有switch
语句,这使得代码看起来与if/else
不同。
在Python中,通常可以将大多数if
树转换为字典中的选择。因此,您的comp_选项可以更改为:
if user_pick.lower() in ["rock", "r"]:
我认为,当用户选择重新启动游戏时,您必须添加一些额外的语句来重置游戏中的统计信息。比如:
def comp_option():
comp_pick = randint(1,5)
options = {1: 'r', 2: 'p', 3: 'sc', 4: 'l', 5: 'sp'}
return options[comp_pick]
我认为,当用户选择重新启动游戏时,您必须添加一些额外的语句来重置游戏中的统计信息。比如:
def comp_option():
comp_pick = randint(1,5)
options = {1: 'r', 2: 'p', 3: 'sc', 4: 'l', 5: 'sp'}
return options[comp_pick]
请注意,这实际上并没有改变任何事情。。。试着运行代码注释,这实际上不会改变任何东西。。。尝试运行代码