问题是: 写一个名为“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)
在不同的行上分配
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))
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 的值。