[英]How to get value after multiple loop iterations
我有一個字典,我希望用戶輸入字典鍵和隨機浮點值,然后將這兩個值相乘並將結果存儲在變量中。 循環迭代所需的次數,最后打印出最終值,該值是每個循環結果的總和。 這是我的代碼:
dic = {"key1":340, "key2":110, "key3":337, "key4":319, "key5":42}
initial_val = 0
for keys in dic:
value = str(input("insert key value"))
if value == "key1":
amount = float(input("enter amount"))
product=dic.get("key1")*amount
elif value == "key2":
amount = float(input("enter amount"))
product=dic.get("key2")*amount
elif value == "key3":
amount = float(input("enter amount"))
product=dic.get("key3")*amount
elif value == "key4":
amount = float(input("enter amount"))
product=dic.get("key4")*amount
elif value == "key5":
amount = float(input("enter amount"))
product=dic.get("key5")*amount
elif value==None:
product=0
initial_val+= product
if value=="end":
break
print(initial_val)
問題在於代碼打印的值是期望結果+上次迭代的總和。 我假設
print (initial_val)
需要
initial_val += product
並將其再次求和為最終結果。
問題的原因是什么,我該如何解決?
您要做的是:
dic = {"key1":340, "key2":110, "key3":337, "key4":319, "key5":42}
initial_val = 0
while True:
value = str(input("insert key value"))
if value == "end": # Break before you make the product !
break
amount = float(input("insert amount"))
product = amount * dic.get(value) # Make the product if it's not the end
initial_val += product # Make the sum
print(initial_val)
因為在您的情況下,您等到循環結束才測試value == "end"
。 但是,如果value
等於"end"
,則無需制造產品,因為沒有產品可以制造!
elif value==None or value == "end":
product=0
將'if value ==“ end”'移到代碼的開頭。 這樣,它將在再次添加之前退出循環。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.