Forum » Programiranje » kalkulator v pythonu
kalkulator v pythonu

ktka ::
Rabim pomoč. Sestavila sem to funkcijo. Pa ne znam sprogramirat da bi delali še ukazi kot so npr.kvadratni koren, kvadriranje, vejica...
-- Zaradi berljivosti prosim uporabljaj st.koda značke. --moderator
from tkinter import *
import math
niz = ''
izraz = []
class Kalkulator(Frame):
def __init__(self):
global rezultat
okno = Tk() #ustvarimo okno
okno.title('Kalkulator') #naslov okna
Frame.__init__(self)
rezultat = Entry()
rezultat.pack(side = TOP) #ustvarimo vnosno okno
#rezultat.pack(side = TOP)
seznamGumbov = ['C',chr(177),chr(8730),'1','2','3','4','5','6','7','8','9','0',',','x^2','%','1/x','(',')']
seznamOperacij = ['+','-','*','/','=']
stolpec = 0
vrstica = 1
#postavitev gumbov v mreži
for x in seznamGumbov:
poteza = lambda y = x: klik(y)
Button(self,text = x,width = 5,relief = 'ridge',command = poteza).grid(row = vrstica,column = stolpec)
stolpec += 1
if stolpec > 2:
stolpec = 0
vrstica += 1
stolpec = 4
vrstica = 1
#postavitev gumbov, na katerih so operacije
for x in seznamOperacij:
poteza = lambda y = x: klik(y)
Button(self,text = x,width = 5,relief = 'ridge',command = poteza).grid(row = vrstica,column = stolpec)
vrstica += 1
#lamda je diskretna funkcija, ki ni definirana kot def(...), ampak
#kot lambda(spremenljivka). Pove kaj naj spremenljivka zavzame
def klik(tipka):
global rezultat,niz,izraz
#z funkcijo global dosežemo, da je spremenljivka poznana v
#celotnem program in ne samo znotraj neke definicije
if tipka == '=':
try:
končniRezultat = rezultat.get() #niz
odgovor = eval(končniRezultat)
rezultat.delete(0,END)
rezultat.insert(0,odgovor)
except:
#končniRezultat = rezultat.get()
#rezultat.itemconfig(rezultat,text = 'nemogoče')
pass
#raise ZeroDivisionError
#rezultat.delete(0,END)
#rezultat.insert(0,'Deljenje z nič ni možno.')
#except:
# rezultat.delete(0,END)
# rezultat.insert(0,'0')
#tipka za brisanje
elif tipka == 'C':
rezultat.delete(0,END)
#tipka za negativno število
elif tipka == chr(177):
if rezultat.get()[0] == '-':
rezultat.delete(0)
else:
rezultat.insert(0,'-')
#ulomek
elif tipka == '1/x':
rezultat.insert(END,'1/')
#kvadratni koren
elif tipka == chr(8730):
rezultat.insert(END,chr(8730)+'(')
niz == '*math.sqrt('
#kvadriranje
elif tipka == 'x^2':
rezultat.insert('^2')
rezultat.get('**2')
#procent
elif tipka == '%':
rezultat.insert(END,'*100')
#vejica
elif tipka == ',':
rezultat.insert(END,',')
#izraz.insert
else:
rezultat.insert(END,tipka)
def spoji(s):
global niz,izračun
for a in izračun:
niz += a
return niz
if __name__ == '__main__':
okno = Kalkulator()
okno.pack()
okno.mainloop()
-- Zaradi berljivosti prosim uporabljaj st.koda značke. --moderator
- spremenil: Mavrik ()

korenje3 ::
šolski projekt?
sicer nimam pojma o pythonu, ampak vidim da dajaš vse podatke v array "rezultat" in potem to spojiš v niz in evaluiraš?
takih reči se je sicer dobro izohibat zaradi ranljivosti kode... v omrežnih sistemih.
Sicer ne vem kako bi to izgledalo, ampak po moje je najbolje če sproti kalkuliraš zadevo v posebni spremenljivki. Sicer potem zna biti problem z oklepaji in rekurzivnostjo s katerim je preveč dela.
tam je problem z math.sqrt( ker potem ne veš kdaj pride zaklepaj. V bistvu je bolje če dodaš samo match.sqrt ter potem ročno še oklepaje oziroma samodejno doda oklepaje, če naslednji znak ni oklepaj.
sicer nimam pojma o pythonu, ampak vidim da dajaš vse podatke v array "rezultat" in potem to spojiš v niz in evaluiraš?
takih reči se je sicer dobro izohibat zaradi ranljivosti kode... v omrežnih sistemih.
Sicer ne vem kako bi to izgledalo, ampak po moje je najbolje če sproti kalkuliraš zadevo v posebni spremenljivki. Sicer potem zna biti problem z oklepaji in rekurzivnostjo s katerim je preveč dela.
tam je problem z math.sqrt( ker potem ne veš kdaj pride zaklepaj. V bistvu je bolje če dodaš samo match.sqrt ter potem ročno še oklepaje oziroma samodejno doda oklepaje, če naslednji znak ni oklepaj.
i9-12900k; 32GB DDR5-6000 CL36; Nvidia RTX 3080 ti;
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Gigabyte Aorus z690 master; Be Quiet Dark Power 12 1000W
Zgodovina sprememb…
- spremenil: korenje3 ()
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | python-rabim pomočOddelek: Programiranje | 2904 (1134) | rnla1973 |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18747 (9495) | black ice |
» | [Python] Tutoriali za začetnika v Notepad++ (strani: 1 2 )Oddelek: Programiranje | 17385 (14479) | black ice |
» | python -slovarOddelek: Programiranje | 3248 (2227) | Valex86 |
» | [Access] iskanje z formom / querijemOddelek: Programiranje | 1394 (1318) | zagy |