====== Ř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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_1.py|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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_2.py|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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_3.py|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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_4.py|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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_5.py|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í:
{{:courses:pri-bootcamp:mm_day1_dop_ukloha_6.py|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í:
{{:courses:pri-bootcamp:mm_day1_odp_uloha_4.py|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í:
{{:courses:pri-bootcamp:mm_day1_odp_uloha_5.py|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()
----