【发布时间】:2022-01-03 21:31:17
【问题描述】:
我需要程序询问用户是否要选择 lambda 或 k 作为参数,然后根据他们的选择询问 k 或 lambda 的最小值和最大值。
这是我目前的代码;
#ask user if they want a fixed value of k or lambda
def get_klambda():
print("Do you wish to plot curves which vary in:")
print("Shape parameter (k) or scale parameter (lambda)?")
global klambda
lamda = -1
k = -1
while True:
klambda = input("Please select ")
if klambda == "k":
k = float(input("Please enter a scale parameter for lambda: "))
if k >= 0:
break
print("The scale parameter for lambda must be greater than 0!")
def get_kmin(): #ask for min k value
global kmin
kmin = input("Enter minimum k value: ")
if kmin >= 0:
break
print("The minimum k value must be greater than 0!")
get_kmin()
def get_kmax(): #ask for max k value
global kmax
kmax = input("Enter maximum k value: ")
if kmax <= kmin:
break
print("The maximum k value must be greater than the minimum k value!")
get_kmax()
elif klambda == "lambda":
lamda = float(input("Please enter a shape parameter for k: "))
if lamda >= 0:
break
print("The scale parameter for lambda must be greater than 0!")
def get_lmin(): #asl for min lambda value
global lmin
lmin = input("Enter minimum lambda value: ")
if lmin >= 0:
break
print("The minimum lambda value must be greater than 0!")
get_lmin()
def get_lmax():
global lmax
lmax = input("Enter maximum lambda value: ")
if lmax <=lmin:
break
print("The maximum lambda value must be greater than the minimum lambda value!")
get_lmax()
else:
print("Please enter either (k) or (lambda)")
return klambda, k ,lamda, kmin, lmin
klamda, k, lamda, kmin, lmin = get_klambda()
我假设为了使其工作,您将需要一个函数内的函数,因为在询问他们是否要选择 k 或 lambda 后提示的问题取决于他们的选择。
即。你想选择 lambda 还是 k? - k
输入 lambda - 2 的形状参数
输入最小 k 值 - 2
ie.2 你想选择 lambda 还是 k? - 拉姆达
输入 k - 1 的形状参数
输入最小 lambda 值 - 2
这是我运行代码时遇到的错误:
UnboundLocalError Traceback (most recent call last)
<ipython-input-27-8579ccfa8ebb> in <module>
94 return klambda, k ,lamda, kmin, lmin
95
---> 96 klamda, k, lamda, kmin, lmin = get_klambda()
<ipython-input-27-8579ccfa8ebb> in get_klambda()
92 else:
93 print("Please enter either (k) or (lambda)")
---> 94 return klambda, k ,lamda, kmin, lmin
95
96 klamda, k, lamda, kmin, lmin = get_klambda()
UnboundLocalError: local variable 'kmin' referenced before assignment
【问题讨论】:
-
kmin仅在klambda == "k"时定义。 -
只有在您选择
k时才会设置您的k值,但无论如何您都在尝试返回它们。你的lambda值也一样。如果是我,我会定义两个函数,一个获取所有 k 值,一个获取所有 lambda 值(定义它们 outside 的 @ 987654328@ 函数),然后只从函数中调用我想要的那个 -
所以我需要将 klambda == "k" 添加到 kmin 上方的行或 def get_kmin 上方的行?
标签: python python-3.x