2012-12-20 4 views
2

Привет, я новичок в python, и я занимаюсь простым калькулятором. Программа позволяет мне ввод числовых значений для приема пищи, налога, и острия, но при выполнении вычислений, я получаю эту ошибку:Простой калькулятор Python

Traceback (most recent call last): 
    File "C:/Users/chacha04231991/Desktop/pytuts/mealcost.py", line 5, in <module> 
    meal = meal + meal * tax 
TypeError: can't multiply sequence by non-int of type 'str' 

является код:

meal = raw_input('Enter meal cost: ') 
tax = raw_input('Enter tax price in decimal #: ') 
tip = raw_input('Enter tip amount in decimal #: ') 

meal = meal + meal * tax 
meal = meal + meal * tip 

total = meal 
print 'your meal total is ', total 
+2

результат '' raw_input' является str'. – alexvassel

ответ

1

Вам необходимо конвертировать ваши материалы от строк до цифр, например целые числа:

meal = int(raw_input('Enter meal cost: ')) 
tax = int(raw_input('Enter tax price in decimal #: ')) 
tip = int(raw_input('Enter tip amount in decimal #: ')) 

Вы можете также использовать decimal тип, если вам необходимо ввести дробные денежные суммы.

from decimal import Decimal 
meal = Decimal(raw_input('Enter meal cost: ')) 
tax = Decimal(raw_input('Enter tax price in decimal #: ')) 
tip = Decimal(raw_input('Enter tip amount in decimal #: ')) 

Я бы посоветовал вам не использовать поплавки для этого, потому что он даст ошибки округления.

+0

Он отлично работает с использованием float, но когда я пытаюсь использовать десятичное значение, вы получаете следующую ошибку: Traceback (последний последний звонок): Файл «C: /Users/chacha04231991/Desktop/pytuts/mealcost.py», строка 4, в налог = decimal (raw_input («Введите цену налога в десятичной цифре:»)) NameError: имя «десятичный» не определен – codeYah

+0

@codeYah: 'decimal' с небольшим' d' - это имя модуля. Тип 'Десятичный' имеет капитал' D'. –

1

при использовании raw_input, вход вы получаете типа str

>>> meal = raw_input('Enter meal cost: ') 
Enter meal cost: 5 
>>> type(meal) 
<type 'str'> 

вы должны преобразовать его в int/float перед выполнением действия

>>> meal = int(raw_input('Enter meal cost: ')) 
Enter meal cost: 5 
>>> type(meal) 
<type 'int'> 
Смежные вопросы