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. Для соседних задач пригодятся эти разборы:

Подписаться
Уведомить о
guest
0 комментариев
Старые
Новые Популярные

Настройки cookie

0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x