Как исправить угадайку - PullRequest
       2

Как исправить угадайку

0 голосов
/ 22 сентября 2019

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

Вот то, что у меня есть до сих пор

import random   

def play_game():
    number = random.randint(1, 100)
    print("Guess a number between 1 and 100 inclusive.")
    count = 1
    while True:
        guess = int(input("Your guess: "))

    if guess > 0 and guess <= 100:
        #the age is valid
        return play_game
    else:
        print("Invalid number.")
        return play_game()

        if guess < number:
            print("Too low.")
        elif guess > number:
            print("Too high.")
        elif guess == number:
            print("You won! You guessed it in " + str(count) + " tries.\n")
            return
        count+=1
play_game()

Проблема, с которой я сейчас сталкиваюсь, заключается в том, что когда он проверяет, было ли их предположение между 1-100, вместо того, чтобы переходить к погоде или их число было слишком низким или слишком низким, оно остается и зацикливается.

Если бы кто-нибудь мог помочь мне с этой проблемой и просмотреть код в целом, я был бы признателен.

Ответы [ 3 ]

0 голосов
/ 22 сентября 2019

Вы можете изменить свой код:
1. если нет.в пределах диапазона, запускать вашу высокая, низкая, матч проверка
2. перерыва, если догадка не совпадает с

1004 *
0 голосов
/ 22 сентября 2019

Проблема, с которой вы столкнулись из-за неправильного отступа.Операторы if-else, которые проверяют, находится ли число в допустимом диапазоне, находятся на том же уровне отступа, что и цикл while, и, следовательно, не выполняются внутри него.Простой отступ должен решить проблему.Кроме того, вы вызывали play_game без скобок, что делает его неправильным синтаксисом для вызова функции.Однако вместо того, чтобы проверять, является ли число больше 0 и меньше 100, было бы более оптимальным проверить, меньше ли число 0 или больше 100, и если это так, вывести неверный номер и вызвать play_game ().Это будет выглядеть примерно так:

while True:
    if guess < 0  and guess > 100:
        print ("Invalid number.")
        return play_game()

Остальная часть вашего кода выглядит хорошо.Я также прикрепил ссылку на раздел отступов документации Python здесь.

0 голосов
/ 22 сентября 2019

Я думаю, что проблема с некоторыми отступами и некоторыми логическими проблемами в потоке.Когда вы вызываете play_game () изнутри игры, она запускает совершенно другую игру с другим random_number.

Хороший код, который удовлетворяет вашему условию, может выглядеть следующим образом

import random   

def play_game():
    number = random.randint(1, 100)
    print("Guess a number between 1 and 100 inclusive.")
    count = 1
    while True:
        guess = int(input("Your guess: "))
        if guess > 0 and guess <= 100:
            if guess < number:
                print("Too low.")
            elif guess > number:
                print("Too high.")
            elif guess == number:
                print("You won! You guessed it in " + str(count) + " tries.\n")
                return
            count+=1
        else:
            print("Invalid number.")

play_game()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...