Python while 循环 - 希望通过 Y/N 选项重复或退出游戏

-3 投票
1 回答
3866 浏览
提问于 2025-04-18 16:11

我做了一个简单的战舰游戏。在游戏结束时,无论是赢了还是输了,我希望用户可以选择再玩一次或者退出。这个代码的目的是获取用户的输入,确保输入是“y”或者“n”,然后如果输入是“n”,就把一个控制初始循环的变量设置为假。但是奇怪的是,当循环再次运行时,不管我怎么做,输入总是被重置为“y”。我用打印语句检查过,确实能正确设置为“n”,但在循环结束后立即打印这个值时,它却变成了“y”。这个循环不管输入是什么都继续运行。我该怎么做才能让“n”正确地退出循环呢?

restart = "y"
while restart[0] not in ("n", "N"):
    def play_again():
       print ("")
       restart = input("Enter y to play again or n to quit: ")
       print ("")
       try: 
            x = str(restart)
       except ValueError:
            print ("Please enter y or n.")
            print ("")
            play_again()
       else:
            if str(restart) != "y" and str(restart) != "n":
                print ("Please enter y or n.")
                print ("")
                play_again()
    *game*
    play_again()

1 个回答

-1

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如说,可能会出现错误信息,或者程序运行得不如预期。这时候,我们就需要去查找解决办法,通常可以在网上找到很多相关的讨论和建议。

StackOverflow是一个非常有用的网站,很多程序员会在这里提问和回答问题。你可以在这里找到别人遇到的类似问题,以及他们是如何解决的。这对于刚开始学习编程的人来说,特别有帮助,因为你可以看到实际的例子和解决方案。

总之,遇到问题时,不要着急,先去查查网上的资源,看看有没有人遇到过类似的情况,或者有没有好的解决方法。

def restart_game():
    try:
        restart = input("Enter y to play again or n to quit: ")
        if restart == "y":
            return True
        if restart == "n":
            return False
        raise ValueError
    except ValueError:
        print ("Please enter y or n.")
        return True


while True:
    print 'Playing the game ...'
    if not restart_game(): break

撰写回答