[英]How do I use multiple inputs in a loop?
我正在構建一個計算你每日能量消耗的應用程序。 為此,我有 2 個函數將使用輸入中給出的信息。
現在,問題是當用戶沒有在 integer 上提供答案時,輸入必須重新提出問題,直到它有效為止。 為此,我為我所做的每個輸入都有一個循環,但我希望將它放在 1 個循環中,這樣我可以在循環結束時詢問他們是否要繼續或結束計算器。
下面是我的代碼(它是荷蘭語)
while True:
try:
leeftijd = int(input("Wat is uw leeftijd in jaren ? "))
break
except ValueError:
print("Vul het opnieuw in !")
while True:
try:
gewicht = int(input("Wat is uw gewicht in kilogrammen ? "))
break
except ValueError:
print("Vul het opnieuw in !")
while True:
try:
lengte = int(input("Wat is uw lengte in centimeters ? "))
break
except ValueError:
print("Vul het opnieuw in !")
geslacht = input("Wat is uw geslacht (m/v) ? ")
while True:
try:
beweging = int(input("Hoeveel wandelt u per dag (minuten) ? "))
break
except ValueError:
print("Vul het opnieuw in !")
我希望這足夠清楚,可以理解。 提前致謝!
實際上,您也應該檢查float
答案的類型!
您可以使用這樣的循環,其中包含問題列表。 在這里,我將結果存儲在一個字典中,其中關鍵是問題,但它們也可以存儲為列表或其他對象。
questions = [
["Wat is uw leeftijd in jaren ? ", int],
["Wat is uw gewicht in kilogrammen ? ", int],
["Wat is uw lengte in centimeters ? ", int],
["Wat is uw geslacht (m/v) ? ", float]
["Hoeveel wandelt u per dag (minuten) ? ", int]
]
def ask(question, variabletype):
while True:
try:
answers[question] = variabletype(input(question))
break
except ValueError:
print("Variable should be of type", variabletype.__name__)
answers = {}
for question, variabletype in questions:
answers[question] = ask(question, variabletype)
或者沒有問題的循環:
def ask(question, variabletype):
while True:
try:
answers[question] = variabletype(input(question))
break
except ValueError:
print("Variable should be of type", variabletype.__name__)
answers = {}
for question, variabletype in questions:
answers[question] = ask(question, variabletype)
a0 = ask("Wat is uw leeftijd in jaren ? ", int)
a1 = ask("Wat is uw gewicht in kilogrammen ? ", int)
a2 = ask("Wat is uw lengte in centimeters ? ", int)
a3 = ask("Wat is uw geslacht (m/v) ? ", float)
a4 = ask("Hoeveel wandelt u per dag (minuten) ? ", int)
將詢問 integer 的邏輯放入 function 並用不同的文本調用它。 使用循環和條件break
退出無限循環:
def ask_int(text, error_text):
while True:
try:
return int(input(text))
except ValueError:
print(error_text)
leeftijd = ask_int("Wat is uw leeftijd in jaren ? ", "Vul het opnieuw in !")
gewicht = ask_int("Wat is uw gewicht in kilogrammen ? ", "Vul het opnieuw in !")
lengte = ask_int("Wat is uw lengte in centimeters ? ", "Vul het opnieuw in !")
geslacht = input("Wat is uw geslacht (m/v) ? ")
while True:
beweging = ask_int("Hoeveel wandelt u per dag (minuten) ? ", "Vul het opnieuw in !")
# do something with the things - calculate & print
print(leeftijd, gewicht, lengte, geslacht, beweging)
if input("Calculate another time? (*/n)") == "n":
break # leaves the loop
Output:
# All inputes: A,1,1,1,m,a,42,y,100,n
Wat is uw leeftijd in jaren ? A
Vul het opnieuw in !
Wat is uw leeftijd in jaren ? 1
Wat is uw gewicht in kilogrammen ? 1
Wat is uw lengte in centimeters ? 1
Wat is uw geslacht (m/v) ? m
Hoeveel wandelt u per dag (minuten) ? a
Vul het opnieuw in !
Hoeveel wandelt u per dag (minuten) ? 42
1 1 1 m 42
Calculate another time? (*/n) y
Hoeveel wandelt u per dag (minuten) ? 100
1 1 1 m 100
Calculate another time? (*/n) n
如果您也想允許更改人員,請將其放入 function 中:
def ask_person():
lee = ask_int("Wat is uw leeftijd in jaren ? ", "Vul het opnieuw in !")
gew = ask_int("Wat is uw gewicht in kilogrammen ? ", "Vul het opnieuw in !")
leng = ask_int("Wat is uw lengte in centimeters ? ", "Vul het opnieuw in !")
ges = input("Wat is uw geslacht (m/v) ? ")
return lee, gew, leng, ges # return a tuple of your data
# get initial person data, decompose tuple into variables
leeftijd, gewicht, lengte, geslacht = ask_person()
while True:
beweging = ask_int("Hoeveel wandelt u per dag (minuten) ? ", "Vul het opnieuw in !")
print(leeftijd,gewicht,lengte,geslacht,beweging)
choice = input("Calculate another time? (y/n) or C to change person")
if choice == "n":
break
elif choice == "C":
# change to other person data
leeftijd, gewicht, lengte, geslacht = ask_person()
閱讀詢問用戶輸入,直到他們給出有效的回應以獲得更多關於該主題的靈感。
一種解決方案是將循環包裝在 function 內,並為每個問題調用它:
def question(q):
while True:
try:
var = int(input(q))
return var
except ValueError:
print("Vul het opnieuw in !")
leeftijd = question("Wat is uw leeftijd in jaren ? ")
gewicht = question("Wat is uw gewicht in kilogrammen ? ")
lengte = question("Wat is uw lengte in centimeters ? ")
beweging = question("Hoeveel wandelt u per dag (minuten) ? ")
geslacht = input("Wat is uw geslacht (m/v) ? ")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.