亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

傳入字符串時出現 UnboundLocalError

傳入字符串時出現 UnboundLocalError

互換的青春 2022-04-23 16:36:40
我是 python 新手,我想練習一下,try/except但我卡住了:def monitor():    try:        brightness = int(input("brightness:"))    except ValueError:        print("please pass in a number")    if brightness < -1 or brightness > 101:        print("invaild",brightness)    else:        print("invalid",brightness)while True:    monitor()我希望輸入字符串時不會出現錯誤,但它給了我:UnboundLocalError
查看完整描述

3 回答

?
眼眸繁星

TA貢獻1873條經驗 獲得超9個贊

檢查此代碼片段


try:

    brightness = int(input("brightness:"))

except ValueError:

    print("please pass in a number")


print(brightness)

print(brightness)如果在被要求輸入時輸入“有點暗” ,應該輸出什么?


因為輸入不是整數,int()這種情況下會拋出異常,所以局部變量brightness不會被初始化。


您可以在except子句中將其初始化為某個默認值,但在這種情況下,如果輸入不正確,您可能不應該對 brightess 值做任何事情。


你可以在 try...except 中移動邏輯處理brightness,那么它只有在輸入可以被解析的情況下才會執行。


def monitor():

    try:

        brightness = int(input("brightness:"))


        if brightness < -1 or brightness > 101:

            print("invaild",brightness)

        else:

            print("invalid",brightness)


    except ValueError:

        print("please pass in a number")


查看完整回答
反對 回復 2022-04-23
?
largeQ

TA貢獻2039條經驗 獲得超8個贊

改用它(這可以解決您提出的問題):


def monitor():

    while True:

        try:

            brightness = int(input("brightness:"))

            if brightness < -1 or brightness > 101:

                print("invaild",brightness)

            if brightness < -1 or brightness > 101:

                print("invaild",brightness)


            else:

                print("invalid",brightness)

        except ValueError:

            print("please pass in a number")



        else:

            print("invalid",brightness)



monitor()

您的代碼也有邏輯錯誤,因為無論輸入(亮度),輸出總是print("invalid",brightness)


如果您不知道,請告訴您,以防萬一。


您的代碼輸出:

http://img1.sycdn.imooc.com//6263bdaf0001cd7710800604.jpg

我的輸出:

http://img1.sycdn.imooc.com//6263bdba0001836703970266.jpg


查看完整回答
反對 回復 2022-04-23
?
RISEBY

TA貢獻1856條經驗 獲得超5個贊

請檢查這個,這里我們強制用戶只輸入整數值。


    brightness=-2

while (brightness < -1 or brightness > 101):

    try:

        brightness = int(input("brightness:"))

    except ValueError:

        print("please pass in a number")



if brightness < -1 or brightness > 101:

   print("invaild",brightness)

else:

   print("Valid",brightness)


查看完整回答
反對 回復 2022-04-23
  • 3 回答
  • 0 關注
  • 193 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號