簡體   English   中英

簡單的Python臨時腳本

[英]Simple Python Temp Script

我編寫了一個非常簡單的臨時腳本,該腳本將提示用戶輸入並吐出答案。 如您在下面看到的,我提示用戶輸入1,2或3。1表示Fah到cel,2表示cel到feh,3表示退出程序。 如果用戶輸入1或2,則另一個提示將要求他們輸入要轉換的程度。 此項保存在變量中:

scale

我編寫的函數應該將浮點數計算為正確的轉換,並在打印正確的溫度后循環回到主菜單。 在try / except語句中有一些邏輯,它將嘗試將此輸入轉換為浮點數,如果不能,則將輸出討厭的語法。 當我運行這段代碼時,一切似乎都可以正常工作,直到進入函數調用fahtoCel為止:

fc = fahtoCel(scale)

我很確定自己所有縮進都正確,並且已經研究了聲明函數並在腳本中調用它們。 我唯一的懷疑是我的函數調用在我的try / except語句中,並且范圍可能不正確嗎? 我的代碼:

def fahtoCel(number):
    return(number - 32.0) * (5.0/9.0)

while True:
    x = raw_input("""Please enter 1,2 or 3: """)
    if x == "3":
        exit(0)
    if x == "1":
        scale = raw_input("""Enter degrees in Fah: """)
        try:
            scale = float(scale)
            fc = fahtoCel(scale)
        except:
            print("Invalid Entry")
        continue
    print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))
    if x == "2":
    #Do the same for cel to fah#

continue將執行轉移到while循環的開始,因此,無論try語句的結果如何,您都永遠不會到達print語句。 您需要進一步縮進:

try:
    scale = float(scale)
    fc = fahtoCel(scale)
except Exception:  # Don't use bare except! You don't want to catch KeyboardInterrupt, for example
    print("Invalid entry")
    continue
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))

但是,實際上,您的try語句太寬泛了。 您應該擔心的唯一例外是float可能引發的ValueError

try:
    scale = float(scale)
except ValueError:
    print("Invalid entry")
    continue
fc = fahtoCel(scale)
print("%.2f degrees fah equals %.2f degrees Cel" % (scale, fc))

暫無
暫無

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

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