Найти - Пользователи
Полная версия: Конвертация строки в число.
Начало » Python для новичков » Конвертация строки в число.
1
APSYHEA
 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')
Ошибка:
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’
Romissevd
 int(input())
ожидает ввода целого числа для корректной работы, а вы подаете строку… Вообще, более конкретно опишите задачу. Непонятно чего хотите. Если при вводе usd получать значение, то ваш код этого не выполнит…
old_monty
APSYHEA
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’
Конечно, такая ошибка и будет появляться, потому что ваша программа разрешает пользователю вводить строки вместо цифр. Например, я ввел ‘usd’ и получил ошибку в таком же точно виде:



При вводе цифр (например “100”) программка хоть и работает, но неправильно, вам надо все переделать.
1. У вас в if все условия выполняются, поэтому срабатывает только 1-е для ‘usd’, исполнение остальных просто никогда не происходит.
2. Оператор is здесь не годится, он служит для проверки того, что две ссылки указывают на один и тот же объект.
APSYHEA
Решил данную проблему, переписав код. Конечно с 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 ('Ошибка! Неправильный тип валюты.')
Romissevd
По моему мнению в данном случае лучше использовать словарь вместо списка… Например, как-то так
 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')
python335
“Оператор” is тут необязателен. Его можно было заменить на ==. Это более рационально.
Ну и в конце концов все это неправильно написано. Проверьте свое творение..
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB