簡體   English   中英

如何在Python中運行整個程序后重復程序?

[英]How to repeat program after running the whole program in Python?

我寫了一個簡短的程序,比較兩個整數並在最后提供一個合適的答案。 我希望程序重復自己,以防整數沒有寫在'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()

在這兩種情況下,程序都會要求用戶輸入值。 然而,盡管它運行了程序的重啟部分,但沒有傳導實際比較值。

有人可以指導我如何修復程序並允許它比較值,如果用戶輸入不是整數打印(“你還沒有輸入整數!”),請問“你想重新開始嗎?”,然后運行程序又來了?

您可以使用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()

問題出在你的try / except塊中。 如果任何這些行失敗,try塊將不會運行該塊中包含的任何代碼行。 在您的情況下,由於您的userint變量是字符串而rn是int,因此您有一個失敗的行。 在您的示例的上下文中,可以修復此問題,只需將以下行添加到try塊的頂部:

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

如果無法將userint轉換為字符串,則try塊將失敗,您將打印錯誤消息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM