"""Téma č. 8 Porovnání dvou čísel"""
while True: # nekonečný cyklus
# kod
try:
a = float(input("Zadej první číslo: ")) # vstup z klávesnice a převod na float
b = float(input("Zadej druhé číslo: ")) # vstup z klávesnice a převod na float
except Exception: # když dojde k výjimce
print ("Špatné zadání, zadej znovu") # výstup
continue # vyskoč z aktuálního cyklu a začni nový
if (a>b):
print ("první číslo je větší") # výstup
else:
print ("druhé číslo je větší") # výstup
odpo = input("Pokračovat? a/n")
if (odpo == "n"):
break # vyskoč z cyklu úplně
print("Konec programu") # konec, po vyskočení z cyklu
- Podrobnosti
- Zobrazení: 227
"""
Program pro zjištění dělitelnosti 2,3, ...
Zadání, výpočet modulo, if zbytek==0, je číslo dělitelné beze zbytku
"""
while True: # nekonečný cyklus
vstup=input("Zadej číslo nebo q pro ukončení programu ") # uživatel zadá číslo
if (vstup=="Q" or vstup=="q"): # if quit, ukončit program
break # ukonci cyklus a i program
try: # ošetření vstupu
cislo = int(vstup) # if uživatel nezadá číslici, dojde k výjimce
except:
print("Špatné zadání, znovu")
continue # nový cyklus
if (cislo%3==0): # kontrola zbytku po dělění
print("Cislo je delitelné 3")
else:
print("Cislo není delitelné 3")
- Podrobnosti
- Zobrazení: 233
"""
Téma č. 11 Rozlišení čísel na lichá/sudá, zadání z klávesnice za použití nekonečného cyklu
"""
while True: # nekonečný cyklus
try:
a = int(input("Zadej celé číslo: ")) # vstup z klávesnice a převod na int
except Exception: # když dojde k výjimce
print ("Špatné zadání, zadej znovu") # výstup
continue # vyskočí z aktuálního cyklu a začni nový
if (a%2==0): # je zbytek po dělení dvěma rovný nule?
print ("Číslo je sudé") # výstup
else:
print ("Číslo je liché") # výstup
odpo = input("Pokračovat? a/n")
if (odpo == "n"):
break # vyskoč z cyklu úplně
print("Konec programu") # konec
- Podrobnosti
- Zobrazení: 243
"""Téma č. 17 Nalezení prvku s nejmenším číslem v seznamu"""
seznam = [11,22,33,44,0,258,999,1000,23,-24,9,-3,4,6] # např.
#nejv = float("inf") # do proměnné dám nejv číslo, tj. každé číslo bude menší než toto NEBO
nejm = seznam[0] # možná varianta- buď bude nejmenší toto číslo, nebo jiné v seznamu
# prohédnu celý seznam
for i in range(0,len(seznam)): # projde všechny prvky seznamu
if seznam[i]<nejm: # if je nejaky prvek < nejm, přiřaď ho do nejm
nejm = seznam[i]
print(seznam) # vytiskne seznam
print("Nejmenší číslo je : ",nejm) # vytiskne nejmenší číslo seznamu
- Podrobnosti
- Zobrazení: 225
""" Téma č. 6 Vyhodnocení diskriminantu kvadratické rovnice"""
while 1: # nekonečný cyklus
try: # ošetřím výjimky - mohou nastat při převodu na float
a = float(input("a: ")) # ax2 + bx + c =0
b = float(input("b: "))
c = float(input("c: "))
break # správné zadání, vyskoč z cyklu
except Exception:
print("Chyba zadání ", Exception)
continue # na začátek cyklu
break # když nejdojde k výjimce, je zadání v proměnných
# ukončí cyklus
D = b**2 - (4*a*c) # výpočet D
# vyhodnocení
if (D > 0):
print("2 kořeny")
elif(D == 0):
print("1 dvojnásobný kořen")
else:
print("Nema reseni v oboru reálných cisel")
- Podrobnosti
- Zobrazení: 221
""" Téma č. 13 nový seznam pouze sudých/lichých čísel ze zadaného seznamu"""
seznam = [1,2,3,4,5,6,7,8,9,10,11,12] # příklad zadaného seznamu
suda_seznam = [] # prázdný seznam sudých
for i in range(len(seznam)): # prochází seznam
if(seznam[i]%2 == 0): # if modulo dva = 0, je sudé
suda_seznam.append(seznam[i]) # přidej do seznamu sudých
print(suda_seznam)
- Podrobnosti
- Zobrazení: 235
"""
Téma č. 15 Výměna m-tého a n-tého prvku v seznamu, zadání seznamu z klávesnice
budeme zadávat seznam z řetězců, nepřevádíme vstup (ale můžeme, jde to s libovolnými datovými typy
"""
seznam =[] # vytvoříme prázdný seznam
dale ="a" # proměnná musí existovat před testem v cyklu
while dale != "n": # opakuj dokud neodpoví zadavatel n
# kod zadávání
prvek_seznamu = input("Zadej prvek seznamu a stiskni enter: ")
seznam.append(prvek_seznamu)
dale = input("Pokračovat? a/n: ") # chceme ještě dále zadávat?
# výměna prvků, šlo by i čísla prvků zadávat ze vstupu
print("Seznam před výměnou prvků: ",seznam) # seznam před výměnou prvků
pomocna = seznam[0] # první prvek umístím do pom. proměnné
seznam[0] = seznam[1] # na pozici 0 přiřadím prvek z pozice 1
seznam[1] = pomocna # na pozici 1 dám prvek z pomocné prom.
print("Seznam po výměně prvků: ",seznam) # seznam po výměně prvků
print("Konec programu") # konec
- Podrobnosti
- Zobrazení: 236
""" Téma č. 25 Program pro zašifrování a dešifrování slova zadaného z klávesnice"""
slovo = input("Zadej slovo: ")
klic =int(input("Zadej klíč: "))
def sifr(slovo,klic):
sifra = ""
for i in range(len(slovo)): # projde všechny znaky slova, lze zapsat i jinak
sifra+=(chr(ord(slovo[i])+klic)) # příslušný znak slova převede na jeho číselnou reprezentaci a přičte klíč
# potom nové číslo převede zpět na znak a připojí znak k řetězci
return sifra # funkce vrátí zašifrované slovo
def desifr(sifra,klic):
slovo = ""
for i in range(len(sifra)): # projde všechny znaky slova
slovo+=(chr(ord(sifra[i])-klic)) # příslušný znak slova převede na jeho číselnou reprezentaci a odečte klíč
# potom nové číslo převede zpět na znak a připojí znak k řetězci
return slovo # funkce vrátí dešifrované slovo
print(sifr(slovo,klic)) # volání funkce, vytiskne zašifrované slovo
print(desifr(sifr(slovo,klic),klic)) # volání funkce, vytiskne dešifrované slovo
# pozn. slovo, sifra, klic se vyskytuje v programu vícekrát, ale mohou to být různé proměnné
- Podrobnosti
- Zobrazení: 223
Řadicí algoritmus. Cílem je seřadit zadaný seznam dle velikosti.
"""
Select sort
Vybere vždy ze zbytku největší prvek a ukládá je vlevo na začáek zbytku.
"""
seznam = [12,13,1,25,13,16,1,8,2] # např.
print("neseřazeno:")
print(seznam)
for i in range (0,len(seznam)-1): # prochází celý seznam-1, poslední prvek netřeba řadit
maxindex= i # index-pozice, na kterém je největší prvek
for j in range (i+1,len(seznam)): # prochází neseřazený zbytek seznamu od i+1 a vybírá největší prvek
if (seznam[j] > seznam[maxindex]): # if prvek na indexu j > prvek na maxindexu
maxindex=j # dej na maxindex(pozici největšího prvku) největší prvek
# potom přehodí řazený prvek, který je na pozici maxindex, na pozici i
tmp = seznam[i] # nakonec prohoď prvky, prvek na indexu i odlož
seznam[i]=seznam[maxindex] # na přední místo dej prvek na maxindexu
seznam[maxindex]=tmp # do zbytku seznamu na maxindexu dej původní prvek na indexu i
print("seřazeno:")
print(seznam) # vytiskne seřazený seznam
- Podrobnosti
- Zobrazení: 229
Řadicí algoritmus. Cílem je seřadit zadaný seznam dle velikosti.
"""
Insert sort
Vezme následující prvek a vkládá ho na příslušnou správnou pozici seřazené části seznamu vlevo.
"""
seznam = [12,13,1,25,13,16,1,8,2] # např.
print("neseřazeno:")
print(seznam)
for i in range (0,len(seznam)-1): # prochází celý seznam -1
j=i+1 # vezme další prvek po prvních seřazených, na začátku je to druhý prvek
tmp = seznam[j] # umístí ho do pom. proměnné
# v cyklu vytvořím místo a uloží nový prvek v tmp na správné místo
while j>0 and tmp>seznam[j-1]: # dokud není zleva na začátku, uvolní místo hodnotě
seznam[j]=seznam[j-1] # posouvá prvky doprava, dokud řazený prvek je menší, než stávající
j=j-1 # sníží proměnnou cyklu
seznam[j]=tmp # řazený prvek, který je v tmp uloží o jeden dopředu
print("seřazeno:")
print(seznam)
- Podrobnosti
- Zobrazení: 217
Řadicí algoritmus. Cílem je seřadit zadaný seznam dle velikosti.
"""
Bubble sort
Porovnává dva sousední prvky a větší řadí vlevo, "nějvětší postupně probublává"
"""
seznam = [12,13,1,25,13,16,1,8,2] # např.
print("neseřazeno:")
print(seznam)
for i in range(0,len(seznam)-1): # prochází celý seznam ikrát - kolik je prvků-1(poslední cyklus by neměl význam)
for j in range (0,len(seznam)-1-i): # jeden průchod - vnitřní cyklus, zkrátí se o seřazenou část
if (j<len(seznam)-1): # musím ošetřit délku seznamu, abych neměl j+1 mimo seznam
if (seznam[j] < seznam[j+1]): # if pravý prvek>levý, prohoď
tmp=seznam[j] # prohoď dva sousední prvky
seznam[j]=seznam[j+1]
seznam[j+1]=tmp
print("seřazeno:")
print(seznam)
- Podrobnosti
- Zobrazení: 221
"""Téma č. 5 Tkinter, Canvas, zobrazení základních geometrických tvarů"""
import tkinter # nahraji knihovnu grafických funkcí
okno = tkinter.Tk() # vytvořím moje okno, instance třídy Tk
platno = tkinter.Canvas(width="800", height="600",background="yellow") # vytvořím plátno
platno.pack() # umístím plátno do okna
platno.create_line(10,15,200,230, fill="red", width=5) # nakreslím úsečku, barva červená
platno.create_rectangle(100,150,300,400, fill = "white", outline="blue", width=10) # obdélník
#fill = výplň, outline = obrys, width = šířka obrysu
platno.create_oval(10,10,200,500) # elipsa pomyslně vepsaná do zadaného obdélníku
platno.create_polygon(10,10,30,90,50,60,10,10) # v tomto případě trojúhelník - 3 úsečky
platno.create_text(100,100,text="AHOJ", font="Arial 10") # text, souřadnice jsou na střed textu
# u textu mohu zadat další parametry - např. font="Arial 40 bold, fill="blue"
okno.mainloop() # hlavní smyčka
- Podrobnosti
- Zobrazení: 242
""" Téma č. 2 převod čísla z desítkové do dvojkové soustavy"""
desitkove=int(input("Zadej desítkové číslo: ")) # vstup, převod na int
dvojkove="" # výstup - dvojkové číslo, na začátku prázdný řetězec
while (desitkove>=1): # cyklus dokud není zbytek<1
zbytek = desitkove%2 # vypočítám zbytek
desitkove = desitkove//2 # vypočítám nové číslo pro delění 2
dvojkove = str(zbytek)+dvojkove # spojuji do řetezce
print(dvojkove) # tiskne výsledek
- Podrobnosti
- Zobrazení: 229
""" Téma 12 Vytvořte generátor pěti náhodných čísel z rozsahu zadaného vstupem"""
import random # modul s funkcemi pro náhodná čísla
# zadání rozsahu
min = int(input("Zadej minimální číslo: ")) # vstup z klávesnice a převod na int
max = int(input("Zadej maximální číslo: ")) # vstup z klávesnice a převod na int
# vygenerujeme seznam
seznam=[] # vytvoříme prázdný seznam
for i in range(5): # rozsah 0 až 5, tj. 5 prvků (cyklus pro 0,1,2,3,4)
seznam.append(random.randrange(min,max+1)) # do prázdného seznamu přidá náh. číslo
print(seznam) # vytiskne hotový seznam
- Podrobnosti
- Zobrazení: 245
""" Téma č. 18 Tkinter - Rozmístění prvků v okně pomocí grid() a pack()
příklad pack()
"""
import tkinter
import tkinter.ttk # nebo novější prvky label....
root =tkinter.Tk() # vytvoř okno
label_1 = tkinter.ttk.Label(root, text="Hello world!",background="blue")
label_2 = tkinter.ttk.Label(root, text=" AHOJ ")
canvas= tkinter.Canvas(width=500,height=500,background="red")
label_1.pack() # label 1 v okně
label_2.pack() # label 1 v okně, další prvek pod první
canvas.pack() # canvas v okně, další prvek pod druhý
root.mainloop() # hlavní smyčka programu
- Podrobnosti
- Zobrazení: 217
""" Téma č. 18 Tkinter - Rozmístění prvků v okně pomocí grid() a pack()
"""
import tkinter
import tkinter.ttk # nebo novější prvky label....
root =tkinter.Tk() # vytvoř okno
label_1 = tkinter.ttk.Label(root, text="Hello world!",background="blue")
label_2 = tkinter.ttk.Label(root, text=" AHOJ ")
canvas= tkinter.Canvas(width=500,height=500,background="red")
label_1.grid(column=1, row=1) # label 1 v pomyslné mřížce sloupec, řádek
label_2.grid(column=2, row=2) # label 1 v pomyslné mřížce sloupec, řádek
canvas.grid(column=2, row=1) # canvas v pomyslné mřížce sloupec, řádek
root.mainloop() # hlavní smyčka programu
- Podrobnosti
- Zobrazení: 244
""" Téma č. 14 ovládací prvky GUI
Vytváříme instance tříd Label, Button, Entry...
Při vytváření instance můžeme předat argumenty např. text, background atd.
U tlačítka zadáme i jméno fce, která bude volána (command=tiskni).
U Entry, příp. jiných prvků můžeme nastavit proměnnou, pomocí které budeme hodnotu prvku číst/nastavovat (metoda get a set).
Proměnná je spec. typu a je ji třeba deklarovat před použitím. U Entry použijeme proměnnou typu StringVar.
"""
import tkinter
#import tkinter.ttk
okno = tkinter.Tk() # vytvořím okno
def konec(): # funkce ukončí okno
okno.quit()
print("konec") # do terminálu
hodnota_text = tkinter.StringVar() # proměnná je instance StringVar
def tiskni_entry():
print(entry1.get()) # získáme obsah proměnné textboxu, volá metodu get()
def nastav_entry():
entry1.set("AHOJ") # nastavím obsah textboxu, volá metodu set()
label1 = tkinter.Label(okno,text="Toto je nápis č. 1", background="red") # vytvoření instance
label1.pack() # umístění do okna
label2 = tkinter.Label(okno,text="Zadej text", background="yellow") # vytvoření instance
label2.pack() # umístění do okna
entry1 = tkinter.Entry(okno, textvariable=hodnota_text)
entry1.pack()
button_nast=tkinter.Button(okno, text="Nastav text Ahoj do entry", background="yellow", command=nastav_entry) # vytvoření instance
button_nast.pack() # umístění do okna
button_konec=tkinter.Button(okno, text="Konec programu", background="green", command=tiskni_entry) # vytvoření instance
button_konec.pack() # umístění do okna
canvas=tkinter.Canvas(background="blue")
canvas.pack()
okno.mainloop() # spustím hlavní smyčku
Pěkné vysvětlení je na http://tkinter.py.cz/python_tkinter.html
- Podrobnosti
- Zobrazení: 224
""" Téma č. 19 Tkinter - Tvorba nabídek"""
import tkinter
# funkce, které přiřadíme v command
def test():
print("Test!")
def konec():
root.quit()
root = tkinter.Tk() # vytvoříme okno jako instanci třídy Tk, nazveme ho root
# vytvoříme instanci menu - pás, lištu umístíme v okně root
menubar = tkinter.Menu(root)
root.config(menu=menubar) # voláme metodu okna config() a nastavíme její proměnnou menu na menubar
# do tohoto pásu nabídek vytvoříme "kaskádu" položek menu
# nyní vytváříme instance menusoubor, menuedit, menuhelp... v menubar
menusoubor = tkinter.Menu(menubar) # vytvoříme menu File jako instance menu v menubaru
menubar.add_cascade(label="File",menu=menusoubor) # přidáme do menu, zavoláme metodu add_cascade(), přiřadíme název a menu
menuedit = tkinter.Menu(menubar) # menu Edit
menubar.add_cascade(label="Edit",menu=menuedit ,underline=0) # underline - 1.znak je E pro Alt_e
menuhelp = tkinter.Menu(menubar) # menu Help
menubar.add_cascade(label="Help",menu=menuhelp)
# do těchto rozbalovacích nabídek přidáme položky metodou add_command (to už nejsou menu)
menusoubor.add_command(label="Otevřít",command=test) # přiřadíme fci, pouze název fce (nevoláme ji)
menusoubor.add_command(label="Uložit",command=konec)
menusoubor.add_command(label="Uložit jako")
menusoubor.add_command(label="Konec",command=konec)
# zvýraznění - horké klávesy např. zde Alt-D
menuedit.add_command(label="Další",underline=0, command=test) # underline - 1.znak je D pro zkratku Alt_d
root.mainloop() # hlavní smyčka programu
- Podrobnosti
- Zobrazení: 216