В Python 3 input
возвращает строку. Это в основном эквивалентно raw_input
в Python 2. Итак, перед выполнением любых вычислений вам нужно преобразовать эту строку в число. И будьте готовы к «плохим вводам» (то есть нечетным значениям).
Кроме того, для денежных ценностей обычно не хорошая идея использовать поплавки. Вы должны использовать decimal
, чтобы избежать ошибок округления:
>>> 100*.56
56.00000000000001
>>> Decimal('100')*Decimal('.56')
Decimal('56.00')
Все, что приводит к чему-то как что:
import decimal
try:
pounds = decimal.Decimal(input('Number of Pounds: '))
convert = pounds * decimal.Decimal('.56')
print('Your amount of British pounds in US dollars is: $', convert)
except decimal.InvalidOperation:
print("Invalid input")
Производство:
sh$ python3 m.py
Number of Pounds: 100
Your amount of British pounds in US dollars is: $ 56.00
sh$ python3 m.py
Number of Pounds: douze
Invalid input
Что такое сообщение об ошибке вы видите ? Эти три команды работали для меня в интерпретаторе. Какую версию Python вы используете? Подумайте, что произойдет, если кто-то вводит нечисловое значение для фунтов. – kdopen
@kdopen Это будет работать в Python 2, поскольку 'input' является' eval (raw_input (...)) '- поэтому при правильном вводе пользователя, возвращающем _number_, а не _string_. В Python 3 'input' является эквивалентом' raw_input' и всегда возвращает строку. Таким образом, существует необходимость в явном преобразовании. Очень вероятно, что OP использует Python 3, но его код был основан на примере, написанном для Python 2. –