如何在 Python 的“try-except”语句中获取“except”块中的变量,该变量已在“try”块中赋值

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

问题是: 写一个名为“root”的函数,给定一个数字 x 和一个整数 n 并返回 x^(1 ).在函数定义中,设置n的默认值为2

现在我想创建函数 root(x,n),其中“n”是可选的。如果用户只是输入'x'的值并按下'Enter',函数必须返回'x^(0.5)'

的值

我尝试在 try 块中使用 split() 获取多个输入,以试图跳过 except 块中的 ValueError

代码:

def root(base,exp=2) :   

    return base**(1/exp)

try :

    x,n=input("Enter the base and nth_root :").split()

    x,n=int(x),int(n)

except ValueError :  

    print("By default, power is 0.5")

print(root(x,n))

当我同时给出值“x”和“n”时,这非常有效 但是当我只给出一个输入即 'x' 并按 'Enter' 时,except 块中的打印语句被打印但我看到: 'NameError: name 'x' is not defined'

是否有任何可能的方法来获取“x”的值,即从“try”块中的用户获取的值,返回“except”块? 我希望 'x' 的值从 'try' 块保留到 'except' 块,这样函数 root(x,n) 将返回 x^(0.5)

python function exception optional-parameters
2个回答
0
投票

在不同的行上分配

x
n
。并在输入前给
n
一个默认值,这样即使有错误也会存在

n = 0.5 # assume default
try :
    answer = input("Enter the base and nth_root :").split()
    x = answer[0]
    x = int(x)
    n = answer[1]
    n = int(n)
except ValueError :  
    print("By default, power is 0.5")
print(root(x,n))

0
投票
    def root(base, exp=2):
    return base ** (1 / exp)

try:
    x_n = input("Enter the base and nth_root separated by space: ").split()
    if len(x_n) == 1:
        x = int(x_n[0])
        print("By default, power is 0.5")
        print(root(x))
    else:
        x, n = int(x_n[0]), int(x_n[1])
        print(root(x, n))
except ValueError:
    print("Invalid input!")

您可以通过在 try 块外部定义变量 x 并为其分配默认值 None 来修改代码以实现此目的。然后,如果用户为其输入值,则可以在 try 块内更新 x 的值。

© www.soinside.com 2019 - 2024. All rights reserved.