Игра «Угадай число» в python 3

#python #python-3.x #loops #input #while-loop

#python #python-3.x #петли #ввод #цикл while

Вопрос:

итак, я создаю программу, в которой у пользователя есть 20 догадок, чтобы угадать случайное целое число 1-1000. есть 2 разных места, где я зависаю. 1- мне трудно получить их ввод y / n как часть цикла while, я хочу, чтобы он заканчивался, когда они говорят N / n, и я хочу, чтобы цикл начинался, когда они говорят Y / y. 2- в моей функции печати, которая гласит: «пожалуйста, введите guess #»,Я пытался выяснить, как заставить его печатать фактическое число предположений, которое они видят, поскольку они получают только 20 предположений, но у меня возникают синтаксические ошибки

Это игра в угадай число

  import random
 guess = 0
 number = random.randint(1,1000)
 print(' Do you wish to play 20 guesses? (Y/N) ')
 y_n = input ()
 if y_n == 'y''Y':
 

продолжить

 elif a=='n''N':
break

while guess < 20:
print('please enter guess ',', guessestaken )
guess=input()
guess=int(guess)

guessestatken = guess   1

if guess < number:
 print('Your guess is too low')

if guess > number:
 print('Your guess is too high')

if guess==number:
 break

if guess == number:
guess = str(guessestaken)
print('CONGRATGULATIONS! You WIN ! ! !')


if guess !=number:
number=str(number)
print('Nope, the number i was thinking of was ', number, '. You Lose')
 

Ответ №1:

Таким образом, код может быть очищен до следующей рабочей версии.

 import random

while True:
    # Output loop checks if we want to continue to play
    y_n = input ('Do you wish to play 20 guesses? (Y/N)')
    if y_n != 'y' and y_n != 'Y':
        print('Okay, ending guessing game')
        break
        
    number = random.randint(1,1000)
 
    # for Loop to allow up to 20 guesses
    for guesses_taken in range(20):
        # Input allows an argument to show user prompt (no need for print prior to input)
        guess =input(f'Please enter guess (guesses so far {guesses_taken})')
        guess = int(guess)

        if guess < number:
            print('Your guess is too low')
        elif guess > number:
            print('Your guess is too high')
        else:
            print('CONGRATGULATIONS! You WIN ! ! !')
            break
    else:
        print('Sorry, out of guesses')
 

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

1. это идеально, должен ли я сделать диапазон 1,20, так как количество догадок на самом деле не может быть 0

Ответ №2:

Вы используете некоторые избыточные проверки. Во-первых, continue/break операторы предназначены для использования внутри циклов, чтобы выйти из них или перейти к следующей итерации, поэтому их использование внутри if / else не принесет пользы. Во-вторых, вы никогда не увеличиваете свою guess переменную, чтобы она никогда не выходила из цикла. Вам нужно увеличивать его на каждой итерации. Окончательный код, который я придумал, это:

 import random
guess = 0
number = random.randint(1,1000)

print('Do you wish to play 20 guesses? (Y/N) ')
y_n = input ()
if y_n == 'y' or y_n == 'Y': # You need to use or to check for 2 different conditions
    while guess < 20:
        print('please enter guess ')
        guessestatken = int(input())

        if guessestatken < number:
            print('Your guess is too low')
        elif guessestatken > number:
            print('Your guess is too high')
        else:
            print('CONGRATGULATIONS! You WIN ! ! !')
            break

        guess  = 1


# guess being 20 means user never found correct number
if guess == 20:
    print('Nope, the number i was thinking of was ', str(number), '. You Lose')