不同的输出取决于对多个问题的回答 (Python)
Different outputs depending on responses to multiple questions (Python)
我正在尝试让代码要求用户选择 k 或 lambda,然后代码需要为 lambda(如果选择了 k)请求一个比例参数或为 k(如果为 lambda被选中)。从这里开始,我需要代码来询问用户输入以获得最小值。值,最大值k(或 lambda)的值和增量取决于他们最初选择的内容。
例如,输出将是:
您想绘制以下变化的曲线:形状参数 (k) 或尺度参数 (lambda)?
请选择:(用户输入 - k)
请输入 lambda 的比例参数:(用户输入 - 2)
请输入最大值。值,分钟。 k的值和增量:
最大 k 值(>0):(用户输入 - 1)
最小 k 值(>最小 k 值):(用户输入 - 3)
k 的增量(在最小值和最大值之间):(用户输入 - 2)
这是我目前得到的
#ask user if they want a fixed value of k or lambda
print("Do you wish to plot curves which vary in:")
print("Shape parameter (k) or scale parameter (lambda)?")
def get_klambda():
global klambda
while True:
try:
klambda = str(input("Please select "))
if (klambda =="k"):
k = input("Please enter a scale parameter for lambda: ")
if k <=0:
break
raise ValueError()
except ValueError:
print("The scale parameter for lambda must be greater than 0!")
break
if (klambda=="lambda"):
lamda = input("Please enter a shape parameter for k: ")
if lamda <=0:
break
raise ValueError()
except ValueError:
print("The shape parameter for k must be greater than 0!")
break
raise ValueError()
except ValueError:
print("Please enter either (k) or (lambda)")
get_klambda()
#get min, max and inc of k
if (klambda == "k"):
print("Please enter the min. value, max. value and increment for the shape parameter (K) ")
def get_kmin():
global kmin
while True:
try:
kmin = float(input("Please enter minimum k value: "))
if kmin >=0.1:
break
raise ValueError()
except ValueError:
print("The minimum k value must be greater than 0!")
get_kmin()
在 k<=0:..
之后,我不断收到语法错误(除了 ValueError:)
我正在使用 Python 3
请帮忙
根据您的描述,我假设您需要 k 或 lambda,因此用户不需要同时指定两者。那样做就可以了。请注意,我已经删除了您提出的异常。当您进行自己的验证时,不要使用异常。只需使用 if
语句。
在这种情况下,删除异常也意味着您不会捕获无效输入,例如用户为 k
提供值“cat”。你是否需要抓住它取决于你的用户的复杂程度。如果他们试图破坏您的代码,那么也许他们应该看到例外情况。
#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)?")
lamda = -1
k = -1
while True:
klambda = input("Please select ")
if klambda == "k":
k = int(input("Please enter a scale parameter for lambda: "))
if k > 0:
break
print("The scale parameter for lambda must be greater than 0!")
elif klambda == "lambda":
lamda = int(input("Please enter a shape parameter for k: "))
if lamda > 0:
break
print("The shape parameter for k must be greater than 0!")
else:
print("Please enter either (k) or (lambda)")
return klambda, k, lamda
klamda, k, lamda = get_klambda()
我正在尝试让代码要求用户选择 k 或 lambda,然后代码需要为 lambda(如果选择了 k)请求一个比例参数或为 k(如果为 lambda被选中)。从这里开始,我需要代码来询问用户输入以获得最小值。值,最大值k(或 lambda)的值和增量取决于他们最初选择的内容。
例如,输出将是:
您想绘制以下变化的曲线:形状参数 (k) 或尺度参数 (lambda)?
请选择:(用户输入 - k)
请输入 lambda 的比例参数:(用户输入 - 2)
请输入最大值。值,分钟。 k的值和增量:
最大 k 值(>0):(用户输入 - 1)
最小 k 值(>最小 k 值):(用户输入 - 3)
k 的增量(在最小值和最大值之间):(用户输入 - 2)
这是我目前得到的
#ask user if they want a fixed value of k or lambda
print("Do you wish to plot curves which vary in:")
print("Shape parameter (k) or scale parameter (lambda)?")
def get_klambda():
global klambda
while True:
try:
klambda = str(input("Please select "))
if (klambda =="k"):
k = input("Please enter a scale parameter for lambda: ")
if k <=0:
break
raise ValueError()
except ValueError:
print("The scale parameter for lambda must be greater than 0!")
break
if (klambda=="lambda"):
lamda = input("Please enter a shape parameter for k: ")
if lamda <=0:
break
raise ValueError()
except ValueError:
print("The shape parameter for k must be greater than 0!")
break
raise ValueError()
except ValueError:
print("Please enter either (k) or (lambda)")
get_klambda()
#get min, max and inc of k
if (klambda == "k"):
print("Please enter the min. value, max. value and increment for the shape parameter (K) ")
def get_kmin():
global kmin
while True:
try:
kmin = float(input("Please enter minimum k value: "))
if kmin >=0.1:
break
raise ValueError()
except ValueError:
print("The minimum k value must be greater than 0!")
get_kmin()
在 k<=0:..
之后,我不断收到语法错误(除了 ValueError:)我正在使用 Python 3 请帮忙
根据您的描述,我假设您需要 k 或 lambda,因此用户不需要同时指定两者。那样做就可以了。请注意,我已经删除了您提出的异常。当您进行自己的验证时,不要使用异常。只需使用 if
语句。
在这种情况下,删除异常也意味着您不会捕获无效输入,例如用户为 k
提供值“cat”。你是否需要抓住它取决于你的用户的复杂程度。如果他们试图破坏您的代码,那么也许他们应该看到例外情况。
#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)?")
lamda = -1
k = -1
while True:
klambda = input("Please select ")
if klambda == "k":
k = int(input("Please enter a scale parameter for lambda: "))
if k > 0:
break
print("The scale parameter for lambda must be greater than 0!")
elif klambda == "lambda":
lamda = int(input("Please enter a shape parameter for k: "))
if lamda > 0:
break
print("The shape parameter for k must be greater than 0!")
else:
print("Please enter either (k) or (lambda)")
return klambda, k, lamda
klamda, k, lamda = get_klambda()