Warning
This page is located in archive. Go to the latest version of this course pages. Go the latest version of this page.

Řešení úkolů

Den 1 dop. - Úkol 1

# Jana
 
a = float(input("Zadejte stranu ctverce: "))
 
obvod = 4*a
obsah = a*a
 
print("Obvod je: " + str(obvod))
print("Obsah je: " + str(obsah))

Volné autorské řešení: Miroslav Müller


Den 1 dop. - Úkol 2

# Bartolomej
# revize: Honza
 
a = float(input("Zadejte delku strany a: "))
b = float(input("Zadejte delku strany b: "))
 
obvod = 2*(a+b)
obsah = a*b
 
print("Obvod je: " + str(obvod))
print("Obsah je: " + str(obsah))

Volné autorské řešení:

Miroslav Müller


Den 1 dop. - Úkol 3

# Luka Jovanovic
# revize: Honza
pi = 3.14
 
r = float(input("Zadejte polomer kruhu:"))
 
obvod = 2*pi*r
obsah = pi*r*r
 
print("Obvod kruhu je: " +str(obvod))
print("Obsah kruhu je: " +str(obsah))

Volné autorské řešení:

Miroslav Müller


Den 1 dop. - Úkol 4

# Jiri Kubik
# revize: Honza
 
pi = 3.14
 
r = float(input("Zadejte polomer koule: "))
 
V = (4/3)*pi*r*r*r
S = 4*pi*r*r
 
print("Povrch koule o polomeru " + str(r) + " je:", S)
print("Objem koule o polomeru", r, "je: " + str(V))

Volné autorské řešení:

Miroslav Müller


Den 1 dop. - Úkol 5

# Jana
a = float(input("Zadejte a: "))
b = float(input("Zadejte b: "))
print("a+b =", a+b)
print("a-b =", a-b)
print("a*b =", a*b)

Volné autorské řešení:

Miroslav Müller


Den 1 dop. - Úkol 6

# autor neznamy
# revize: Honza
 
a = input("Zadejte a: ")
b = input("Zadejte b: ")
 
# na prohozeni hodnot si nejdrive ulozime hodnotu z "a" do pomocne promenne "c"
# kdyz mame hodnotu z "a" bezpecne ulozenou, priradime hodnotu z "b" do "a" (cimz prepiseme puvodni hodnotu v "a")
# pote do "b" priradime puvodni hodnotu "a", kterou jsme si ulozili v "c"
c = a
a = b
b = c
 
print("a = ", a)
print("b = ", b)

Volné autorské řešení:

Miroslav Müller


Den 1 odp. - Úkol 1

# Bartolomej Bornus
# revize: Honza
 
delka = float(input("Zadejte delku: "))
sirka = float(input("Zadejte sirku: "))
vyska = float(input("Zadejte vysku: "))
 
objem = delka*sirka*vyska
 
print("Objem kvadru je:", objem)


Den 1 odp. - Úkol 2

# Marek Bistricky
# revize: Honza
import math
 
x1 = float(input("Zadej x1: "))
y1 = float(input("Zadej y1: "))
x2 = float(input("Zadej x2: "))
y2 = float(input("Zadej y2: "))
 
x_vzdalenost = x2 - x1
y_vzdalenost = y2 - y1
vzdalenost = math.sqrt(x_vzdalenost**2 + y_vzdalenost**2)
 
print("Body jsou od sebe vzdaleny", vzdalenost)


Den 1 odp. - Úkol 3

# Vojta J.
import math
a=float(input("Zadejte stranu a:"))
b=float(input("Zadejte stranu b:"))
c=float(input("Zadejte stranu c:"))
 
s=(a+b+c)/2
 
obsah=math.sqrt(s*(s-a)*(s-b)*(s-c)) #Heronuv vzorec
print("Obsah trojuhelniku je",obsah)


Den 1 odp. - Úkol 4

#Luka
a = int(input("Zadejte cislo:"))
if a%2==0:
    print("cislo je sude")
else:
    print("cislo je liche")

Volné autorské řešení:

Miroslav Müller


Den 1 odp. - Úkol 5

# Marek Bistricky
# Lucka
# revize: Honza
pi = 3.14
 
d = float(input("Zadej prumer sudu [v metrech]: "))
v = float(input("Zadej vysku sudu [v metrech]: "))
 
polomer_dm = (d/2)*10
vyska_dm = v*10
 
objem_dm3 = pi * polomer_dm**2 * vyska_dm
mnozstvi_dm3 = float(input("Zadej mnozstvi vody v sudu [v litrech]: "))
 
if mnozstvi >= objem_dm3:
    print("Sud pretece.")
