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 | 2775 (1005) | rnla1973 |
» | Python - pomoč (strani: 1 2 3 )Oddelek: Programiranje | 18035 (8783) | black ice |
» | [Python] Tutoriali za začetnika v Notepad++ (strani: 1 2 )Oddelek: Programiranje | 16314 (13408) | black ice |
» | python -slovarOddelek: Programiranje | 3123 (2102) | Valex86 |
» | [Access] iskanje z formom / querijemOddelek: Programiranje | 1334 (1258) | zagy |