Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Разное тестирование > написал программу по обмену валют!


Автор: RM2010 9.3.2010, 17:17
В учебных целях написал программу по обмену валют, если кому пригодиться в виде пособия - милости прошу!

user posted image

Код

from tkinter import *
import urllib.request

###################################### Подключаемся к нету, узнаём курсы валют! ##################
page = urllib.request.urlopen('https://ib.swedbank.lv/private/d2d/payments/rates/currency')
text = page.read().decode('utf8')
lvl=1
eur=text[text.find('EUR&nbsp')+55:text.find('EUR&nbsp')+62]
usd=text[text.find('USD&nbsp')+61:text.find('USD&nbsp')+68]
rur=text[text.find('RUB&nbsp')+67:text.find('RUB&nbsp')+74]
##################################################################################################


app = Tk() # создаём основное окно
app.title("Currency Calculator")
app.geometry('302x355+600+350')

carselect1 = StringVar() # создаём переменную для выбора валют Nr1
carselect2 = StringVar() # создаём переменную для выбора валют Nr2
carselect1.set('LVL') # валюта Nr1 = LVl
carselect2.set('EUR') # валюта Nr2 = EUR
incar = StringVar() # создаём переменную для ввода суммы валюты Nr1
outcar = StringVar() # создаём переменную для вывода суммы валюты Nr2
incar.set(1) # сумма валюту Nr1 = 1

def calculate():
    try:
        x = int( incar.get() )
        if carselect1.get() == 'LVL': c1 = float(lvl)
        if carselect1.get() == 'EUR': c1 = float(eur)
        if carselect1.get() == 'USD': c1 = float(usd)
        if carselect1.get() == 'RUR': c1 = float(rur)
        if carselect2.get() == 'LVL': c2 = float(lvl)
        if carselect2.get() == 'EUR': c2 = float(eur)
        if carselect2.get() == 'USD': c2 = float(usd)
        if carselect2.get() == 'RUR': c2 = float(rur)
        res = (x*c1)/c2
        print(x,'*',c1,'/',c2,'=',res)
        outcar.set(round(res,4))
    except:
        print("Error, wrong format!")

Entry(app,textvar=incar).grid(row=1, column=1, padx=10, pady=10)
Label(app, text = '=').grid(row=1, column=2)
Entry(app,textvar=outcar).grid(row=1, column=3, padx=10, pady=10)

curlist = ['LVL','EUR','USD','RUR'] 
OptionMenu(app,carselect1,*curlist).grid(row=2, column=1, padx=10, pady=10)
OptionMenu(app,carselect2,*curlist).grid(row=2, column=3, padx=10, pady=10)

Button(app, text = "   Calculate!   ", command = calculate ).grid(row=3, column=1, padx=10, pady=10)

biglist = Listbox ( app  )
biglist.grid(row=4, column=1, padx=10 ,pady=15)
biglist.insert(END, "LVL = "+str(lvl))
biglist.insert(END, "EUR = "+eur)
biglist.insert(END, "USD = "+usd)
biglist.insert(END, "RUR = "+rur)

calculate()

app.mainloop()


Автор: wester 9.3.2010, 21:42
продвинутый вариант:
при запуске программа парсит сайт где опубликованы актуальные курсы валют и записывает в свои данные для расчетов

и сделай что нибудь с GUI : он ужасен

а еще неплохо было бинарник опубликовать - компилировать желания нет

Автор: RM2010 9.3.2010, 21:48
Цитата
при запуске программа парсит сайт где опубликованы актуальные курсы валют и записывает в свои данные для расчетов


так это уже есть, см. начало кода. smile


Код
page = urllib.request.urlopen('https://ib.swedbank.lv/private/d2d/payments/rates/currency') # забрались на страничку
text = page.read().decode('utf8') # присвоили её содержание переменной text.
lvl=1 # основная валюта = 1 ( та, по отношению к которой идут курсы на страничке )
eur=text[text.find('EUR&nbsp')+55:text.find('EUR&nbsp')+62] # находим в содержании странички информацию о курсе евро, присваиваем переменной eur.
usd=text[text.find('USD&nbsp')+61:text.find('USD&nbsp')+68] # то же для доллара
rur=text[text.find('RUB&nbsp')+67:text.find('RUB&nbsp')+74] # и рубля...

Автор: wester 9.3.2010, 21:52
ага, вижу. извиняюсь за невнимательность smile
тогда хотелось бы что бы она эти данные записывала куда - то. А то интернет отключат за неуплату , а я даже не буду знать сколько долларов поменять что бы оплатить smile

Автор: RM2010 9.3.2010, 23:37
Готово! smile Какие бы функции еще добавить?

Код

###################################### Подключаемся к нету, узнаём курсы валют! ##################

try:
    lvl=1
    page = urllib.request.urlopen('https://ib.swedbank.lv/private/d2d/payments/rates/currency')
    text = page.read().decode('utf8')
    eur=text[text.find('EUR&nbsp')+55:text.find('EUR&nbsp')+62]
    usd=text[text.find('USD&nbsp')+61:text.find('USD&nbsp')+68]
    rur=text[text.find('RUB&nbsp')+67:text.find('RUB&nbsp')+74]
    print('Exchange rate retrieved! %s EUR, %s USD, %s RUR' % (eur,usd,rur))

    readfile = open("exchrate.txt","w")
    readfile.write("%s\n" % eur )
    readfile.write("%s\n" % usd )
    readfile.write("%s\n" % rur )
    readfile.close()   
    
except:
    try:
        print('Failed to retrieve exchange rate!')
        print('will attempt to read from fime!')
        readfile = open("exchrate.txt") 
        eur = readfile.readline()
        usd = readfile.readline()
        rur = readfile.readline()
    except:
        print('File unavailable!')

##################################################################################################


Автор: RM2010 10.3.2010, 00:14
Вот и интерфейс в PyQt4 набросал. Пока еще не знаю, как его с кодом в питоне соединить... завтра буду разбираться!

user posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)