Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 30, 2018 17:37:13

vasz
Зарегистрирован: 2018-01-30
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите найти ошибку

здравствуйте, недавно начал изучать питона и решил создать простой калькулятор, но в конце столкнулся с непонятной проблемой. ИДЛЕ не выдает никаких ошибок при запуске, но числа почему-то не вводятся в строку вывода. Буду благодарен любому стоящему совету. Код прикреплен

Прикреплённый файлы:
attachment calcdd.py (1,0 KБ)

Офлайн

#2 Янв. 30, 2018 21:09:08

rami
Зарегистрирован: 2018-01-08
Сообщения: 281
Репутация: +  72  -
Профиль   Отправить e-mail  

Помогите найти ошибку

Нажатие на кнопки калькулятора передаёт в функцию calc(key) соответствующий параметр, у вас функция обрабатывает только нажатие кнопок “=” и “C”, остальные пролетают. Ещё есть опечатки. Сравните (сделал другое расположение кнопок):

 from tkinter import Tk,messagebox,Button,Entry
str1='-+0987654321.**/'
bl=['1','2','3','+','4','5','6','-','7','8','9','*','0','.','**','/','','','C','=']
root = Tk()
root.title('Калькулятор')
#logical part of calc
def calc(key):
    if key in str1:
        calc_entry.insert('end',key)
    if key == '=':
    #off letter write 
        try:
            result=eval(calc_entry.get())
            calc_entry.insert('end','=' +str(result))
        except:
            calc_entry.insert('end','   ERROR!!')
    #clean field
    elif key == 'C':
        calc_entry.delete(0,'end')
c,r=0,1
for i in bl:
    cmd = lambda x=i: calc(x)
    Button(root,font='Arial 18',text=i,command=cmd).grid(row=r,column=c)
    c+=1
    if c>3:
        c,r=0,r+1
calc_entry = Entry(root) #,width=33)
calc_entry.grid(row=0,column=0,columnspan=4)
root.mainloop()

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version