2017-07-21 30 views
1

我之前就此發了一篇文章,但我覺得我的措辭/解釋錯了。我會告訴你代碼,然後我會舉例說明我正在嘗試做什麼。如何計算特定的價格費用?

amountPaid = float(input("Enter the amount you're paying:\n")) 
taxPercentage = float(input("Enter the tax percentage:\n")) 

taxPercentage = taxPercentage/100 
firstFee = (amountPaid * taxPercentage) + .30 
newAmount = amountPaid - firstFee 
secondFee = (newAmount * taxPercentage) + .30 
total = secondFee + newAmount 
print("{:.2f}".format(total)) 
while total < amountPaid: 
    newAmount = newAmount + .01 
print("The amount you should be paying is ${:.2f}".format(total)) 
print("The fee with that total would be ${:.2f}".format(secondFee)) 

(注)以上代碼實際上目前不工作,我相信這是while語句,但它給你的想法。

它應該是非常明顯的,我很新的編程,所以任何初學者提示,你可以給予也將不勝感激。

我試圖做的是計算的費用等於一個精確的總,像這樣:

  • 比方說,我付$ 1.00元。使用上述等式支付的費用等於1.33美元。
  • 所以,如果你減去從我們開始與最初的$ $ 1.00 0.33費,我們會得到$ 0.67
  • 但,$ 0.67費是$ 0.32,這將是$ 0.99,不正是$ 1.00包裝

我盡我所能,儘可能徹底地解釋這一點,但如果您有任何問題,請問,這是困擾我,我無法弄清楚哈哈。

+0

你爲什麼減去費用?我希望康卡斯特能做到這一點...... –

回答

0

一個要點是你的while循環取決於兩個變量:amountPaidtotal。這意味着while循環將永遠循環,如果這兩個循環不變,所以你必須確保它們在循環內被修改爲

您還可以快速看到循環本身不會修改這兩個中的任何一個,它只會修改newAmount。這意味着循環將永遠運行,或者根本不運行,所以在這種情況下它是無用的。

所以你需要改變變量在哪裏被修改。需要注意的是,當你寫:

total = secondFee + newAmount 

它不是一個定義將在任何時候都保持真實,相反,它是一個分配。這意味着修改secondFeenewAmount將不會直接修改total,除非您重寫同一行。 (請注意,這是循環所做的事情,它「重寫行」!)

回到您的代碼:目前,只有這兩個選項是可能的。隨着快看看你的代碼,它看起來像你的意思是把這兩行while循環:

while total < amountPaid: 
    newAmount = newAmount + .01 
    secondFee = (newAmount * taxPercentage) + .30 
    total = secondFee + newAmount 

我希望你能理解爲什麼,好運到將來所有的編程努力:)

+0

PS:一些編程語言實際上使用各種「定義」,而不是分配。也許將來你會檢查出來的。 –

+1

我得到它的工作感謝你!我非常感謝你的幫助(:我很快就會研究不同的定義。 我所做的並不是'while total