Почему мой while l oop заканчивается до того, как будет напечатано последнее сообщение? Это мой код или ...? - PullRequest
0 голосов
/ 30 апреля 2020

Я сделал игру в угадайку, в которой у игрока 10 HP, и он должен случайным образом угадать число от 1 до 3 для нескольких раундов, пока они не угадали в общей сложности 3 раза.

Я скопировал свой код в файл блокнота и сохранить его как 123game.py, затем щелкнуть правой кнопкой мыши и запустить его с помощью Python 3.8. Когда я это сделал, произошла странная вещь.

Я хотел получить выигрышное сообщение: «Все кончено! Спасибо за игру». Но когда игрок угадывает в третий раз, Python просто выключается.

Однако у меня не было проблемы, когда я просто копировал / вставлял свой код в Python. Это мой код не так? Или мне не следует сохранять файл блокнота как .py и указывать windows открыть его по умолчанию с Python 3.8? У меня не было проблемы с Pycharm.

import random
HP = 10
finish = 3
correct = [0]

while finish >= 0:
    value = random.randint(1, 3)
    correct.append(value)
    print("\nTry guessing a number 1, 2, or 3:")
    answer = int(input())
    if finish == 0:
        print("It's over! Thank you for playing.")
        break
    if HP == 0:
        print("You lose! Sorry.")
        break
    if answer > 3 or answer < 1:
        print("Out of bounds")
        continue
    if answer == value:
        print("correct")
        print(f"The answer was {correct[-1]}.")
        print(f"HP left: {HP}")
        finish -= 1
        print(f"correct answers until finish: {finish}")
    else:
        print("incorrect")
        print(f"The answer was {correct[-1]}.")
        HP -= 1
        print(f"HP left: {HP}")
        print(f"correct answers until finish: {finish}")
        continue

1 Ответ

1 голос
/ 01 мая 2020

Добавьте input() в конце скрипта. Он ожидает ввода любого типа от пользователя, но не запрашивает его, например input(”Enter something: ”). Затем программа завершается (так же, как раньше, потому что выполнять нечего) после нажатия Return / Enter (поэтому просто нажмите Enter, чтобы выйти из программы). это наивно, лучше учти комментарии.

input() # or input(”Press Enter to exit”)`
...