Форум сайта python.su
usd = 26.8875027 eur = 28.8570123 rub = 0.467923209 setup = ['usd','eur','rub'] if 'usd' is setup[0]: print (int(input()) * usd) elif 'eur' is setup[1]: print (int(input()) * eur) elif 'rub' is setup[2]: print (int(input()) * rub) else: print ('Error')
Отредактировано APSYHEA (Март 21, 2017 11:20:45)
Офлайн
int(input())
Офлайн
APSYHEAКонечно, такая ошибка и будет появляться, потому что ваша программа разрешает пользователю вводить строки вместо цифр. Например, я ввел ‘usd’ и получил ошибку в таком же точно виде:
Traceback (most recent call last):
File “/root/calc.py”, line 7, in <module>
print (int(input()) * usd)
ValueError: invalid literal for int() with base 10: ‘usd’
Офлайн
Решил данную проблему, переписав код. Конечно с int я тупанул, но там проблема была не только в этом.
Вобще я сидел занимался другим кодом, и вдруг понял что это можно применить к этой задаче с конвертером. Я только начинаю свой путь изучения языка, забавно осознавать что фикс я нашел именно таким способом.
''' usd = 26.8875027 eur = 28.8570123 rub = 0.467923209 ''' setup = ['usd','eur','rub'] print ('------------------------------------\nКонвертер валют UAH > USD, EUR, RUB \n------------ by APSYHEA ------------\n') print ('Конвертировать в (usd, eur, rub)?') str_input = str(input()) int_input = int(input()) if str_input == setup[0]: print ((int_input * 26.8875027),'USD') elif str_input == setup[1]: print ((int_input * 28.8570123),'EUR') elif str_input == setup[2]: print ((int_input * 0.467923209),'RUB') else: print ('Ошибка! Неправильный тип валюты.')
Офлайн
По моему мнению в данном случае лучше использовать словарь вместо списка… Например, как-то так
exchange_rates = { 'usd': 26.8875027, 'eur': 28.8570123, 'rub': 0.467923209, } try: str_input = input('Enter currency:').lower() int_input = int(input('Amount of currency')) uah = exchange_rates.get(str_input) * int_input print('{0} {1} = {2} UAH'.format(int_input, str_input.upper(), uah)) except (ValueError, TypeError): print('error')
Офлайн
“Оператор” is тут необязателен. Его можно было заменить на ==. Это более рационально.
Ну и в конце концов все это неправильно написано. Проверьте свое творение..
Офлайн