簡體   English   中英

多次循環迭代后如何獲得價值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM