为了账号安全,请及时绑定邮箱和手机立即绑定

询问用户他/她是否想再玩一次但输入是只是再次重复这个问题而不是重新开始

询问用户他/她是否想再玩一次但输入是只是再次重复这个问题而不是重新开始

交互式爱情 2023-04-18 16:05:17
这是一个数字猜谜游戏解释首先它要求用户输入一个介于 1 到 50 之间的数字然后如果数字是正确的那么你赢了否则你必须再试一次(中奖号码是随机的)你也有有限的猜测问题在代码下面提到 这是我的代码:)import randomwinning_num = 23guesses = 1guesses_left = 9game_over = Falseend_game = Falsenumber_enter = Falsewhile not end_game:        while not number_enter:        try:            ask = int(input("ENTER A NUMBER BETWEEN 1 AND 50: "))            print(f"TOTAL GUESSES = {guesses_left}")            break        except ValueError:            print("INVALID INPUT!!")            continue    while not game_over:         if ask==winning_num:            print(f"YOU WON BY GUESSING THE NUMBER IN {guesses} TIME(S)!!")            print("DO YOU WANT TO PLAY AGAIN?")            while True:                ask1 = input("ENTER 'YES' OR 'NO' ONLY: ")                ask1 = ask1.lower()                if ask1=='yes':                    print("YOU CHOSE TO PLAY AGAIN")                    game_over = False                    break                elif ask1=="no":                    print("THANK YOU FOR PLAYING THIS GAME")                    game_over = True                    end_game = True                    break                else:                    print("PLEASE WRITE 'YES' OR 'NO' ONLY ")                    continue                    elif ask>winning_num:            print("TOO HIGH!!")            guesses+=1            guesses_left-=1            while True:                try:                    ask = int(input("TRY AGAIN: "))                    print(f"GUESSES LEFT = {guesses_left}")                    break                except ValueError:                    print("INVALID INPUT!!")                    continue            if guesses_left==1:                print("ONLY ONE GUESS LEFT!!")                continue            elif guesses_left==0:                print("YOU LOSE!!")                break    问题是游戏何时结束它询问我们是否要再次玩但是如果我们再次键入“是”它会询问相同的“你想再次玩吗”但是键入“否”可以正常运行并且程序结束
查看完整描述

3 回答

?
慕村225694

TA贡献1880条经验 获得超4个赞

你必须设置 game_over = False 以防 ask1 = yes 以便它可以从父 while 循环中出来并继续。此外,您必须重新设置猜测次数等,以便它作为新游戏开始。



查看完整回答
反对 回复 2023-04-18
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

import random

winning_num = 23

guesses = 1

guesses_left = 9

game_over = False

end_game = False

number_enter = False

while not end_game:    

    while not number_enter:

        try:

            ask = int(input("ENTER A NUMBER BETWEEN 1 AND 50: "))

            print(f"TOTAL GUESSES = {guesses_left}")

            break

        except ValueError:

            print("INVALID INPUT!!")

            continue

    while not game_over: 

        if ask==winning_num:

            print(f"YOU WON BY GUESSING THE NUMBER IN {guesses} TIME(S)!!")

            print("DO YOU WANT TO PLAY AGAIN?")

            while True:

                ask1 = input("ENTER 'YES' OR 'NO' ONLY: ")

                ask1 = ask1.lower()

                if ask1=='yes':

                    print("YOU CHOSE TO PLAY AGAIN")

                    game_over = True

                    break

                elif ask1=="no":

                    print("THANK YOU FOR PLAYING THIS GAME")

                    game_over = True

                    end_game = True

                    break

                else:

                    print("PLEASE WRITE 'YES' OR 'NO' ONLY ")

                    continue

        


        elif ask>winning_num:

            print("TOO HIGH!!")

            guesses+=1

            guesses_left-=1

            while True:

                try:

                    ask = int(input("TRY AGAIN: "))

                    print(f"GUESSES LEFT = {guesses_left}")

                    break

                except ValueError:

                    print("INVALID INPUT!!")

                    continue

            if guesses_left==1:

                print("ONLY ONE GUESS LEFT!!")

                continue

            elif guesses_left==0:

                print("YOU LOSE!!")

                break

        elif ask<winning_num:

             print("TOO LOW!!")

             guesses+=1

             guesses_left-=1

             while True:

                 try:

                     ask = int(input("TRY AGAIN: "))

                     print(f"GUESSES LEFT = {guesses_left}")

                     break

                 except ValueError:

                     print("INVALID INPUT!!")

                     continue

             if guesses_left==1:

                 print("ONLY ONE GUESS LEFT!!")

                 continue

             elif guesses_left==0:

                 print("YOU LOSE!!")

                 break


查看完整回答
反对 回复 2023-04-18
?
翻翻过去那场雪

TA贡献2065条经验 获得超13个赞

您错误地切换了 game_over,它应该设置为True,而不是False如果重播的答案是肯定的。


while not end_game:  # End game must be false to replay

    while not number_enter:

        #... ask number

    while not game_over: # But Game_over should be True to stop asking to replay

        #... Check number good

        #... Ask to replay

        while True:

            ask1 = input("ENTER 'YES' OR 'NO' ONLY: ")

            ask1 = ask1.lower()

            if ask1=='yes':

                print("YOU CHOSE TO PLAY AGAIN")

                game_over = True  # <<<< Thats the problematic part, it must be True

                                  #      in your code it is False, So it result in

                                  #      an "infinite" loop, if yes.

                break


查看完整回答
反对 回复 2023-04-18
  • 3 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信