Как сделать конвертер валют в python

Добавил пользователь Владимир З.
Обновлено: 05.10.2024

Должны поддерживаться следующие единицы измерения:
мили (1 mile = 1609 m),
ярды (1 yard = 0.9144 m),
футы (1 foot = 30.48 cm),
дюймы (1 inch = 2.54 cm),
километры (1 km = 1000 m),
метры (m),
сантиметры (1 cm = 0.01 m)
миллиметры (1 mm = 0.001 m)

Формат ввода:
одна строка с фразой следующего вида:
15.5 mile in km, т. е. требуется перевести 15.5 миль в километры.

Формат вывода:
Представить в виде вывода на экран текста "Результат равен N "
Полученное число должно быть с точностью до пяти знаков после запятой.
Примечания:
Использовать словарь для единиц измерения, вынести логику конвертации в отдельную функцию.

Дано:
5.3 km in cm
22.39 foot in m
10200 mm in yard

На крайний случай может у кого есть схожие примеры, соберу по кусочкам

Если без словарей и функций, так сказать, для затравки:

l=input('Ввести:').split()
if l[1]=='km' and l[3]=='cm':k=100000
if l[1]=='foot' and l[3]=='cm':k=30.48
print('Результат равен',float(l[0])*k,l[3])

RESTART: C:
Ввести: 5.3 km in cm
Результат равен 530000.0 cm
>>>

Точность результата отрегулировать командой round

Может кто-нибудь даст более полное решение, кому не лень с этим возиться.

W = ['mm', 'cm', 'm', 'km', 'inch', 'foot', 'yard', 'mile']
D = [0.001, 0.01, 1, 1000, 0.0254, 0.3048, 0.9144, 1609]

О EuroOffice Extension Creator

Так как расширения, создаваемые при помощи EOEC, включают его исходный код, они также должны быть лицензированы по GPL v3. Для создания коммерческих продуктов на сайте разработчика предлагается коммерческая версия.

Подготовка к работе

Идем на страницу EOEC: и скачиваем последнюю версию (на момент написания статьи - 0.3). Распаковав полученный архив, вы увидите каталог с тремя папками, тремя скриптами и PDF-файлом с документацией. Версия 0.3 заметно увеличилась по сравнению с предыдущими - в архиве теперь содержится шесть расширений, созданных с помощью EOEC. Находятся они в каталоге examples. Настоятельно рекомендую ознакомиться с их исходным кодом после изучения документации. В расширениях Lookup и Sharpen использованы функции встраивания в контекстное меню OOo и назначения комбинаций клавиш.

Новое расширение

Для создания собственного расширения необходимо открыть терминал и запустить скрипт create.py, находящийся в каталоге EOEC, с аргументами:

Здесь project-name - название нашего нового расширения, VENDOR - имя его разработчика. Справку по использованию скриптов create.py, pack.py и update.py можно получить, запустив их из терминала с ключом --help.
Выполним команду:

В результате скрипт create.py создаст каталог нового расширения CurConverter на основе директории template с использованием введенных вами данных.
Теперь нужно создать версию расширения для разработки. Для этого нам потребуется скрипт pack.py с ключом -D. Синтаксис таков:

В нашем случае это значит:

Третий скрипт, update.py, предназначен для обновления ранее созданного расширения при выходе новой версии EOEC. Предварительно прочтите документацию - разработчики предупреждают о возможной потере данных. Старая, как мир, истина: не забывайте регулярно делать резервные копии каталога расширения!

Пункт в меню

Для начала обеспечим интернационализацию расширения. Откройте Сервис > Макросы > Управление диалогами, перейдите на вкладку Библиотеки, выберите OOoCoderCurConverterDialogs, и нажмите на кнопку Изменить.

Здесь и далее мы будем работать с модулем CurConverter/curconverter/curconverter.py. Добавим поддержку русского языка

Определим расширению место для запуска - поместим его в меню Сервис за пунктом Рассылка писем. Для этого нам нужно узнать идентификатор последнего пункта. Вызовите диалог Справка > About CurConverter и нажмите кнопку Debug. В открывшемся окне введите следующий текст:

self.addMenuItem( 'com.sun.star.text.TextDocument', '.uno:MailMergeWizard', self.localize( 'title' ), 'curconverter' )

и нажмите кнопку Execute code. Эту же строку надо добавить в метод firstrun класса CurConverter.

