Kirjautuminen

Haku

Tehtävät

Keskustelu: Koodit: Python: Funktionaalinen ohjelmointi ja Tkinter-kirjasto

koodaaja [02.10.2021 17:05:25]

#

Tämä esimerkki hyödyntää funktionaalista ohjelmointia. Funktionaalisessa ohjelmoinnissa käytetään lambdakalkyylia ja matemaattisia funktioita. Funktionaalinen ohjelmointi on yksi monista ohjelmointiparadigmoista, eli tapa ajatella ohjelmoinnin ongelmia.

Tässä esimerkissä on kolme erilaista toimintoa. Ne ovat merkkijonon lisääminen listaan, tietyn listassa olevan merkkijonon merkkien seuraavan merkin näyttäminen ja oikeanlaisten merkkijonojen suodatus (esim. pituuden tai yksittäisen sisältävän merkin mukaan)

Lisäksi käyttöliittymänä on tkinter-kirjastolla luotu graafinen käyttöliittymä, jossa on neljä erilaista kontrollityyppiä ja kolme kehystä.

Funktionaalisen ohjelmoinnin lisäksi on olemassa esimerkiksi olio-ohjelmointi ja proseduraalinen ohjelmointiparadigma.

from tkinter import *


mjonot = []

def lisaa():
 #Lisätään mjono listaan.
 mjono = syote.get()
 mjonot.append(mjono)

def seuraava():
 global mjonot
 #Muutetaan yksittäisen merkkijonon jokainen merkki seuraavaan merkkiin

 indeksi = int(syote.get())
 mjono = list(map(lambda i: chr(ord(i)+1),mjonot[indeksi]))
 tuloste.config(text=mjono)

def suodata():
 global mjonot
 #Haetaan oikeanlaiset merkkijonot.
 #Ehtona voi olla joko merkki tai pituus
 if (var.get() == 1):
  merkki = syote.get()[0]
  tulos = list(filter(lambda i: merkki in i,mjonot))

 elif (var.get() == 2):
  pituus =int( syote.get())
  tulos = list(filter(lambda i: len(i) == pituus,mjonot))
 tuloste.config(text=str(tulos))


root = Tk()


#Ensimmäiseen kehykseen lisätään näppäimet.
nappaimet = Frame(root)
nappaimet.pack()
#Näppäinten kautta merkkijonoja voidaan lisätä, muuttaa merkit seuraaviksi tai suodattaa pituuden tai sisältävän merkin mukaan.

nappainLisaa = Button(nappaimet,text="Lisää",command=lisaa)
nappainLisaa.pack()

nappainSeuraava = Button(nappaimet,text="Seuraava",command=seuraava)
nappainSeuraava.pack()

nappainSuodata = Button(nappaimet,text="Suodata",command=suodata)
nappainSuodata.pack()

#Toiseen kehykseen lisätään radiobuttonit, joiden kautta ohjataan suodatusta.
valinnat = Frame(root)
valinnat.pack()

var = IntVar()
radioSisaltaa = Radiobutton(valinnat,text="Merkit",variable=var,value=1)
radioSisaltaa.pack()

radioPituus = Radiobutton(valinnat,text="Pituus",variable=var,value=2)
radioPituus.pack()

#Kolmanteen kehykseen lisätään muut kontrollit
kehys = Frame(root)
kehys.pack()

syote = Entry(kehys)
syote.pack()

tuloste = Label(kehys)
tuloste.pack()

root.mainloop()

Vastaus

Muista lukea kirjoitusohjeet.
Tietoa sivustosta