不同的输出取决于对多个问题的回答 (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()