为了账号安全,请及时绑定邮箱和手机立即绑定

传入字符串时出现 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条经验 获得超7个赞

改用它(这可以解决您提出的问题):


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)


如果您不知道,请告诉您,以防万一。


您的代码输出:

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

我的输出:

//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 关注
  • 156 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信