询问用户是否想再次播放,但键入“是”只会再次重复此问题,而不是重新开始

2024-04-26 03:55:13 发布

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

这是一个猜数字的游戏

解释

首先,它要求用户输入一个介于1到50之间的数字 如果数字正确,则您获胜,否则您必须再试一次(中奖数字是随机的,当然了)您的猜测也有限

代码下面提到了问题 这是我的代码:)

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 = 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
        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
                

The problem is when the game ends It asks whether we want to play again But if we type "Yes" it again asks the same "Do you want to play again" However typing "No" works fine and the program ends


2条回答

在ask1=yes的情况下,您必须将game_over=False设置为,这样它就可以在循环时从父循环中出来并继续。此外,你还必须重新设置猜测次数等,以便它作为一个新游戏开始

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

相关问题 更多 >