Сохраните код и попробуйте выбрать пункт меню Сервис > Конвертер валют. Как можно видеть, все действительно работает.

Добавим интерфейс

Примерный вид диалога, который должен получиться, показан на рисунке 4.

Через свойства элементов можно выставить их размеры, положение и т. д.; затем нажмите кнопку Сохранить. Вид и текст диалога About CurConverter изменяется здесь же, во вкладке About. Теперь необходимо перейти из оболочки OOBasic в другой элемент ООо, например, Writer (по умолчанию расширение встраивается в меню Справка всех компонентов, кроме среды программирования). Выберите Справка > About CurConverter > Debug > Save Dialogs.

Время кодировать

Создайте конфигурационный файл settings, в котором будет храниться URL сервиса, предоставляющего курсы валют. Пусть его содержимое будет таким:

Скопируйте файл настроек в каталог расширения. Внимание! В случае, если в расширение нужно добавить какие-либо файлы, например, изображения, настройки и т. д., необходимо делать это одновременно в два места: в рабочий каталог расширения и его папку в профиле. Все критические изменения в них вносятся синхронно, так как в профиле OOo лежат файлы, которые запускаются при отладке нашего dev-расширения, а в рабочем каталоге - файлы, которые будут упакованы для отправки пользователям.
Откройте curconverter.py (в рабочем каталоге) и добавьте импорт модулей:

Видоизмените метод curconverter:

Сохраните файл и запустите расширение через меню. Должен появиться созданный нами диалог. Кнопки еще не работают, но вскоре мы это исправим.
В каталоге util EOEC содержаться несколько модулей с некоторыми полезными функциями. Во writer.py это функция getWord(). Воспользуемся ею для считывания суммы из документа.

import util.writer
.
self.summa=util.writer.getWord(self.getcontroller()).String
self.cursor=self.getcontroller().getViewCursor()
Заполним поле ValuteNum1
try:
eval(self.summa)
self.dlgMain.ValuteNum1.Value=self.summa
except:
self.dlgMain.ValuteNum1.Value=100.00

Как видно, обращение к элементам управления диалога происходит как к объектам, являющимся атрибутами self.dlgMain, по именам.
Далее, обработаем конфигурационный файл, считав из него URL:

self.path - свойство, содержащее путь к установленному расширению. Вызываем метод получения курса валют:

который определятся следующим образом:

Осталось создать обработчики нажатий - методы, которые вызываются при активации соответствующих элементов управления. Именуются они следующим образом: on_action_ .
Кнопка btnClear сбрасывает значения элементов управления на начальные:

def on_action_btnClear(self):
self.dlgMain.ValuteNum1.Value=100.00
self.dlgMain.ValuteNum2.Value=0
self.dlgMain.ValuteName1.selectItemPos(4,True)
self.dlgMain.ValuteName2.selectItemPos(self.dlgMain.ValuteName2.ItemCount-1,True)

Кнопка btnCalculate вычисляет курс первой валюты относительно другой, подсчитывает сумму в другой валюте и, в зависимости от состояния флажка, вставляет результат в документ.

Метод fillList выглядит так:

def fillList(self):
for i in range(0, len(self.kurses)):
self.dlgMain.ValuteName1.addItem(self.kurses[i]['Name'],i)
self.dlgMain.ValuteName2.addItem(self.kurses[i]['Name'],i)

В итоге у нас должен получиться такой метод curconverter:

Результаты наших трудов можно видеть на рисунке 5.

(Рис.5) Расширение CurConverter готово к работе.

Финальный штрих

Наше расширение готово. На всякий случай еще раз сохраним диалоги через окно О расширении. Затем войдите в каталог EOEC и соберите готовое расширение.

Я ищу некоторые способы сделать мой код проще для этого конвертера валют.

Возможно, вы этого еще не поняли, но все ваши нереализованные методы будут очень похожи на real_to_dollar :

  • спросите пользователя, какая часть исходной валюты он хочет конвертировать;
  • примените определенный коэффициент конверсии;
  • сообщите пользователю результат конвертации в желаемой валюте.

Таким образом, это должна быть единственная функция, параметризованная элементами, которые различаются между различными вызовами: имя валюты начала, название конвертируемой валюты, обменный курс.

Также обратите внимание на использование формата , чтобы упростить построение строки с числами.

