Я пытаюсь создать простую игру по угадыванию чисел. Насколько я понимаю, я могу использовать цикл while как правильную функцию goto, если пользовательский ввод не равен числу, сгенерированному ГСЧ. Включен код, который я создал. То, что я пытаюсь сделать, это сказать программе If 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.")
0
Pallu08 29 Май 2019 в 06:37

2 ответа

Лучший ответ

Итак, я не уверен, как работает ваша система операторов 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

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

0
Jack H. 29 Май 2019 в 04:57

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

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
Ajmal JK 29 Май 2019 в 04:59