Как повторить программу после запуска всей программы на Python? - PullRequest
0 голосов
/ 01 мая 2019

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

Основная программа:

from random import randint
rn = randint(0,5)
print("The randomly generated integer is:",rn)
userint= input("Enter an integer:")

try:
    if userint == rn:
        print("Numbers are equal!")
    elif userint > rn:
        print(userint)
    else:
        print(rn)
except:
    print("You have not entered an integer!")

if input("Do you want to repeat(y/n)").lower()== "  N":
    break

Вот что я пробовал использовать:

while True:
    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")

    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    if input("Do you want to repeat(y/n)").lower()== "  N":
        break

Я также пробовал другой способ повторения программы:

def main():

    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")

    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    restart = input("Do you want to start again?").lower()
    if restart == "yes":
        main()
    else:
        exit()
main()

В обоих случаях программа просит пользователя ввести значение.Чем, несмотря на значение, он запускает часть программы перезапуска без проведения фактического сравнения значений.

Может кто-нибудь подсказать мне, как исправить программу и позволить ей сравнивать значения, и если пользовательский ввод не является целым числомнапечатайте («Вы не ввели целое число!»), спросите «Хотите начать снова?» и снова запустите программу?

Ответы [ 2 ]

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

Проблема в вашем блоке try / кроме. Блок try не будет запускать какие-либо строки кода, заключенные в этом блоке, если какая-либо из этих строк потерпит неудачу. В вашем случае у вас есть строка с ошибкой из-за того, что ваша переменная userint является строкой, а rn является целым числом. В контексте вашего примера это можно исправить, просто добавив следующую строку в начало блока try:

try:
    userint = int( userint )
    ...
except:
    ...

Если невозможно преобразовать userint в строку, блок try потерпит неудачу, и вместо этого вы напечатаете сообщение об ошибке.

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

Вы можете использовать isnumeric, чтобы проверить, является ли ввод целочисленным или нет.

def main():

    from random import randint
    rn = randint(0,5)
    print("The randomly generated integer is:",rn)
    userint= input("Enter an integer:")
    if userint.isnumeric():
        userint=int(userint)
    try:
        if userint == rn:
            print("Numbers are equal!")
        elif userint > rn:
            print(userint)
        else:
            print(rn)
    except:
        print("You have not entered an integer!")

    restart = input("Do you want to start again?").lower()
    if restart == "yes":
        main()
    else:
        exit()
main()
...