====== Den 2 ====== ==== Opakování ==== # Vojta # revize riskoana utrata = int(input("Zadejte vasi utratu: ")) if (utrata >= 0): padesat = utrata//50 zbytek = utrata%50 dvacet = zbytek//20 zbytek = zbytek%20 deset = zbytek//10 zbytek = zbytek%10 pet = zbytek//5 zbytek = zbytek%5 dva = zbytek//2 zbytek = zbytek%2 jedna = zbytek celkem = padesat+dvacet+deset+pet+dva+jedna print("Celkem je potreba " + str(celkem) + " minci") print("Pocet minci o hodnote 50 Kc:", padesat) print("Pocet minci o hodnote 20 Kc:", dvacet) print("Pocet minci o hodnote 10 Kc:", deset) print("Pocet minci o hodnote 5 Kc:", pet) print("Pocet minci o hodnote 2 Kc:", dva) print("Pocet minci o hodnote 1 Kc:", jedna) else: print("Přestaň chlastat, píšeš pak nesmysly") === Alternativa s rozšířením === Možná by bylo hezké používat trochu míň proměnných, jako v následujícím řešení, kde je oštetřeno i nevypisování nulových hodnot. # riskoana utrata = int(input("Zadejte vasi utratu: ")) if (utrata >= 0): celkem = 0 a = utrata//50 celkem +=a utrata %= 50 if a != 0: print("Pocet minci o hodnote 50 Kc:", a) a = utrata // 20 celkem += a utrata %= 20 if a != 0: print("Pocet minci o hodnote 20 Kc:", a) a = utrata // 10 celkem += a utrata %= 10 if a != 0: print("Pocet minci o hodnote 10 Kc:", a) a = utrata // 5 celkem += a utrata %= 5 if a != 0: print("Pocet minci o hodnote 5 Kc:", a) a = utrata // 2 celkem += a utrata %= 2 if a != 0: print("Pocet minci o hodnote 2 Kc:", a) celkem += utrata if utrata != 0: print("Pocet minci o hodnote 1 Kc:", utrata) if celkem != 0: print("Celkem je potreba ", celkem, " minci") else: print("Setris a neutracis, jo?") else: print("Zaporna utrata? Asi ti nekdo dluzi ;)") ---- ===== For cyklus ===== ==== Rozcvička ==== # riskoana # revision: kubikji2 n = int(input("Zadej prirozene cislo N: ")) if n > 0: ########################## print("Bod 1") for i in range(n): print("Ahoj") ########################## print("Bod 2") for i in range(0, n): print (i) ########################## print("Bod 3 var 1.") for i in range(0, n+1): print (i) print("Bod 3 var 2.") for i in range(0, n+1): print (i) ########################## print("Bod 4") for i in range(n, 0, -1): print (i) ########################## print("Bod 5 var 1.") for i in range(n, -1, -1): print (i) print("Bod 5 var 2.") for i in range(n, 0, -1): print (i) print(0) else: print("Co delat se zapornym cislem nebo nulou?") ---- ==== Úkol 0 ==== # riskoana # revision: kubikji2 n = int(input("Zadej nejvyssi prirozene cislo serie: ")) if n > 0: for i in range(1, n + 1): print(str(i)) else: print("S nekladnymi cisly zde nepracujeme, doprogramuj si to, jestli chces ;)") ---- ==== Úkol 1 ==== # Vojta # revision: riskoana, kubikji2 n = int(input("Zadej prirozene cislo N: ")) if n > 0: for i in range(1, n): print (str(i) + ", ", end='') print (n) else: print("Bylo zadano nekladne cislo.") ---- ==== Úkol 2 ==== # Vojta # revision: riskoana, kubikji2 n = int(input("Zadej prirozene cislo N: ")) if n > 0: for i in range(n, 1, -1): print (str(i) + ", ", end='') print ("1") else: print("Nebylo zadano kladne cislo.") ---- ==== Úkol 3 ==== # riskoana # revision: kubikji2 n = int(input("Zadejte cele cislo: ")) sum = 0 for i in range(0, n+1): sum += i print("Soucet cisel je: ", sum) ---- === Rozšíření 3.1 === # riskoana # revision: kubikji2 x = int(input("Zadejte prvni cele cislo serie: ")) y = int(input("Zadejte posledni cele cislo serue: ")) Sum = 0 for i in range(x, y+1): Sum += i print("Součet je: ", Sum) # LR a1 = int(input("Zadejte prvni cislo: ")) a2 = int(input("Zadejte druhe cislo: ")) sum = 0 if a1 < a2: for i in range(a1,a2+1): sum += i elif a1 > a2: for i in range(a2,a1+1): sum += i else: sum = 2*a1 print("Soucet cíel je:", sum) ---- ==== Úkol 4 ==== # Vojta # revision: riskoana, kubikji2 faktorial = int(input("Zadejte cislo na faktorizaci: ")) if (faktorial >= 0): if faktorial == 0: print("n! = 1") else: vysledek = faktorial for i in range (faktorial-1, 0, -1): vysledek = vysledek*i print("n! = ", vysledek) else: print("Pro zaporna cisla neni faktorial definovan.") # LR Faktorial = int(input("Zadejte cislo na faktorizaci: ")) if Faktorial > 0: vysledek = Faktorial for i in range (Faktorial-1, 0, -1): vysledek = vysledek*i print("n! = ", vysledek) elif Faktorial == 0: print("n! = 0") else: print("Pro zaporna cisla neni faktorial definovan.") ---- ==== Úkol 5 ==== # riskoana # revision: kubikji2 n = int(input("Napiste prirozene cislo: ")) if (n < 1): print("Zkus kladne cislo.") elif (n == 1): print("1 neni prvocislo.") else: for i in range (2, n): if (n%i == 0): break # pokud jsme dojeli na konec for-cyklu (i je n-1) a nenasli # jsme zadne cislo, ktere deli n, tak jde o prvocislo if i == n-1: print('{} je prvocislo.'.format(n)) else: print("Cislo " + str(n) + " je slozene cislo.") === Úkol 5 alternativní řešení === elegantnější řešení pro ty, kdo chtějí optimalizovat # riskoana # revision: kubikji2 n = int(input("Napiste prirozene cislo: ")) s = int(n**(1/2)+1) # s jako square root # tento konstrukt zajistí, že prověřujete čísla jen do maximálního možného, kterým dané číso může být dělitelné # možno taky použít # s = int(math.sqrt(n)+1) # nebo # s = math.ceil(math.sqrt(n)), kde ceil je zaokrouhlování nahoru if n < 1: print("S timto cislem si neumim poradit. ¯\_(ツ)_/¯") else: # kontrolní proměnná, podle které se na závěr rozhodne, jestli je dané číslo prvočíslem checker = False if n == 1: checker = True else: for i in range (2, s): if n%i == 0: # pokud je zbytek po dělení 0, číslo není prvočíslem checker = True break if checker: # stejné jako 'if checker == True' print("Cislo neni prvocislem.") else: print("Jde o prvocislo.") ---- /* ==== Úkol 5 ==== # Vojta b = input("Zadejte cislo ve dvojkove soustave: ") hodnota = 0 for i in range (0, len(b)): hodnota += int(b[i])*2**(len(b)-i-1) print("Cislo v desitkove soustave ma hodnotu", hodnota) ---- */ ===== Vnořené cykly ===== ==== Úkol 0 ==== # riskoana vyska = int(input("Zadejte vysku: ")) sirka = int(input("Zadejte sirku: ")) if vyska > 0 and sirka > 0: for i in range(0, vyska): for j in range(0, sirka): print("*", end="") print() else: print("Nekladne rozmery? Delas si srandu?") ---- ==== Úkol 1 ==== # riskoana x = int(input("Zadejte x: ")) y = int(input("Zadejte y: ")) if x > 0 and y > 0: for i in range(y): for j in range(x): print("[" + str(j) + "," + str(i) + "]", end="") print() else: print("Vstup neni validni, tak sorry no (╯°□°)╯︵ ┻━┻") ---- ==== Úkol 2 ==== # riskoana velikost = int(input("Zadej velikost ctverce: ")) if (velikost > 1): for a in range (0, velikost): for b in range (0, velikost): if (a == b) or (a + b == velikost - 1): print("1", end=" ") else: print("0", end=" ") print() else: print("Poprosim o nejake validni cislo.") # LR strana = int(input("Zadejte stranu ctverce: ")) if x > 0: for i in range(strana): for j in range(strana): if i == j or i+j+1 == strana: print("1", end=" ") else: print("0", end=" ") print() else: print("Strana ctverce musi byt kladne cislo.") ---- ==== Úkol 3 ==== # riskoana n = int(input("Zadej velikost obrazce: ")) if (n > 1): for i in range (1, n+1): for j in range (0, i): print("X ", end="") print() else: print("Poprosim o nejake validni cislo.") ---- ==== Úkol 4 ==== # kubikji2, riskoana size = int(input("Zadej velikost: ")) for i in range(0, size): # vypis tolik mezer, kolikaty mame radek # (nejhornejsi radek je nulty) for j in range(0, i): print(" ", end="") # zbytek radku vypln "X" for j in range(0,size-i): print("X ", end="") print("") ---- === Úkol 4 alternativní řešení === # kubikji2 N = int(input("Zadejte velikost: ")) for y in range(N): for x in range(N): # x == y je hlavni diagonala, x > y jsou body nad hlavni diagonalou if x >= y: print("X ", end="") else: print(" ", end="") print() ---- ==== Úkol 5 ==== # riskoana n = int(input("Zadej velikost obrazce: ")) if (n > 1): for k in range(n): print("X", end="") print() for i in range(n-2): print("X", end="") for j in range(n-2): print(" ", end="") print("X") for l in range(n): print("X", end="") else: print("Poprosim o nejake validni cislo.") === Úkol 5 alternativní řešení === # kubikji2 N = int(input("Zadejte velikost: ")) for y in range(N): for x in range(N): # x == 0 je svisla leva cara # x == N-1 je svisla prava cara # y == 0 je vodorovna horni cara # y == N-1 je vodorovna dolni cara if (x == 0) or (x == N-1) or (y == 0) or (y == N-1): print("X ", end="") else: print(" ", end="") print() ==== Úkol 6 ==== # author kubikji2 N = int(input("Zadejte velikost: ")) for y in range(N): for x in range(N): # x == 0 je svisla leva cara # x == N-1 je svisla prava cara # y == 0 je vodorovna horni cara # y == N-1 je vodorovna dolni cara if (x == 0) or (x == N-1) or (y == 0) or (y == N-1): print("X ", end="") # x == y je hlavni diagonala # x == (N-1) - y je vedlejsi diagonala elif (x == y) or (x == N-1-y): print("X ", end="") else: print(" ", end="") print() ---- ==== Úkol 7 ==== # LR prvocisla = int(input("Zadejte číslo: ")) if prvocisla > 2: print(2) for i in range(2, prvocisla): for j in range(2, i): if i%j == 0: break if j == i-1: print(str(i)) # riskoana # revision: kubikji2 max_n = int(input("Napiste cele cislo: ")) if max_n < 1: print("Tak to zkusime znova, jo?") else: for n in range(2, max_n): s = int(n**(1/2)+1) checker = False if n == 1: checker = True else: for i in range(2, s): if n % i == 0: checker = True break if checker: continue else: print(n) ---- ===== Práce s textovým řetězcem ===== ==== Úkol 1 ==== # riskoana # revision: kubikji2 # textovy retezec ... txt = input("Zadej cele cislo k rozdeleni: ") # ... a jeho delka n = len(txt) # finalni vypis for i in range(n): # na kazde treti misto od konce chceme pridat mezeru ... # ... a zaroven nas nezajima prvni misto (pripad delky delitelne 3) if (n-i) % 3 == 0 and i > 0: print(" ", end="") # vypis znaku print(txt[i], end="") # zaverecne zalomeni print() ---- ==== Úkol 2 ==== # LR cenzura = input("Zdejte text k cenzurování: ") cisla = "0123456789" for i in cenzura: if i in cisla: print("*", end="") else: print(i, end="") # riskoana # revision: kubikji2 text = input("Zadej text k cenzure: ") digits = "0123456789" for i in range(len(text)): isNum = False for j in range(len(digits)): if text[i] == digits[j]: isNum = True # kdyz je cislo, prihod cenzuru... if isNum: print("*", end="") # ... jinak vypis znaku else: print(text[i], end="") # finalni vypis zalomeni radku print() ---- ==== Úkol 3 ==== # riskoana text = input("Zadejte text: ") slova = 1 for i in range(len(text)): if text[i] == " ": slova +=1 print("znaky: " + str(len(text)) + ", slova: " + str(slova)) ---- ==== Úkol 4 ==== # riskoana bin = input("Zadejte cislo ve dvojkove soustave: ") dec = 0 for i in range(len(bin)): if int(bin[i]) == 1: dec += 2 ** (len(bin) - i - 1) print("Cislo v desitkove soustave ma hodnotu:", dec) ---- ===== Volitelné ===== ==== Úkol 1 ==== # riskoana n = int(input("Zadejte prirozene cislo: ")) a = 1 #první 3 členy posloupnosti b = 1 c = 2 if n < 1: print("Tak delas si ze me srandu nebo...?") elif n == 1: print(a) elif n == 2: print(b) else: for i in range(1, n-2): a=b b=c c=a+b print(c) ---- #vinkltob N = int(input()) if N == 0: print(0) elif N == 1: print(1) else: a = 0 b = 1 for i in range(N-1): c = a + b a = b b = c print(c) ==== Úkol 2 ==== # Vojta, fixed by LaSer a = int(input("Zadej prirozene cislo a: ")) b = int(input("Zadej prirozene cislo b: ")) for i in range (1, b + 1): if (a % i == 0) and (b % i == 0): cislo = i print(cislo) # Ivan n1 = int(input()) n2 = int(input()) gcd = 1 for i in range(2, min(n1, n2) + 1): if n1 % i == 0 and n2 % i == 0: gcd = i print(gcd) === Úkol 2 alternativní řešení === a trochu jiná varianta: # riskoana a = int(input("Prvni cele cislo: ")) b = int(input("Druhe cele cislo: ")) if a > b: a, b = b, a if a==0 and b==0: print("Delitelem je kazde cele cislo.") else: d = 1 # číslem 1 budou obě čásla rozhodně dělitelná for i in range(2, a + 1): #range nastavena do menšího z čísel if a % i == 0 and b % i == 0: d = i print(d) ---- /* ==== Úkol 3 ==== # Honza prvni_cislo = int(input("Zadejte prvni cislo: ")) druhe_cislo = int(input("Zadejte druhe cislo: ")) if prvni_cislo > druhe_cislo: # prohodime hodnoty cisel, aby prvni cislo bylo mensi prvni_cislo, druhe_cislo = druhe_cislo, prvni_cislo soucet = 0 for i in range(prvni_cislo, druhe_cislo + 1): soucet += i print(soucet) ---- */ /* ==== Úkol 4 ==== # Honza zaklad = int(input("Zadejte zaklad: ")) exponent = int(input("Zadejte exponent: ")) if exponent == 0: if zaklad == 0: # nula na nultou print("Hodnota je nedefinovana.") else: # cokoliv na nultou je jedna print(str(zaklad) + "^0 = 1") elif zaklad == 0: # nula na cokoliv (krome nuly) je nula print("0^" + str(exponent) + " = 0") else: vysledek = 1 for i in range(exponent): vysledek *= zaklad print(str(zaklad) + "^" + str(exponent) + " = " + str(vysledek)) ---- */ /* ==== Úkol 5 ==== # Honza import random pocet_cisel = 10 # ze zadani nejvetsi_cislo = 0 druhe_nejvetsi_cislo = 0 prumer = 0 pocet_sudych = 0 pocet_lichych = 0 print("Pocitac vygeneroval: ", end = "") for i in range(pocet_cisel): nahodne_cislo = random.randint(1, 100) if i == pocet_cisel - 1: print(nahodne_cislo) else: print(nahodne_cislo, end=", ") prumer += nahodne_cislo if nahodne_cislo % 2 == 0: pocet_sudych += 1 else: pocet_lichych += 1 if nahodne_cislo > nejvetsi_cislo: druhe_nejvetsi_cislo = nejvetsi_cislo nejvetsi_cislo = nahodne_cislo elif nahodne_cislo == nejvetsi_cislo or nahodne_cislo > druhe_nejvetsi_cislo: druhe_nejvetsi_cislo = nahodne_cislo prumer /= pocet_cisel print("Pocet sudych cisel ve vygenerovane posloupnosti je " + str(pocet_sudych)) print("Pocet lichych cisel ve vygenerovane posloupnosti je " + str(pocet_lichych)) print("Ve vygenerovane posloupnosti je " + str(nejvetsi_cislo) + " nejvetsim cislem.") print("Ve vygenerovane posloupnosti je " + str(druhe_nejvetsi_cislo) + " druhym nejvetsim cislem.") print("Prumer vygenerovane posloupnosti je " + str(prumer)) */