#python #python-3.x
#python #python-3.x
Вопрос:
import random
x=random.randint(1,9)
print(x)
guess=2
print('You have {} chance to guess the number'.format(guess 1))
y=int(input('Your guess: '))
while x!=y:
print('Guess left: {}'.format(guess))
y=int(input('Your guess: '))
guess-=1
if guess==0:
print('Try again. The number was {}'.format(x))
break
print('Well done')
Здравствуйте, когда я делаю x не равным y намеренно 3 раза или делаю x не равным y намеренно 2 раза и делаю x равным y в-третьих, я получаю сообщения «Попробуйте еще раз ..» и «Хорошо сделано» одновременно. Как я могу это исправить? Пожалуйста, не используйте while true или специальные функции, спасибо.
Комментарии:
1. Что вы хотите, чтобы это делало? Когда цикл while заканчивается,
'Well Done'
всегда будет выводиться.2. Я не хочу, чтобы программа печатала хорошо выполненную, если все догадки неверны.
Ответ №1:
Попробуйте:
import random
x=random.randint(1,9)
print(x)
guess=3
print(f'You have {guess} chance to guess the number')
flag = 1
while (guess and flag):
y=int(input('Your guess: '))
guess-=1
print(f'Guess left: {guess}')
if guess==0 and (x!=y):
print(f'Try again. The number was {x}')
if (x==y):
print('Well done')
flag = 0
6
You have 3 chance to guess the number
Your guess: 1
Guess left: 2
Your guess: 2
Guess left: 1
Your guess: 3
Guess left: 0
Try again. The number was 6
6
You have 3 chance to guess the number
Your guess: 6
Guess left: 2
Well done
3
You have 3 chance to guess the number
Your guess: 1
Guess left: 2
Your guess: 2
Guess left: 1
Your guess: 3
Guess left: 0
Well done
Редактировать:
import random
x=random.randint(1,9)
print(x)
guess=2
print('You have {} chance to guess the number'.format(guess 1))
y=int(input('Your guess: '))
while x!=y:
print('Guess left: {}'.format(guess))
y=int(input('Your guess: '))
guess-=1
if guess==0 and (x!=y): # <--here
print('Try again. The number was {}'.format(x))
break
if (x==y): # <-- here
print('Well done')
Комментарии:
1. Когда вы выполняете x! = y первые два шага и x = y на третьем, вы все равно получаете два сообщения одновременно.
2. Спасибо, но есть ли какое-либо более базовое решение, потому что я предполагаю, что здесь мы используем while true.
3. @blitz: проверьте отредактированную версию. Я только что добавил несколько условий в ваш код.
4. Да, спасибо, это лучше и работает, но мы уже написали x! = y рядом с циклом while, почему мы должны повторять это снова рядом с условием if в цикле while?
5. на самом деле предположим, что это будет ваш последний шанс угадать, и вы угадаете это правильно, но это даст вам
Try again. The number was 5 Well done
выход из цикла только тогда, когда заданное вами число совпадает сx
. Поскольку вы сравниваете предыдущее введенное значение с x в цикле while. Но внутри него вы указываете текущее введенное значение.
Ответ №2:
Я думаю, я понимаю, в чем была ваша проблема. Все, что вам нужно сделать, это поместить печать (‘Молодец!’) в оператор if или использовать else.
import random
x = random.randint(1, 9)
print(x)
guess = 2
print('You have {} chance to guess the number'.format(guess 1))
y = int(input('Your guess: '))
while x != y:
print('Guess left: {}'.format(guess))
y = int(input('Your guess: '))
guess -= 1
if guess == 0:
print('Try again. The number was {}'.format(x))
break
if x==y:
print('Well done')
Комментарии:
1. Когда вы выполняете x! = y первые два шага и x = y на третьем, вы все равно получаете два сообщения одновременно.