2013-10-05 74 views
-1

我正在學習python的學校練習,如果他們的購買價格在10美元到20美元之間,我要求給予客戶20%的折扣。然後在21美元至30美元之間購買30%的折扣。每當我輸入一個21到30之間的數字時,它會給我20%和30%的折扣,我怎麼讓它給我只有30%的折扣。此外pyscrpiter說unorderable類型在第2行如何解決此錯誤建議if語句和使用輸入

productprice=input ('Enter price of product') 
if productprice > 10: 
     discount = productprice*0.80 
if productprice> 20: 
     discount = productprice*0.70 
+0

這是Python 3.x還是2.x?在3.x中,'input'返回一個字符串,並且不能比較字符串和數字。 – abarnert

回答

5

Python3.x版本

productprice = float(input('Enter price of product')) 
if 10.0 <= productprice <= 20.0: 
    afterDiscount = productprice * 0.80 
elif 20.1 <= productprice <= 30.0: 
    afterDiscount = productprice * 0.70 
else: 
    afterDiscount = productprice 
print (afterDiscount) 

Python2.x版本

productprice = float(raw_input('Enter price of product')) 

注意

  1. 在Python中,您可以檢查數字是否在給定範圍內,如下所示。

    0 < num < 3 
    

    如果它是有效的數學,那麼它將返回TrueFalse否則。

  2. 擁有else部件始終是件好事。

+0

在Python 2.x中,你不需要'float(input(...))'。理想的情況是使用'float(raw_input(...))'...但是如果你堅持使用'input',整個問題就是讓它爲你解析,所以你不需要在事實之後進行轉換。另一方面,在Python 3.x中,'print'不是一個聲明。 – abarnert

+0

@abarnert感謝您的建議:)我更新了答案。 – thefourtheye

1
productprice=int(input ('Enter price of product')) 
if productprice > 20 and productprice < 31: 
    discount = productprice*0.70 
elif productprice> 10: 
    discount = productprice*0.80 
+0

Python不使用'&&'。 – Tim

1
productprice = float(raw_input('Enter price of product ')) 

if 30 >= productprice >= 21: 
     productprice *= 0.70 
elif 20 >= productprice >= 10: 
     productprice *= 0.80 

print(productprice) 

您的輸入必須轉換爲整數或浮點數,以便將其比作數字。此外,使用ELIF確保你只給一個折扣

1

你應該看看使用「其他」。首先,如果你檢查它是否落在較低的價格範圍內,並且如果它確實執行了第一個if並忽略其他的。您還需要製作複合語句(productprice >= 10 and productprice <= 20)。我不知道python如何與讀取輸入一起工作,但是您可能需要將字符串轉換爲整數來修復第2行錯誤。