Как создать правильный цикл while? - PullRequest
0 голосов
/ 29 мая 2019

Я пытаюсь создать простую игру по угадыванию чисел.Насколько я понимаю, я могу использовать цикл while как правильную goto функцию, если пользовательский ввод не равен числу, сгенерированному ГСЧ.Включен код, который я создал.То, что я пытаюсь сделать, это сказать программе, если x<y, print("Too low. Try again"), а затем вернуться назад, чтобы попросить пользователя ввести.Тот же принцип, если x>y.Когда число угадано правильно, оно должно отобразить сообщение, запросить ввод Y / N, затем закрыть программу или вернуться к началу.Как мне поступить так?

Я попытался включить цикл while, но столкнулся со следующей проблемой: допустим, RNG генерирует 50. Если я угадал 49, он напечатает x<y сообщение, запрашивает другой ввод, но оно будет отображать сообщение x<y, даже если в новом вводе x>y или x==y.

Кроме того, когда ответ угадан, яне уверен, как сделать так, чтобы программа перезапускалась, если они отвечают Y.

Наконец, когда игра предлагает пользователям ответить Y / N, терминал по какой-то причине будет отображать букву «Y», прежде чем пользователь получитшанс для ввода.

print()
print("Guess an integer between 1-100.")
import random
y=random.randint(1,101)
print(y)
x=int(input())
if x==y:
    print(x, "is correct! Would you like to try again? Y/N")
    if input("Y"):
        print("Too bad! This game isn't finished yet!")
        exit()
    if input("N"):
        print("Good! This game isn't finished yet!")
        exit()
else:
    if x<y:
        print("Too low. Try again.")
    if x>y:
        print("Too high. Try again.")

Ответы [ 2 ]

0 голосов
/ 29 мая 2019

Я думаю, что это шаблон, который вы ищете.

import random

EXIT = False

while True:
  if EXIT:
     break
  y=random.randint(1,101)
  print("Random ",y)
  while not EXIT:
    print("Guess an integer between 1-100.")
    x=int(input())
    if x==y:
        print(x, "is correct! Would you like to try again? (Y/N)\n")
        z = input()
        if z == 'Y':
            print("Too bad! This game isn't finished yet!\n")
            break
        if z == 'N':
            print("Good! This game isn't finished yet!\n")
            EXIT = True
            break
    else:
        if x<y:
            print("Too low. Try again.\n")
        if x>y:
            print("Too high. Try again.\n")

Вывод будет.

Random  89
Guess an integer between 1-100.
20
Too low. Try again.

Guess an integer between 1-100.
100
Too high. Try again.

Guess an integer between 1-100.
89
89 is correct! Would you like to try again? (Y/N)

Y
Too bad! This game isn't finished yet!

Random  36
Guess an integer between 1-100.
36
36 is correct! Would you like to try again? (Y/N)

N
Good! This game isn't finished yet!
0 голосов
/ 29 мая 2019

Хорошо, поэтому я не уверен, как работает ваша система операторов if и while, но я знаю, что вы неправильно используете функцию ввода.

Если вы хотите проверить, что вход равен a thing, вы должны сделать: if input('>>> ') == 'a thing'

Это выведет >>>, пользователь может ввести свой ответ, и он вернет true, если он равен a thing.

Я думаю, я знаю, что это делает, но я не уверен. В конце этого я включу то, что сделал бы, чтобы сделать это.

if x==y:
    print(x, "is correct! Would you like to try again? Y/N")
    if input("Y"):
        print("Too bad! This game isn't finished yet!")
        exit()
    if input("N"):
        print("Good! This game isn't finished yet!")
        exit()
while True:
    if x<y:
        print("Too low. Try again.")
        int(input())
    if x>y:
        print("Too high. Try again.")
        int(input())

Я думаю, что вы пытаетесь проверить, может ли пользователь угадать это за один раз, а затем сказать им, является ли его догадка слишком высокой или слишком низкой при любых следующих догадках. Я бы сделал это так:

import random

print('guess a number game (1-100 range)')

y = random.randint(1, 101)

x = int(input('>>> '))

if x == y:
    print('yay, you got it first try')
    exit()
else:
    print('nope')
    while x != y:
        x = int(input('>>> '))
        if x < y:
            print('Too low!')
        elif x > y:
            print('Too high!')
        elif x == y:
            print('E P I C')
            exit()

Вот пример вывода:

guess a number game (1-100 range)
>>> 48
nope
>>> 50
Too high!
>>> 25
Too low!
>>> 35
Too low!
>>> 45
Too high!
>>> 40
Too low!
>>> 44
E P I C

Я давно не был здесь (хаха), так что это может быть не лучшим ответом. Надеюсь, это поможет, хотя!

...