2013-10-05 1 views
-1

Я работаю над школьным упражнением на питоне и прошу предоставить клиенту скидку 20%, если их покупка составляет от 10 до 20 долларов США. Затем 30% скидка на покупки от 21 до 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 
    

    Если это действительно математически, то он будет возвращать True, False иначе.

  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) 

Ваш вход должен быть конвертирован в междунар или поплавок для того, чтобы сравнить его с числами. Кроме того, использование Элиф гарантирует, что вы только дать одной скидки

1

Вы должны изучить использование «else». Сначала, если вы проверите, попадет ли он в более низкий ценовой диапазон, и если он это выполнит, он будет первым, если и проигнорирует else. Вам также необходимо сделать составные заявления (productprice >= 10 and productprice <= 20). Я не знаю, как работает python с чтением ввода, но вам может потребоваться преобразовать из String в целое число, чтобы исправить ошибку строки 2.

Смежные вопросы