else:
    print("Voda se do sudu vejde.")
    vyska_dm = mnozstvi / (pi*polomer_dm**2)
    print("Voda vystoupa do", vyska_dm/10, "metru.")

Volné autorské řešení:

Miroslav Müller


Den 1 odp. - Úkol 6

# Luka
a = int(input("Zadejte cislo:"))
if a>10 and a<20:
    print("Zadane cislo lezi v intervalu")
else:
    print("Zadane cislo nelezi v intervalu")


Den 1 odp. - Úkol 7

# Lucka
a = int(input("Zadej cislo a: "))
b = int(input("Zadej cislo b: "))
if a>b:
    print(a)
elif b>a:
    print(b)
else:
    print("Cisla se rovnaji")


Den 1 - Volitelný úkol 1

# MarekBistricky
a = float(input("Zadejte a: "))
b = float(input("Zadejte b: "))
c = float(input("Zadejte c: "))
x = (-c**2+a**2+b**2)/(2*a*b)
x2 = (-a**2+c**2+b**2)/(2*c*b)
x3 = (-b**2+a**2*+c**2)/(2*a*c)
if ((a+b)>c and (b+c)>a) and (a+c)>b:
    print("Trojuhelnik lze sestrojit")
    if x == 0 or x2 == 0 or x3 == 0:
        print("Trojuhelnik je pravouhly")
    elif x > 0 or x2 > 0 or x3 > 0:
        print("Trojuhelnik je ostrouhly")
    else: 
        print("Trojuhelnik je tupouhly")
else:
    print("Trojuhelnik nelze setrojit")            


Den 1 - Volitelný úkol 2

# Lucka
import math
a = float(input("Zadejte koeficient a: "))
b = float(input("Zadejte koeficient b: "))
c = float(input("Zadejte koeficient c: "))
D = b**2-(4*a*c)
if D < 0:
    print("Rovnice v R nema reseni")
elif D == 0:
    x=(-b)/(2*a)
    print("Reseni rovnice je x=",x)
else:
    x1=((-b)-math.sqrt(D))/(2*a)
    x2=((-b)+math.sqrt(D))/(2*a)
    print("Reseni rovnice je x1=",x1,"a x2=",x2)
 


Den 1 - Volitelný úkol 3

# Vojta
 
x1 = float(input("Zadej souradnici X prvniho bodu: "))
y1 = float(input("Zadej souradnici Y prvniho bodu: "))
x2 = float(input("Zadej souradnici X druheho bodu: "))
y2 = float(input("Zadej souradnici Y druheho bodu: "))
 
if((x2-x1) == 0):
    print("Smernice lezi v nekonecnu")
else:
    print("Smernice je:", ((y2 - y1)/(x2 - x1)))


Den 1 - Volitelný úkol 4

# Vojta
 
x1 = float(input("Zadej souradnici X prvniho bodu: "))
y1 = float(input("Zadej souradnici Y prvniho bodu: "))
x2 = float(input("Zadej souradnici X druheho bodu: "))
y2 = float(input("Zadej souradnici Y druheho bodu: "))
x3 = float(input("Zadej souradnici X tretiho bodu: "))
y3 = float(input("Zadej souradnici Y tretiho bodu: "))
 
vekx = x2 - x1
veky = y2 - y1
 
a = -veky
b = vekx
c = -a*x1 - b*y1
 
if(a*x3+b*y3+c==0):
    print("Body lezi v primce.")
else:
    print("Body nelezi v primce.")


Den 1 - Volitelný úkol 5

# Vojta
# revize: Honza
 
a = float(input("Zadej prvni cislo: "))
o = input("Zadej operaci: ")
b = float(input("Zadej druhe cislo: "))
zprava = str(a) + " " + o + " " + str(b) + " ="
 
if o == "+":
    print(zprava, a+b)
elif o == "-":
    print(zprava, a-b)
elif o == "*":
    print(zprava, a*b)
elif o == "/":
    if b == 0:
        print("Deleni nulou neni dovoleno.")
    else:
        print(zprava, a/b)
elif o == "^":
    print(zprava, a**b)
else:
    print("Nezadal jsi platnou operaci.") 


Den 2 - Opakování - Úkol 1

# Vojta
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)


Den 2 - Rozcvička

# Vojta
cislo = int(input("Zadej cislo N: "))
if cislo>0:
    for i in range(cislo):
        print("Ahoj")
    for i in range(1, cislo+1):
        print (str(i))
    for i in range(cislo, 0, -1):
        print (str(i))


Den 2 - Úkol 1

# Vojta
cislo = int(input("Zadej cislo N: "))
if cislo>0:
    for i in range(1, cislo):
        print (str(i) + ", ", end='')
    print (cislo)


Den 2 - Úkol 2

# Vojta
cislo = int(input("Zadej cislo N: "))
if cislo>0:
    for i in range(cislo, 1, -1):
        print (str(i) + ", ", end='')
    print ("1")


Den 2 - Úkol 3

# Vojta
faktorial = int(input("Zadej cislo N, jehoz faktorial budeme delat: "))
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)


Den 2 - Úkol 4

# Vojta
cislo = int(input("Zadej prvocislo: "))
if (cislo > 1):
    for i in range (cislo-1, 0, -1):
        if (cislo%i == 0) and (i>1):
            print("Cislo " + str(cislo) + " neni prvocislo.")
            break
        if i == 1:
            print("Cislo " + str(cislo) + " je prvocislo.")          
else:
    print("Cislo " + str(cislo) + " neni prvocislo.")


Den 2 - Ú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)    


Den 2 - Vnořené cykly - Úkol 1

# Vojta
cislo = int(input("Zadej cislo: "))
for x in range (0, cislo):
    for i in range (x-1, 0, -1):
        if (x%i == 0) and (i>1):
            #print("Cislo " + str(x) + " neni prvocislo.")
            break
        if i == 1:
            print(str(x), end=" ")          
print()


Den 2 - Vnořené cykly - Úkol 2

# Vojta
hodnost = int(input("Zadej hodnost matice: ")) 
for a in range (0, hodnost):
    for b in range (0, hodnost):
        if (a==b):
            print("1", end=" ")
        else:
            print("0", end=" ")
    print()


Den 2 - Vnořené cykly - Úkol 3

# Vojta
vyska = int(input("Zadej vysku domu: "))
if (vyska < 5) or (vyska%2==0):
    print("Vyska musi byt liche cislo vetsi nez 5")
else:
    print((vyska//2)*" " + "#")
 
    for a in range (0, int((vyska//2)-1)):
            print(((vyska//2)-1-a)*" ", end="")
            print("#", end="")
            print((2*a+1)*" ", end="")
            print("#")  
 
print("#"*vyska)
for c in range (vyska-2):
    print("#" + " "*(vyska-2) + "#")            
print("#"*vyska)


Den 2 - Volitelný úkol 1

# Vojta
predpred = 1
pred = 1
souc = 0
cislo = int(input("Zadej prirozene cislo: "))  
for i in range (cislo-3):
    souc = predpred + pred
    predpred = pred
    pred = souc
print(souc)


Den 2 - Volitelný úkol 2

# Vojta
a = int(input("Zadej prirozene cislo a: "))    
b = int(input("Zadej prirozene cislo b: "))    
 
for i in range (1,b):
    if (a%i==0) and (b%i==0):
        cislo = i
print(cislo)


Den 2 - Volitelný ú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)


Den 2 - Volitelný ú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))


Den 2 - Volitelný ú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))


Den 3 - Úkol 1

# Vasek
a = int(input("Zadejte diferenci: "))
b = int(input("Zadejte prvni clen: "))
 
for i in range(b,a*20,a):
    print(i)


Den 3 - Úkol 2

# Jirka
 
suma = 0 # vnitrek zavorky z rovnice
 
# 10000 iteraci cyklu dava pomerne hezke reseni
# s vetsim poctem opakovani je hodnota pi presnejsi
for i in range(0,1000):
 
    clen = 1/(2*i+1) # aktualni clen posloupnosti v zavorce
 
    # rozhodovani o znamenku
    if(i%2 == 0):
        suma = suma + clen
    else:
        suma = suma - clen
 
pi = 4*suma
 
print(pi)


Den 3 - Vnořené cykly - Úkol 1

# Cvicici (Jirka)
 
size = 5 # VOLITELNE, velikost matice
 
# prvni matice 
for i in range(0, size):
    for j in range(0, size):
        # kdyz ke radek sudy, tak na nem jsou jednicky, jinak nuly
        if(i%2==0): 
            print("1 ", end="")
        else:
            print("0 ", end="")
    # zalomeni radku    
    print("")
 
# prazdny radek mezi maticemi
print("")
 
# druha matice
for i in range(0, size):
    for j in range(0, size):
        # kdyz je soucet indexu (i+j) sudym vypis jednicku, jinak nulu
        if((i+j)%2==0):
            print("1 ", end="")
        else:
            print("0 ", end="")
    # zalomeni radku    
    print("") 


Den 3 - Vnořené cykly - Úkol 2

#Lukas Halaska
for i in range(1, 11):
    for j in range(1, 11):
        x = i*j
        if j==1:
            if (len(str(x))==2):
                print(end=str(x))
            else:
                print(" ", end=str(x))
        elif j==10:
            if (len(str(x))==3):
                print(" ", x, sep="")
            elif (len(str(x))==2):
                print("  ", x, sep="")
            else:
                print("   ", x, sep="")
        else:
            if (len(str(x))==2):
                print("  ", end=str(x))
            else:
                print("   ", end=str(x))

#Vojta J.
for k in range (1,10):
    for l in range (1,10):
        print("%2d" % (k*l), end=" ")
 
    print(" ")


Den 3 - Vnořené cykly - Úkol 3

# Cvicici (Jirka)
 
size = 5 # VOLITELNE, velikost matice
 
# prvni obrazec
for i in range(0, size):
    # vypis tolik "X", kolikaty mam radek
    # (nejhornejsi radek je prvni)
    #                   |
    #                   V 
    for j in range(0, i+1):
        print("X ", end="")
    # VOLITELNE, zbytek radku vypln mezerami
    for j in range(0,size-i):
        print("  ", end="")
    # zalomeni radku    
    print("")
 
# volny radek mezi obrazci
print("")
 
# druhy obrazec
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("")
 
# volny radek mezi obrazci
print("")
 
# treti obrazec
for i in range(0, size):
    for j in range(0, size):
        # "X" jsou v prvnim a poslednim radku a take v prvnim a poslednim sloupci
        # plati-li alespon jedno, vypis "X"
        if(i==0) or (i==size-1) or (j==0) or (j==size-1):
            print("X ", end="")
        else:
            print("  ", end="")
    print("")


Den 3 - While cyklus - Úkol 1

# Jan Tosner
 
y = 0
x = 1
z = 0
l = 0
n = 0
s = 0
while x != 0:
	x = int(float(input("Zadejte číslo: ")))
	y = y+x
	z = z+1
	if x%2 != 0:
		l = l+1
	if x > n:
		s = n
		n = x
	elif (x > s):
		s = x
print("Součet je "+str(y)+".")
print("Délka posloupnosti je "+str(z-1)+".")
print("Lichých čísel je "+str(l)+".")
print("Největší číslo je "+str(n)+".")
print("Druhé největší číslo je "+str(s)+".")


Den 3 - While cyklus - Úkol 2

# Jan Tosner
 
A = float(input("Zadejte číslo A: "))
B = float(input("Zadejte číslo B: "))
x = 1
while x != 0:
	A = A+1
	x = A%B
print("Nejmenší číslo dělitelné číslem B a je větší než číslo A je: "+str(A)+".")


Den 3 - While cyklus - Úkol 3

#Lucka
 
cislo=int(input("Zadej cislo v desitkove soustave: "))
retezec=""
while cislo>0:
    if cislo%2==0:
        retezec=retezec+"0"
    else:
        retezec=retezec+"1"
    cislo=cislo//2
retezec2=""
for i in range(len(retezec)):
    retezec2=retezec2+retezec[len(retezec)-1-i]
print(retezec2)

#Vojta, amended by poliape2
 
deka = int(input("Zadej cislo v desitkove soustave: "))
zbytek = deka
exp = 0
cislo = 0
while (zbytek > 0):
    cislo += (zbytek % 2) * 10 ** exp
    exp += 1
    zbytek = zbytek // 2
 
print(cislo)


Den 3 - While cyklus - Úkol 4

#Lukas Halaska
import random
a = int(100 * random.random()) + 1
b = int(input("Zkus uhadnout cislo: "))
while b!=a:
    if b>a:
        print("Moje cislo je mensi")
    else:
        print("Moje cislo je vetsi")
    b = int(input("Zkus uhadnout cislo: "))
print("Uhodl jsi")


Den 3 - While cyklus - Úkol 5

# Jirka a Honza
dolni = 1
horni = 100
 
while horni != dolni:
    stred = ((horni+dolni)//2)
    c = input("Je tvoje cislo vetsi nez " + str(stred) + "? (y/n)")
    if c == "y":
        dolni = stred + 1
    else:
        horni = stred
 
print("Tvoje cislo je: " + str(horni))    


Den 3 - While cyklus - Úkol 6

# proposed by jiri.moravcik
 
import math
 
x = int(input('Zadejte cele cislo '))
cislo = x
while True:
    cislo = cislo + 1
    je_prvocislo = True
    for i in range(2, int(math.sqrt(abs(cislo)) + 1)):
        if cislo % i == 0:
            je_prvocislo = False
    if je_prvocislo:
        print('Hledane cislo je', cislo)
        break


Den 3 - Seznamy - Úkol 1

# Jan Tosner
 
seznam = []
for i in range(0,10):
	x = int(float(input("Zadejte číslo: ")))
	seznam.insert(0,x)
print(seznam)


Den 3 - Seznamy - Úkol 2

# Stepan
 
numbers = []
y = 5
for i in range (0, 5):
    x = input ("zadejte " + str(y) + " cisel")
    x = int (x)
    numbers.append(x)
numbers.sort ()
z = len (numbers)
if z%2 == 0:
    med = (numbers[z/2]+numbers[(z/2)+1])/2
    print (med)
else:
    med = numbers[(int(z/2))]
    print (med)


Den 3 - Seznamy - Úkol 3

# Jan Tosner
 
seznam = []
for i in range(0,10):
	x = int(float(input("Zadejte číslo: ")))
	seznam.append(x)
seznam.sort()
print("Jsou to tato čísla:",seznam[-1], "a", seznam[0])


Den 3 - Seznamy - Úkol 4

# Jan Tosner
 
seznam = []
for i in range(0,10):
	x = int(float(input("Zadejte číslo: ")))
	seznam.append(x)
seznam.sort()
z = seznam[1]-seznam[0]
for i in range(0,9):
	if (seznam[i+1]-seznam[i]) <= z:
		x = seznam[i+1]
		y = seznam[i]
		z = x-y
print("Jsou to tato čísla:",x, "a", y)


Den 3 - Seznamy - Úkol 5

# Jan Tosner
 
seznam = []
for i in range(0,10):
	x = int(float(input("Zadejte číslo: ")))
	seznam.append(x)
for i in range(9,0,-1):
	for j in range(9,0,-1):
		if seznam[j] < seznam[j-1]:
			z = seznam.pop(j)
			seznam.insert(j-1,z)
print(seznam)


Den 4 - Úkol 1

import math, random
 
# proposed by LaSer
 
digits = int(input("Zadej presnost vypoctu (pocet desetinnych mist)"))
 
total_count = 0
in_circle_count = 0
my_pi = 0
 
approximations = []
 
while abs(my_pi - math.pi) > 10 ** -digits:
    x = random.random()
    y = random.random()
    total_count += 1
    if math.sqrt(x * x + y * y) <= 1:
        in_circle_count += 1
    my_pi = 4 * in_circle_count / total_count
    print(my_pi)
    # save the first 100 results to list
    if len(approximations) <= 100:
        approximations.append(my_pi)
 
print("konecny vysledek", my_pi)
 
print("prvnich sto aproximaci")
for value in approximations:
    print(value)

import random
import math
 
# proposed by poliape2
 
CIRCLE_CENTER = (0.5, 0.5)
 
def distance(a: (float, float), b : (float, float)) -> float:
  a1, a2 = a
  b1, b2 = b
  diff1 = a1 - b1
  diff2 = a2 - b2
  return math.sqrt((diff1 ** 2) + (diff2 ** 2))
 
digits = int(input("Input the desired number of digits precision: "))
 
total = 0
inside = 0
pi = 0
error = 0
precision = 0
while precision < digits:
  for t in range(100 ** ((digits + 1) // 2)):
    total += 1
    point = (random.random(), random.random())
    inside += distance(point, CIRCLE_CENTER) <= 0.5
  pi = 4 * inside / total
  error = abs(math.pi - pi)
  precision = math.log(total / 0.49, 100)
  print("points inside: %10d, outside: %10d" % (inside, total))
  print("computed pi: %.5f, lib pi: %.5f, error: %.5f" % (pi, math.pi, error))
  print("expected precision with 95%% confidence: %.2f" % precision)


Den 4 - Úkol 2

Řešení - Bez ošetření přestupných roků

# Kvant
days = ("PO", "UT", "ST", "CT", "PA", "SO", "NE")
months = ("Leden", "Unor", "Brezen", "Duben", "Kveten", "Cerven", "Cervenec", "Srpen", "Zari", "Rijen","Listopad","Prosinec")
monthsLen = (31,28,31,30,31,30,31,31,30,31,30,31)
 
# je rok prestupny?
def isleapyear(year):
    # rok je pres
    if (year % 4 == 0 and ((year % 100 != 0) or (year % 400 == 0))):
       return 1
    else:
       return 0 
 
def printCalendary(year, month, beginDay):
 
   # hlavicka jmeno mesice a rok
   print(months[month-1],year)
 
   # tisknuti zkratek jmen dnu
   for i in range(0,7):
      print(days[i]+" ",end="")
   print()
 
   # tisknuti mezer -- odsazeni 1. dne mesice
   for i in range(0,beginDay):
      print("   ",end="")
 
   # tisknuti dnu v mesici
   for i in range(1,monthsLen[month-1]+1):
      print("%2d " % (i), end="")
 
      # zalomeni u nedele		
      if ((i+beginDay)%7 == 0):
         print()
 
   # pridatani 29 v pripade, ze je rok prestupny a vypisovany mesic je unor
   if (month == 2 and isleapyear(year) == 1):
      print("29 ", end="")
 
   print()
   print()
 
def countBeginning(year, month):
   # rozdil v rocich od referencniho data
   dr = year-2018
 
   # rozdil v dnech na zaklade roku
   dd = dr*365 
 
   # rozdil ve dnech na zaklade mesicu
   for i in range(0,month-1):
      dd += monthsLen[i]
 
   # reseni dny za prestupne roky
   if year > 2018:
      for y in range(2018,year):
         dd += isleapyear(y) 
 
   if year < 2018:
      for y in range(year+1,2018):
         dd -= isleapyear(y)    
 
   if isleapyear(year):
      dd += 1
 
   dd %= 7
 
   return dd
 
year = int(input("Zadejte rok: "))
month = int(input("Zadejte mesic: "))
 
diff = countBeginning(year,month)
printCalendary(year,month,diff)


Den 4 - Úkol 3

# proposed by jiri.moravcik
 
import random, itertools
 
def vygeneruj_vektor(dimenze):
    return [round(random.uniform(-100, 100), 2) for i in range(dimenze)]
 
def skalarni_soucin(v1, v2):
    seznam_dvojic = itertools.zip_longest(v1, v2, fillvalue=0)
    return sum([x[0] * x[1] for x in seznam_dvojic])
 
def nacti_vektor(poradi):
    return list(map(float, input('Zadejte cisla ' + str(poradi) + '. vektoru oddelena mezerou: ').split(' ')))
 
def vytiskni_vysledek(v1, v2, sk_soucin):
    print(str(v1) + '.' + str(v2) + ' = ' + str(sk_soucin))
 
volba = input('Pro nahodne vektory zadejte 1, pro rucni zadani 2: ')
if volba == '1':
    dimenze = int(input('Zadejte dimenzi (rozmer) vektoru: '))
    v1 = vygeneruj_vektor(dimenze)
    v2 = vygeneruj_vektor(dimenze)
    vytiskni_vysledek(v1, v2, skalarni_soucin(v1, v2))
elif volba == '2':
    v1 = nacti_vektor(1)
    v2 = nacti_vektor(2)
    vytiskni_vysledek(v1, v2, skalarni_soucin(v1, v2))

Alternativní řešení

import random
 
# propsed by poliape2
 
vec_length = int(input("Zadejte dimenzi (rozmer) vektoru: "))
vec_a = []
for i in range(vec_length):
    vec_a.append(random.randint(0,100)/10)
 
vec_b = [random.randint(0,100)/10 for _ in range(vec_length)]
 
dot_product = 0
for i in range(vec_length):
    dot_product += vec_a[i] * vec_b[i]
 
# alternativne funkce zip
#dot_product = 0
#for (a, b) in zip(vec_a, vec_b):
#    dot_product += a * b
 
# alternativne 2
#import operator
#dot_product = sum(map(operator.mul, vec_a, vec_b))
 
print(vec_a,".", vec_b, "=", dot_product)


Den 4 - Úkol 4

# Mirek M
 
import random
 
# vstup uzivatele
n = int(input("Zadejte dimenzi matic: "))
 
# generace dvou nahodnych matic o velikonsti n x n
# vytvor pole pro jednotlive radky matice
matice_1 = []
matice_2 = []
for i in range(n):
    # vytvor pole pro jeden radek matice, napln ho a pridej do matice
    radek_1 = []
    radek_2 = []
    for j in range(n):
        # generace nahodneho floatu v rozsahu a zaokrouhleni na 1 des misto
        radek_1.append(round(random.uniform(0.0, 5.0), 1))
        radek_2.append(round(random.uniform(0.0, 5.0), 1))
    matice_1.append(radek_1)
    matice_2.append(radek_2)
 
# vstup uzivatele
znamenko = input("Zadejte operaci (+/-/*): ")
 
# print zadani vypoctu
for i in range(n):
    for j in range(n):
        # formatovani floatu na jedno desetinne misto a celkem 4 charaktery
        print("%4.1f " % matice_1[i][j], end="")
    print()
 
print(znamenko)
 
for i in range(n):
    for j in range(n):
        print("%4.1f " % matice_2[i][j], end="")
    print()
 
print("=")
 
# vypocet dle znamenka a print vysledku
if znamenko == "+":
    for i in range(n):
        for j in range(n):
            print("%4.1f " % (matice_1[i][j] + matice_2[i][j]), end="")
        print()
 
elif znamenko == "-":
    for i in range(n):
        for j in range(n):
            print("%4.1f " % (matice_1[i][j] - matice_2[i][j]), end="")
        print()
 
elif znamenko == "*":
    # pro vypocet nutno ukladat mezivysledek
    # zkraceny zapis dvou vnorenych cyklu pro naplneni cele matice nulami
    vysledek = [[0 for i in range(n)] for j in range(n)]
    for i in range(n):
        for j in range(n):
            for k in range(n):
                vysledek[i][j] += matice_1[i][k] * matice_2[k][j]
    # print
    for i in range(n):
        for j in range(n):
            print("%4.1f " % vysledek[i][j], end="")
        print()
 
else:
    print("Chybny vstup")


Den 4 - Úkol 5

# proposed by LaSer
 
numbers = [5, 6, -11, 7, 3, 0, -5]
 
print("pred:", numbers)
 
first_index_of_unordered_part = 0
while first_index_of_unordered_part < len(numbers) - 1:
    for index in range(first_index_of_unordered_part, len(numbers)):
        if numbers[first_index_of_unordered_part] > numbers[index]:
            numbers[first_index_of_unordered_part], numbers[index] = numbers[index], numbers[first_index_of_unordered_part]
    first_index_of_unordered_part += 1
 
print("po:", numbers)

# Mirek M
 
# --- varianta 1 ---
 
pole = [64, 25, 12, 22, 11, 3, 4, 53, 42]
print("Pred serazenim: " + str(pole))
 
# SELECTION SORT
# Postupne navysuj index
for i in range(len(pole)):
    # Neserazena cast je vzdy od i do konce, v ramci ni vyber nejmensi prvek
    idx_nejmensiho = i
    for j in range(i + 1, len(pole)):
        if pole[j] < pole[idx_nejmensiho]:
            idx_nejmensiho = j
 
    # Vymen nejmensi prvek za prvni prvek v neserazene casti
    tmp = pole[i]
    pole[i] = pole[idx_nejmensiho]
    pole[idx_nejmensiho] = tmp
 
print("Po serazeni: " + str(pole))
 
 
# --- varianta 2 ---
 
def selection_sort(pole):
    # Postupne navysuj index
    for i in range(len(pole)):
        # Neserazena cast je vzdy od i do konce, v ramci ni vyber nejmensi prvek
        idx_nejmensiho = i
        for j in range(i + 1, len(pole)):
            if pole[j] < pole[idx_nejmensiho]:
                idx_nejmensiho = j
 
        # Vymen nejmensi prvek za prvni prvek v neserazene casti
        tmp = pole[i]
        pole[i] = pole[idx_nejmensiho]
        pole[idx_nejmensiho] = tmp
 
 
pole = [64, 25, 12, 22, 11, 3, 4, 53, 42]
print("Pred serazenim: " + str(pole))
selection_sort(pole)
print("Po serazeni: " + str(pole))


Den 4 - Funkce - Úkol 1

### proposed by mareddan ###
 
def compute_BMI(weight, height):
	BMI = weight / (height ** 2)
	return BMI
 
def print_text_output_BMI(BMI):
	if BMI < 18:
		print("Podvyziveny")
	elif BMI > 30:
		print("Trpi nadvahou")
	else:
		print("V poradku")
 
result = compute_BMI(80, 2)
print(result)
print_text_output_BMI(result)


Den 4 - Funkce - Úkol 2

# Simon
def read_input():
    pole=[]
    a=float(input("Zadej cenu produktu: "))
    while a!=0:
        castka.append(a)
        a=float(input("Zadej cenu produktu: "))
    return(pole)
 
def get_sum(pole):
    soucet=0
    for i in range(0, len(pole)):
        soucet=soucet+pole[i]
    return soucet
 
def get_max(pole):
    pole.sort()
    return pole[len(pole)-1]
 
def get_min(pole):
    pole.sort()
    return pole[0]
 
def get_avg(pole):
    soucet=0
    for i in range(0, len(pole)):
        soucet=soucet+pole[i]
    return soucet/len(pole)
 
def array_contains(pole, cislo):
    for i in range(0, len(pole)):
        if pole[i]-cislo==0:
            final=pole[i]
            return True
            break
        if i==len(pole)-1:
            return False       
            break
 
def do_payment(pole):
    print("Utrata dela "+str(get_sum(pole))+"Kc.")
    print("Nejlevnejsi polozka je za "+str(get_min(pole))+"Kc.")
    print("Nejdrazsi polozka je za "+str(get_max(pole))+"Kc.")
    print("Prumerna cena polozky je "+str(get_avg(pole))+"Kc.")


Den 4 - Funkce - Úkol 3

### proposed by mareddan ###
 
def switch_positions_array(array, first, second):
	# Osetreni aby index nevyskocil z pole a nenastala vyjimka
	if first < 0 or second < 0 or first >= len(array) or second >= len(array):
		print("neplatny index")
		return
	tmp = array[first]
	array[first] = array[second]
	array[second] = tmp
 
numbers = [5, 7, 6, 8]
switch_positions_array(numbers, 1, 2)
print(numbers)


Den 4 - Funkce - Úkol 4

# Mirek M
 
def nejmensi(pole):
    zatim_nejmensi = pole[0]
    index_nejmensiho = 0
    for i in range(1, len(pole)):
        if (pole[i] < zatim_nejmensi):
            zatim_nejmensi = pole[i]
            index_nejmensiho = i
    return index_nejmensiho


Den 4 - Funkce - Úkol 5

# Mirek M
 
from ukol4_reseni import nejmensi
 
# Napr opet za pomoci selection sort
def serad(pole):
	# Navysuj i
	for i in range(len(pole)): 
		# V ramci i-teho az posledniho prvku vyber nejmensi
		idx_nejmensiho = i + nejmensi(pole[i:]) # predej funkci zbyvajici cast pole
 
		# Vymen nejmensi prvek za prvni prvek v neserazene casti    
		tmp = pole[i]
		pole[i] = pole[idx_nejmensiho]
		pole[idx_nejmensiho] = tmp
 
pole = [64, 25, 12, 22, 11, 3, 4, 53, 42] 
print("Pred serazenim: " + str(pole))
serad(pole)
print("Po serazeni: " + str(pole))


Den 4 - Volitelný úkol 1

### Proposed by mareddan ###
 
from random import randint
 
def generate_random_array(length):
	return add_to_array_recursion([], length)
 
def add_to_array_recursion(my_list, length):
	if length <= 0:
		return my_list
	my_list.append(randint(1, 100))
	return add_to_array_recursion(my_list, length - 1)
 
 
if __name__ == "__main__":
	my_length = 10
	generated_array = generate_random_array(my_length)
	print("Nahodne generovane pole o", my_length, "prvcich:", generated_array)


Den 4 - Volitelný úkol 2

### Proposed by mareddan ###
 
def factorial(x):
	if x <= 1:
		return 1
	return x * factorial(x-1)
 
 
if __name__ == "__main__":
	number = 5
	result = factorial(number)
	print("Faktorial cisla", number, "je:", result)


Den 4 - Volitelný úkol 3

# Jirka 
def fibonacci(x):
	if x <= 0:
		return 0
	elif x <= 2:
		return 1
	return fibonacci(x - 1) + fibonacci(x - 2)
 
 
number = int(input("Zadej poradi ve fibonacciho posloupnosti"))
result = fibonacci(number)
print("Vysledek je ", result)


Den 4 - Volitelný úkol 4

### Proposed by mareddan ###
 
def generate_matrix(size):
	return create_matrix(size, max_number, [])
 
def create_matrix(size, max_number, matrix):
	if max_number <= 0:
		return matrix
	sub_array = create_sub_arrays(size, max_number, [])
	matrix.append(sub_array)
	return create_matrix(size, max_number - size, matrix)
 
def create_sub_arrays(size, max_number, array):
	if size <= 0:
		return array
	array.append(max_number)
	return create_sub_arrays(size - 1, max_number - 1, array)
 
 
if __name__ == "__main__":
	size = 5
	max_number = size * size - 1
	result = generate_matrix(size)
	print(str(size) + "x" + str(size) + " matrix is:", result)


Den 4 - Volitelný úkol 5

# proposed by LaSer
 
# chessboard row/column coordinates in range 0 - 8 (9 squares)
# as array indexes always start at 0 this is easier to code
# than using more "human readable" 1 - 9 range
#
# 8
# .
# .
# .
# 2
# 1
# 0
#  0 1 2 ... 8
 
# a 9x9(!) chessboard
chessboard = [
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0],
    [0, 0, 0, 0, 0, 0, 0, 0, 0]
]
 
# knight moves are explicitly listed here
# can be done in a shorter but imho less clear way
knightMovesList = [
    [-1, -2],
    [-2, -1],
    [-1, 2],
    [-2, 1],
    [1, -2],
    [2, -1],
    [1, 2],
    [2, 1]
]
 
def knight_move(row, column, move_count):
    # mark our current position
    chessboard[row][column] = 1
    # end condition
    if move_count > 0:
        for by_row, by_column in knightMovesList:
            to_row = row + by_row
            to_column = column + by_column
            # prevent jumping off the board
            if 0 <= to_row <= 8 and 0 <= to_column <= 8:
                knight_move(to_row, to_column, move_count - 1) # decrease count
    # (unmarked) return happens, when end condition is reached
 
def print_chessboard():
    for row in chessboard:
        for square in row:
            print(square, end=" ")
        print("")
 
moves = 3 # this includes the initial move to square 4,4...
 
knight_move(4, 4, moves - 1) # ...so decrement before calling the recursion
print_chessboard()


courses/pri-bootcamp/solutions.txt · Last modified: 2019/09/19 14:07 by kubikji2