====== 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))
*/