Программа Guess the number на Python — после ввода, сколько раз я хочу сыграть, игра не работает

#python

#python

Вопрос:

Я работаю над программой «Угадай число» на Python. Мне пришлось внести в нее некоторые улучшения и добавить:

Пользователь имеет ограничение по умолчанию в 15 догадок (при нажатии клавиши ввода) Попросите ограничить количество гостей — эта часть не работает в моем коде.

 import random

def main(): 
print('n'*40) 
print('Welcome to the Guess number game!') 
print('n'*1) 
player_name = input("What is your name? ") print('n'*1)

try_again = 'y'
number_of_guesses = 0
error = 0
guess_limit = 15

while ((try_again == 'y') or (try_again == 'Y')):
    try:
        limit = input('You have 15 default guesses to start. Do you like to have different number of guesses? ')
        if limit.upper() == 'Y':
            limit = input('How many times would you like to play? ') # after I input number of guesses I cannot proceed to the actual game
        else:
            number = random.randint(1, 100)
            while (guess_limit != 0):
                guess = int(input("Enter an integer from 1 to 100: "))
                if (guess < 1) or (guess > 100):
                    print("ERROR! Integer must be in the range 1-100! ")
                else:
                    if guess < number:
                        print ("Guess is low!")
                    elif guess > number:
                        print ("Guess is high!")
                    else:
                        print('n'*1)
                        print ("YOU WIN! You made "   str(number_of_guesses)   " guesses.")
                        break
                    number_of_guesses  = 1
                    guess_limit -= 1
                    print(guess_limit, 'guesses left')
                    print()
            else:
                #if guess_limit == 0:
                print ("YOU LOSE! You made "   str(number_of_guesses)   " guesses.")
    except ValueError:
        print('ERROR: Non-numeric data. Please enter valid number!')
        print('n'*1)
    try_again = input("Play again? Enter 'Y' or 'y' for yes: ")
    print('n'*1)
main()

OUTPUT: Welcome to the Guess number game!

What is your name? d

You have 15 default guesses to start. 
Do you like to have different number of guesses? y 
How many times would you like to play? 3 # after this I have 
Play again? Enter 'Y' or 'y' for yes: # this result
 

Как я могу изменить этот код?

Комментарии:

1. Ваш цикл while в строке 10 имеет отступ (то есть внутри блока Else), поэтому срабатывает только в том случае, если вы не вводите разное количество раз для воспроизведения. Просто уменьшите отступ всего цикла while.

Ответ №1:

вы должны использовать

 guess_limit = input("How many times would you like to play? ")
 

и затем вы должны проверить, является ли оно пустым или нет, с помощью простых условий if

 if guess_limit == "":
    guess_limit = 15
 

Ниже приведен полный код с хорошими комментариями.

 # import only system from os
from os import system

import random


def main():
    # For clearing the screen
    system('cls')
    # For adding blank line
    blank_line = 'n'*1

    print('Welcome to the Guess number game!')
    print(blank_line)
    player_name = input("What is your name? ")
    print(blank_line)

    # to start the loop initially try_again = 'y'
    try_again = 'y'
    # Count number of guesses by player
    number_of_guesses = 0

    while (try_again.lower() == 'y'):
        # Get number of times player want to guess
        guess_limit = input("How many times would you like to play? ")
        # If player enter nothing and hit enter
        # then default value of guess_limit is 15
        if guess_limit == "":
            guess_limit = 15
        # Convert the guess_limit to int data type
        guess_limit = int(guess_limit)
        # If user inputted number then go inside this try block
        # else go inside except block
        try:
            # Generate random number in betwee 1-99 to be guess by the player
            number = random.randint(1, 99)
            # Loop untill there is no guesses left
            while (guess_limit != 0):
                # Player guess
                guess = int(input("Enter an integer from 1 to 99: "))
                # Check for valid number i.e number should be betwee 1 - 99
                while ((guess < 1) or (guess > 99)):
                    guess = int(
                        input("ERROR! Please enter an integer in the range from 1 to 99: "))

                # Check for High and low guess
                if guess < number:
                    print("Guess is low")
                elif guess > number:
                    print("Guess is high")
                # If it is neither high nor low
                else:
                    print(blank_line)
                    print("YOU WIN! You made "  
                        str(number_of_guesses)   " guesses.")
                    # To get out of the loop
                    break
                # decrement the guess_limit by 1 on every iteration
                guess_limit -= 1
                print(guess_limit, 'guesses left')
                # Increment number of guesses by the player
                number_of_guesses  = 1
                print()
                # If guess_limit is equal to 0, it means player have not guessed the number
                # And player lose
                if guess_limit == 0:
                    print("YOU LOSE! You made "  
                        str(number_of_guesses)   " guesses.")
        except ValueError:
            print('ERROR: Non-numeric data. Please enter valid number!')
            print(blank_line)
        # Ask again to play again
        # If player enter anything other than 'Y' or 'y' then exit the game
        try_again = input("Play again? Enter 'Y' or 'y' for yes: ")
        print(blank_line)


main()