Тем не менее, нужно использовать кучу , если s знать, какие параметры использовать (например, вы использовали бы кучу , если s, чтобы знать, какая функция для вызова) не это здорово и может быть бременем для поддержания и расширения. Вы можете использовать второй словарь, чтобы сопоставлять пары валют с обменными курсами:

И просто нужно получить скорость, используя RATES [(user_choice1, user_choice2)] .

Конвертер валют
Очень нужна помощь! Нужно написать программу "Конвертер валют", которая позволяет перевести.


Python, модуль tkinter, конвертер валют
Здравствуйте, помогите пожалуйста как доработать. Идея связать обычный калькулятор с конвертером.

Конвертер валют
Помогите написать конвертер валют в Windows form 1. Сумма в рублях 2. Курс доллара 3. Результат.


Конвертер Валют
Доброго Дня. Тут решил реализовать давнею мечту Для себя конвертер Валют Написал парсер который.

Решение

Думаю этого будет достаточно:

from PyQt5.QtWidgets import QWidget, QApplication, QLineEdit, QComboBox, QPushButton, QHBoxLayout,\
QVBoxLayout, QSizePolicy

class Window(QWidget):
def __init__(self):
super(Window, self).__init__()

self.main_layout = QHBoxLayout(self)
self.input_layout = QVBoxLayout(self)
self.output_layout = QVBoxLayout(self)

self.input_value = QLineEdit(self)
self.input_value.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.input_type = QComboBox(self)
self.input_type.addItems(EXCHANGE_RATES.keys())
self.input_type.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.convert_button = QPushButton(self)
self.convert_button.setText("—>")
self.convert_button.clicked.connect(self.convert)
self.convert_button.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.output_value = QLineEdit(self)
self.output_value.setEnabled(False)
self.output_value.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.output_type = QComboBox(self)
self.output_type.addItems(EXCHANGE_RATES.keys())
self.output_type.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)

self.main_layout.addLayout(self.input_layout)
self.main_layout.addWidget(self.convert_button)
self.main_layout.addLayout(self.output_layout)

if __name__ == "__main__":
app = QApplication(sys.argv)
wnd = Window()
wnd.show()
sys.exit(app.exec())


Конвертер валют
Надо составить программу пересчёта денег в рублях в валюту по выбору(доллары, евро, фунты).

Конвертер валют
Очень нужна помощь! Нужно написать программу "Конвертер валют", которая позволяет перевести.


Конвертер валют
Здравствуйте. Сделал конвертер валют, но теперь необходимо, чтобы курс валют загружался с.

Конвертер валют
Задача состоит в том, что производить перевод валюты из одной в другую. Я решил сделать на примере.


Конвертер валют
выбираешь две валюты, программа показывает в соответствии с курсом сколько будет денег, взятой.

Конвертер валют в Python

Необходимые модули:

запросы: этот модуль не встроен в Python. Чтобы установить его, введите следующую команду в терминал или cmd.

Ниже приведена реализация:

def __init__( self , url):

self .rates = data[ "rates" ]

def convert( self , from_currency, to_currency, amount):

if from_currency ! = ‘EUR’ :

amount = amount / self .rates[from_currency]

amount = round (amount * self .rates[to_currency], 2 )

print ( ‘<> <> = <> <>’ . format (initial_amount, from_currency, amount, to_currency))

CurrencyConverter 0.16.5

A currency converter using the European Central Bank data.

Navigation

Project links

Statistics

View statistics for this project via Libraries.io, or by using our public dataset on Google BigQuery

Maintainers

Classifiers

  • Development Status
  • 5 — Production/Stable
  • Python :: 2.7
  • Python :: 3
  • Python :: Implementation :: CPython
  • Python :: Implementation :: PyPy

Project description

This is a currency converter that uses historical rates against a reference currency (Euro).

Currency data sources

Installation

You can install directly after cloning:

Or use the Python package:

Command line tool

After installation, you should have currency_converter in your $PATH:

Python API

Create once the currency converter object:

Convert from EUR to USD using the last available rate:

Default target currency is EUR:

You can change the date of the rate:

You can use your own currency file, as long as it has the same format (ECB):

Fallbacks

Some rates are missing:

But we have a fallback mode for those, using a linear interpolation of the closest known rates, as long as you ask for a date within the currency date bounds:

The fallback method can be configured with the fallback_on_missing_rate_method parameter, which currently supports "linear_interpolation" and "last_known" values.

Читайте также: