我試圖讓代碼要求用戶選擇 k 或 lambda,然后代碼需要請求 lambda 的比例引數(如果選擇了 k)或 k 的形狀引數(如果選擇了 lambda)。從這里開始,我需要代碼來詢問用戶輸入以獲得 min。值,最大值 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 請幫忙。
uj5u.com熱心網友回復:
我從您的描述中假設您想要 k 或 lambda,因此用戶不需要同時指定兩者。會這樣做。請注意,我已經洗掉了您提出的例外情況。當您進行自己的驗證時,不要使用例外。只需使用if陳述句。
在這種情況下,洗掉例外也意味著您不會捕獲無效輸入,就像用戶為 提供值“cat”一樣k。您是否需要抓住這一點取決于您的用戶的復雜程度。如果他們試圖破壞您的代碼,那么也許他們應該看到例外。
#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()
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/402990.html
標籤:
