Python 在我的石头剪刀布游戏中,循环不';在pass语句之后不能正确工作

Python 在我的石头剪刀布游戏中,循环不';在pass语句之后不能正确工作,python,python-3.x,Python,Python 3.x,所以我遇到的麻烦是。游戏运行良好,一旦计算机或用户达到3胜,我们将收到一条赢或输的消息。在那之后,你被要求再次比赛。如果你点击“否”,代码结束。如果您点击yes,游戏将正确重启,但在您第一次选择时,它会将您带回赢或输屏幕。似乎win计数器没有重置,或者我有不正确的缩进 感谢您的帮助 PS:我知道可能还有一种更简单的方法来制作游戏,而不是使用所有那些elif语句。也许是上课什么的?我是新来的,所以这对我来说是最简单的。你发现了问题!你必须重置游戏结束计数。为此,只需将endgame变量放入whil

所以我遇到的麻烦是。游戏运行良好,一旦计算机或用户达到3胜,我们将收到一条赢或输的消息。在那之后,你被要求再次比赛。如果你点击“否”,代码结束。如果您点击yes,游戏将正确重启,但在您第一次选择时,它会将您带回赢或输屏幕。似乎win计数器没有重置,或者我有不正确的缩进

感谢您的帮助


PS:我知道可能还有一种更简单的方法来制作游戏,而不是使用所有那些elif语句。也许是上课什么的?我是新来的,所以这对我来说是最简单的。

你发现了问题!你必须重置游戏结束计数。为此,只需将
endgame
变量放入
while True
循环(在开始处)


这应该行。

您发现了问题!你必须重置游戏结束计数。为此,只需将
endgame
变量放入
while True
循环(在开始处)


这应该行得通。

一些旁注建议:

  • 要检查变量是否为字符串选择之一,可以通过执行以下操作使其更加紧凑:

    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"]:

一些旁注建议:

  • 要检查变量是否为字符串选择之一,可以通过执行以下操作使其更加紧凑:

    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]

请注意,这实际上并没有改变任何事情。。。试着运行代码注释,这实际上不会改变任何东西。。。尝试运行代码