#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')