2014-09-25 85 views
0

我正在開發此程序,根據客戶購買的數量給予折扣。If-Elif-Else Python(Discount Scenario)

方向如下: 某些在線商店給出了基於購買的總金額折扣:

 If the purchase total is over $50, a 5% discount is applied 

     If the purchase total is over $100, a 10% discount is applied 

     If the purchase total is over $500, a 15% discount is applied 

使用if-elif的,否則鏈應用任何折扣後計算購買金額。對於您的演示,請使用499.99美元的購買。

這就是我迄今爲止創建的,但它似乎並沒有正常運行,我想知道我可以做些什麼來使我的代碼更好,也許如果我正確使用if-elif-else代碼。謝謝大家。

if total_cost>=10:  
    if give_shopper_5percent_discount(): 
    print"You have won a discount" 
    total_cost -= discount 
    candidate_prime =True 

elif total_cost>100: 
    if give_shopper_10percent_discount(): 
    print"You have won a discount" 
    total_cost -= discount 
    candidate_prime =True 


else total_cost>=500: 
    if give_shopper_15percent_discount(): 
    print"You have won a discount" 
    total_cost -= discount 
    candidate_prime =True 
+0

您需要爲了修正縮進,它在Python中很重要,所以如果我們在你的問題中看不到它,我們不知道你的真實代碼是什麼。您還需要準確定義「似乎無法正常運行」的含義,並提供'give_shopper_5percent_discount()'和朋友的定義,並且通常會顯示一個人們可以運行以複製問題的程序。 – 2014-09-25 03:11:36

+0

縮小問題點(是python拋出一個錯誤?)並添加大量的打印語句來查看發生了什麼。例如,我看到'total_cost - = discount'很多,但折扣永遠不會計算,並且在每種情況下都應該不同。 – tdelaney 2014-09-25 03:13:43

+0

@PaulGriffiths。謝謝,我剛剛編輯它。如果這種格式是if-elif-else格式的工作方式,我只是感到困惑。我是否應該使用兩個elifs函數並保存別的東西?我很困惑,因爲它看起來像我至少需要三個選項來使用它。 – python2learn 2014-09-25 03:16:50

回答

1

根據你的描述,第一個total_cost的限制是錯誤的。你不應該使用別的之前total_cost >= 500

試試這個:

total_cost = int(input('Please enter a total_cost:')) 
if total_cost>=500:  

    print"You have won a discount by 15 percent" 
    total_cost *= 0.85 



elif total_cost>100: 

    print"You have won a discount by 10 percent" 
    total_cost *= 0.9 



elif total_cost>=50: 

    print"You have won a discount by 5 percent" 
    total_cost *= 0.95 

else: 
    print 'you total cost is not in the range of discount!' 
print 'Now the total cost is ', total_cost 
+0

謝謝。這是在想什麼,所以我用else函數如果沒有折扣可用。但是,當我運行代碼時,它說第一行中沒有定義total_cost,我猜這對其他行也是有問題的。 – python2learn 2014-09-25 03:24:40

+0

幫助?我有三個total_cost行,它們設置爲折扣。我不明白。 – python2learn 2014-09-25 03:42:48

+0

他們沒有設置折扣。 'total_cost - = discount'表示'total_cost = total_cost - 折扣' – 2014-09-25 04:14:45

0

您的縮進不是怪人。它在python中很重要。 (試試這個嗎?)

if give_shopper_5percent_discount(): 
    print"You have won a discount" 
    total_cost -= discount 
    candidate_prime =True 

elif total_cost>100: 
    if give_shopper_10percent_discount(): 
    print"You have won a discount" 
    total_cost -= discount 
     candidate_prime =True 

else total_cost>=500: 
     if give_shopper_15percent_discount(): 
     print"You have won a discount" 
     total_cost -= discount 
     candidate_prime =True 

也爲折扣嘗試乘法而不是減法。

+0

我也錯過了一條線。在這裏,我只是改變了這一點,但我一直得到一個錯誤。如果TOTAL_COST> = 10: 如果give_shopper_5percent_discount(): 打印 「你已經贏得了打折」 TOTAL_COST - =折扣 candidate_prime =真 ELIF TOTAL_COST> 100: 如果give_shopper_10percent_discount(): 打印「你已經贏得了打折」 TOTAL_COST - =折扣 candidate_prime =真 否則TOTAL_COST> = 500: 如果give_shopper_15percent_discount(): 打印 「你已經贏得了打折」 TOTAL_COST - =折扣 candidate_prime =真 – python2learn 2014-09-25 03:18:27

+0

什麼問題呢? – smushi 2014-09-25 03:19:17

+0

拍攝。我在使用堆棧溢出的縮進時遇到了困難。但是如果total_cost> = 10,我忘了添加:在第一行。但它告訴我total_cost沒有被定義。 – python2learn 2014-09-25 03:23:43

1

你必須首先檢查最大的折扣,否則你給予更多的折扣,打算;-)

if total_cost>=500: 
    ... 
elif total_cost>=100: 
    ... 
elif total_cost>=10: 
    ... 
else: 
    pass 
+0

我認爲這是主要問題。在if/elif/else測試中,您通常首先要測試最嚴格的條件。否則,你需要更復雜的條件(比如'if 10 <= total_cost <100')。 – Blckknght 2014-09-25 05:39:53