在用户输入“是”后,我无法让骰子游戏再次运行

2024-09-27 21:23:01 发布

您现在位置:Python中文网/ 问答频道 /正文

dicegame=input("wanna play dice? yes/no : ")
userdice1=random.randint(1,6)
userdice2=random.randint(1,6)
pythondice1=random.randint(1,6)
pythondice2=random.randint(1,6)
print("you got", userdice1,"and", userdice2)
print("and i got",pythondice1,"and",pythondice2)
if userdice1+userdice2==pythondice1+pythondice2:
    print("its a tie!")
if userdice1+userdice2<pythondice1+pythondice2:
    print("i won!")
if userdice1+userdice2>pythondice1+pythondice2:
    print("you won!, great job")
dice=input("wanna play again? : ")
if input=="yes":
    print(dicegame)
if input=="no":
    print("cya later.")

#如果您输入yes,则应该重复骰子游戏,但在我输入yes后,它只会显示进程已完成,退出代码为0


Tags: andinputplayifrandomdiceyesprint
3条回答
  1. 如果你想重复这个游戏,你必须把代码放在一个循环中
  2. 当您询问用户是否希望再次播放时,您将答案存储在变量dice中。但是,之后您尝试通过input访问它。我假设您打算使用dice,但以防万一:不要使用input作为变量名,这是一种糟糕的做法

请尝试以下操作:

    import random
    
    dicegame=input("wanna play dice? yes/no : ")
    while dicegame=='yes':
        userdice1=random.randint(1,6)
        userdice2=random.randint(1,6)
        pythondice1=random.randint(1,6)
        pythondice2=random.randint(1,6)
        print("you got", userdice1,"and", userdice2)
        print("and i got",pythondice1,"and",pythondice2)
        if userdice1+userdice2==pythondice1+pythondice2:
            print("its a tie!")
        if userdice1+userdice2<pythondice1+pythondice2:
            print("i won!")
        if userdice1+userdice2>pythondice1+pythondice2:
            print("you won!, great job")
        dicegame=input("wanna play again? yes/no: ")

变化:

  • 把整件事放在一个圈里
  • 将变量dice从最后五行重命名为“dicegame”
  • input(用作变量名)也更改为dicegame

你发布的代码中有一些问题;我会给你提一些建议

首先,当用户输入他们是否想再次播放的答案时,代码不会检测到这一点,因为您使用了不同的变量名而不是dice

接下来,您的行dicegame=input("wanna play dice? yes/no : ")实际上没有做任何事情,因为您设置的变量不再使用

最后,你应该把你的游戏代码组织成一个函数,然后把它全部放进一个while循环,如果用户一直输入“yes”,这个循环可以反复运行。一个main函数也可以用来很好地组织这个过程,您应该始终使用其中的一个

游戏的一个有效示例可以是:

import random

def dice_game():
    userdice1 = random.randint(1,6)
    userdice2 = random.randint(1,6)
    pythondice1 = random.randint(1,6)
    pythondice2 = random.randint(1,6)
    print("you got", userdice1, "and", userdice2)
    print("and i got",pythondice1,"and",pythondice2)
    if userdice1 + userdice2 == pythondice1 + pythondice2:
        print("its a tie!")
    elif userdice1 + userdice2 < pythondice1 + pythondice2:
        print("i won!")
    elif userdice1 + userdice2 > pythondice1 + pythondice2:
        print("you won!, great job")

def main():
    # set boolean value for whether to run the game or not
    run_game = True
    while run_game:
        # run the dice game
        dice_game()
        # ask the user if they want to play again
        dice = input("wanna play again? : ")
        if dice == "yes":
            # run the game again
            run_game = True
        elif dice == "no":
            # don't run the the game again
            run_game = False
            print("cya later.")

main()

虽然从原始代码的角度来看,其他答案都是多余的,但我感觉您只是从Python开始。因此,我会尽量让这一切变得平易近人。首先,我认为你可能会被函数的实际含义绊倒

input是一个函数,而不是一个值。(如果你曾经学过数学,就把它想象成f(x)sin(x)/cos(x)/tan(x))。所有函数都允许您传入一个数字,然后再从中获取一个不同的数字。虽然稍微复杂一点,input也不例外

虽然这段视频看起来相当丢脸,但它的意思是:https://www.youtube.com/watch?v=ZEsCla92mek

把功能想象成一台机器(把原材料放进去,机器改变它,然后吐出有用的东西),语句if input=="yes"是问计算机机器是否等于"yes",而不是机器的输出是否等于"yes"

在解决代码中的错误方面,您可能希望了解while循环。这个关键字告诉计算机继续执行相同的操作,直到满足某个功能。例如(使用您自己的一些变量),while (userdice1 != 1): userdice1 = random.randint(1,6)在满足条件之前不会停止生成新数字,即直到userdice1 == 1

此外,您应该在线搜索break关键字,这样您就可以避免循环;那里有很多资源

如果你能处理好这三点,你将很容易解决这个问题😁

相关问题 更多 >

    热门问题