Python:有没有办法在 try 块中保存值并将其传递到 except 块中?

问题描述 投票:0回答:2

我想完成以下任务:

我在 try 块中有一个全局变量 x 分配给 int(input('x: ')) ,但我想在 except 块中传递 x 的值,以提醒用户他/她输入的特定值无效。看起来 except 块甚至无法识别 x 的值。我什至尝试过使用全局变量 x,但这显然不起作用。例如,如果我输入一个无效值,例如“hello”,我想保存值“hello”并将其传递到 except 块以通知用户“hello”无效。期望一个整数。我得到的结果是 None 无效,因为我将全局变量 x 初始化为 None。

global x
x = None

def main():
    global x
    x = get_int()
    print(f"x = {x}")

def get_int():
    global x

    while True:
        try:
            x = int(input("Enter an integer: "))

        except ValueError:
            print(f"{x} is invalid. Expecting an an integer")
            # pass
        else:
            return x

if __name__ == "__main__":
    main()
python try-except
2个回答
1
投票

input()
返回的值被
int()
解析为整数时,会引发错误,因此
x
从未实际分配过值,因为是
int()
引发了异常。

尝试分两步进行,获取一个值,然后解析它,这样您就可以捕获由

ValueException
引发的
int()
,但您可以存储用户输入的值,以便可以将其显示回来。

try:
    x = input("Enter an integer: ")
    y = int(x)
except ValueError:
    print(f"{x} is invalid. Expecting an integer")

0
投票
由于错误,

x
未分配,但您可以捕获异常并显示错误消息,这实际上是相关的。另外,不需要全局变量:

def main():
    x = get_int()
    print(f'{x=}')

def get_int():
    while True:
        try:
            return int(input('Enter an integer: '))
        except ValueError as e:
            print(f'Error: {e}')

if __name__ == '__main__':
    main()

输出:

Enter an integer: hello
Error: invalid literal for int() with base 10: 'hello'
Enter an integer: 5
x=5
© www.soinside.com 2019 - 2024. All rights reserved.