Python
Как сделать конвертер валют на Python: простой проект для начинающих
Самый простой конвертер валют на Python можно сделать без подключения к интернету. Для учебного проекта достаточно взять фиксированные курсы, сохранить их в словаре, попросить пользователя ввести сумму и валюту, а затем посчитать результат
Важно: курсы в примере учебные. Для реального приложения нужно брать актуальные данные из надежного API или банка, а не хранить числа прямо в коде
Что будет делать программа
Пользователь вводит сумму в рублях и выбирает валюту: USD, EUR или CNY. Программа берет курс из словаря, делит сумму на курс и показывает, сколько получится в выбранной валюте
Пример работы:
Введите сумму в рублях: 10000
Куда перевести? USD, EUR или CNY: USD
10000.0 RUB = 111.11 USD
Полный код простого конвертера
Создайте файл currency_converter.py и вставьте код:
rates = {
"USD": 90.0,
"EUR": 98.0,
"CNY": 12.5,
}
rubles_text = input("Введите сумму в рублях: ")
currency = input("Куда перевести? USD, EUR или CNY: ").upper()
try:
rubles = float(rubles_text)
except ValueError:
print("Сумма должна быть числом")
else:
if rubles <= 0:
print("Сумма должна быть больше нуля")
elif currency not in rates:
print("Такой валюты нет в списке")
else:
result = rubles / rates[currency]
print(f"{rubles} RUB = {result:.2f} {currency}")
Запустите:
python currency_converter.py
или:
python3 currency_converter.py
Как работает словарь курсов
Курсы хранятся в словаре:
rates = {
"USD": 90.0,
"EUR": 98.0,
"CNY": 12.5,
}
Ключ — название валюты, значение — курс в рублях. Если пользователь выбрал USD, программа берет rates["USD"], то есть 90.0
Словарь удобен тем, что не нужно писать много условий:
if currency == "USD":
rate = 90.0
elif currency == "EUR":
rate = 98.0
Вместо этого можно проверить наличие ключа и взять курс по названию валюты
Зачем нужен upper()
Пользователь может ввести usd, Usd, USD или даже uSd. Метод upper() приводит строку к верхнему регистру:
currency = input("Куда перевести? ").upper()
Так программа становится удобнее. Она не требует, чтобы пользователь ввел валюту идеально, и принимает разные варианты написания
Почему сумма переводится через float()
input() всегда возвращает строку. Даже если пользователь ввел 10000, для Python это сначала текст "10000". Чтобы считать, строку нужно превратить в число:
rubles = float(rubles_text)
Мы используем float(), потому что сумма может быть дробной:
1250.50
Если пользователь введет слово, например десять, сработает except ValueError, и программа покажет понятное сообщение
Как красиво округлить результат
В строке вывода используется форматирование:
print(f"{rubles} RUB = {result:.2f} {currency}")
Часть {result:.2f} означает: вывести число с двумя знаками после запятой. Для денег это выглядит аккуратнее, чем длинная дробь
Версия с конвертацией между валютами
Можно сделать чуть более гибкий вариант: пользователь выбирает исходную и целевую валюту, а программа переводит через базовую валюту
rates_to_rub = {
"RUB": 1.0,
"USD": 90.0,
"EUR": 98.0,
"CNY": 12.5,
}
amount = float(input("Сумма: "))
from_currency = input("Из какой валюты? ").upper()
to_currency = input("В какую валюту? ").upper()
if from_currency not in rates_to_rub or to_currency not in rates_to_rub:
print("Неизвестная валюта")
else:
rubles = amount * rates_to_rub[from_currency]
result = rubles / rates_to_rub[to_currency]
print(f"{amount:.2f} {from_currency} = {result:.2f} {to_currency}")
Здесь все переводится через рубли. Например, USD сначала превращается в RUB, а потом RUB превращается в EUR или CNY
Почему для настоящих денег лучше Decimal
Для учебного конвертера float() подходит. Но в реальных финансовых расчетах лучше использовать Decimal, потому что двоичные дроби могут давать незаметные погрешности
Простой пример:
print(0.1 + 0.2)
Результат может быть таким:
0.30000000000000004
Для первого проекта это не страшно. Но если вы делаете приложение с деньгами, изучите decimal.Decimal
Мини-практика
Добавьте в словарь валюту GBP и курс для фунта. Затем сделайте вывод списка доступных валют перед вводом:
print("Доступные валюты:", ", ".join(rates.keys()))
После этого добавьте повторный запуск через цикл while, чтобы пользователь мог выполнить несколько конвертаций подряд и выйти по слову exit
Частые ошибки
Первая ошибка — считать с текстом из input() без преобразования в число. Перед делением нужна функция float()
Вторая ошибка — не проверять валюту. Если пользователь введет JPY, а ключа в словаре нет, программа получит ошибку KeyError
Третья ошибка — хранить реальные курсы прямо в коде и забывать их обновлять. Для учебы так можно, для настоящего приложения нужен API
Четвертая ошибка — не округлять вывод. Пользовательский результат лучше показывать с двумя знаками после запятой
Что почитать дальше по Python
Если нужен общий маршрут по теме, откройте рубрику Python. Для соседних задач пригодятся эти разборы:
- Как сделать ИИ на Python: простой проект без магии
- Как сделать калькулятор на Питоне: простой код для начинающих
- Калькулятор на Python: простой пример для начинающих с input() и функциями
- Как из списка сделать строку в Python: join, map и частые ошибки