Sections

2017-10-08

Jak mi (ne)jde Python

Programuje se na anglickee klaavesnici, kde nejsou zsaadnee haaczky, czaarky nebo krouzsky, takzse sprzsezskovyy pravopis se vracii.

Pocziitacze na FEL pro zkouszky z programovaanii majii Core i5-4460, 16 GB RAM, iGPU, 500 GB HDD. Vzsdytj jedinyy lepszii pocziitacz, nezs je tohle (kteryy je shodou okolnostii taky Haswell), maam doma jenom jaa. Na Omskee jsme djelali na Core 2 Duo a v normaalniich uczebnaach byly na prezentace Pentia a Celerony D. 2x jsem nevydrzsel czekat a przsepojil jsem D-SUB do meeho netbooku s Atomem, jenzs byl citelnje rychlejszii. Atom N550. Netbook. Rychlejszii nezs Pentium D. Vyhodit a nechat studenty nosit si vlastnii.

Pozitivnii vec je to, zse si nemusiim hliidat strzsedniiky. Pocziinaje 4. programem to nefunguje, jak maa, protozse to liip neumim. Co bych taky mjel czekat, kdyzs ten jazyk pouzsiivaam teprve paar dnii. To nenii GeSeL, kteryy muuzsete vysvjetlit bjehem 2 briifinguu.

Naopak negativnii vjec je to, zse Python nemaa goto, takzse se nemuuzu vraatit na zaczaatek programu a djelat interaktivnjejszii hry. Naprzsiiklad ta loterie nemohla byyt dotazsena do dokonce, protozse to bych musel financznii obnos uklaadat do souboru, kteryy by se potom dal snadno editovat, cziimsz by i BFU by moh snadno podvaadjet. Mozsnaa "while input("Chces hrat (a/n)? ") == "a": ", ale to bych musel celyy kood odsazovat.



===================================================

# vstup.py


vek = int(input("18+. Zadej svuj vek: "))
if vek < 18:
    print("Narodil ses v roce "+str((2017-vek))+", ty infantilni milenale!")
else:
    print("Narodili jste se v roce "+str((2017-vek))+", velecteny pane.")
 
x = int(input("Zadej sem cele cislo (jinak to spadne): "))
print(x)
y = input("Napis sveho kandidata na prezidenta ve 4. padu (gramatika NYI): ")
print ("Volte "+str(y)+"! Skoncuje s EET, slimaky, zrusi biopaliva a blabla.")

===================================================

# ukoly1d.py


import math
print("Z math.py mame pi =",str(math.pi)+".")

strana = float(input("Zadej stranu ctverce: "))
print("Obvod je "+str(4*strana)+" j a obsah je "+str(strana**2)+" j^2.")

a = float(input("Ted zadej 1. stranu obdelnika: "))
b = float(input("A ted 2.: "))
print("Obvod je "+str(2*(a+b))+" j a obsah je "+str(a*b)+" j^2.")

r = float(input("A nyni prestoupime ke kruhu, jehoz mi zadas polomer: "))
print("Obvod je "+str(2*math.pi*r)+" j a obsah je "+str(math.pi*r**2)+" j^2.")

print("Kdyby to byla koule, povrch by byl "+str(4*math.pi*r**2)+" j^2 a objem "+str((4/3)*math.pi*r**3)+" j^3.")

a = float(input("Ted mi dej jen tak 2 cisla, nejdriv 1.: "))
b = float(input("A ted 2.: "))
print("Soucet je "+str(a+b)+", rozdil je "+str(a-b)+" a soucin je "+str(a*b)+".")

swap = a
a = b
b = swap
print("Po prohozeni je v a "+str(a)+" a v b "+str(b)+".")

print("Dekuju za pozornost.")
print("")

===================================================

# ukoly1o.py


#import math #Opravdu to mame zapotrebi, plytvat pameti?

a = float(input("1. rozmer kvadru: "))
b = float(input("2. rozmer kvadru: "))
c = float(input("3. rozmer kvadru: "))
print("Objem je "+str(a*b*c)+" j^3.")
print("")

x1 = float(input("X-ova souradnice 1. bodu: "))
y1 = float(input("Y-ova souradnice 1. bodu: "))
x2 = float(input("X-ova souradnice 2. bodu: "))
y2 = float(input("Y-ova souradnice 2. bodu: "))
d = ((x2-x1)**2+(y2-y1)**2)**(1/2) #obejdu se bez math.py
print("Vzdalenost mezi ["+str(x1)+";"+str(y1)+"] a ["+str(x2)+";"+str(y2)+"] je "+str(d)+" j.")
print("")

a = float(input("1. strana 3uhelnika: "))
b = float(input("2. strana 3uhelnika: "))
c = float(input("3. strana 3uhelnika: "))
s = (a+b+c)/2
obsah = (s*(s-a)*(s-b)*(s-c))**(1/2)
print("Obsah je "+str(obsah)+" j^2.")
print("")

x = float(input("Zadej cislo pro overeni sudosti a lichosti: "))
if x % 2 == 1:
    print(str(x)+" je liche cislo.")
elif x % 2 == 0:
    print(str(x)+" je sude cislo.")
else:
    print(str(x)+" je desetinne cislo, neni tedy ani liche ani sude.")
print("")

print("Jses ropny magnat a mas prazdny barel.")
r = float(input("Zadej polomer: "))
v = float(input("Zadej vysku: "))
l = float(input("Jak moc ropy tam chces nalit? "))
pi = 3.14159265358979323846264338327950288419750 #z hlavy
V = pi*r**2*v
h = l/(pi*r**2)
if V < l:
    print("Ten sud ma objem pouze "+str(V)+" j^3, takze ti "+str(l-V)+" j^3 preteklo.")
elif V > l:
    print("Do sudu by se veslo jeste "+str(V-l)+" j^3.")
    print("Hladina je ve vysce "+str(h)+" j ode dna, tedy "+str(v-h)+" j od vrchu.")
else:
    print("Sice se to tam presne veslo, ale mas to vrchovate.")
print("")

od = float(input("Zadej pocatek intervalu: "))
do = float(input("Zadej konec intervalu: "))
x = float(input("Zadej cislo, ktere chces proverit: "))
if od > do:
    print("Ty jses vul, tedka to musim prohodit.")
    od = od+do
    do = od-do
    od = od-do
if x >= od and x <= do:
    print("Cislo je prvkem uzavreneho intervalu <"+str(od)+";"+str(do)+">.")
else:
    print("Cislo neni prvkem uzavreneho intervalu <"+str(od)+";"+str(do)+">.")
print("")

a = float(input("Zadej 1. cislo: "))
b = float(input("Zadej 2. cislo: "))
if a > b:
    print("Vetsi cislo je "+str(a)+".")
elif b > a:
    print("Vetsi cislo je "+str(b)+".")
else:
    print("Zadana cisla jsou stejna.")
print("")

print("Konec programu.")

===================================================

# vzorecky.py


# Aternativni matematicka knihovnicka bez math.py

pi = 3.1415926535897932384626433832795028841975
euler = 2.718281828
phi = 1.618033
psi = 0.618033
sqrt2 = 1.4142
halfsqrt2 = 0.7071

def povrchKoule(r):
    return (4*pi*r**2)

def objemKoule(r):
    return ((4/3)*pi*r**3)

def povrchValce(r,v):
    return (2*pi*r*v+pi*r**2)

def objemValce(r,v):
    return (pi*r**2*v)

def vzdalenostBodu(x1,y1,x2,y2):
    return (abs((x2-x1)**2+(y2-y1)**2))**(1/2)
 
def heronuvVzorec(a,b,c)
    s = (a+b+c)/2
    obsah = (s*(s-a)*(s-b)*(s-c))**(1/2)
    return obsah

#def povrchKuzelu(r,v):
#    return ()

def objemKuzelu(r,v):
    return (pi*r**2*v)/3

#def povrch4bJehlanu(a,b,v):
#    return ()

def objem4bJehlanu(a,b,v):
    return (a*b*v)/3

===================================================

# ukoly1v.py


a = float(input("Stana a: "))
b = float(input("Stana b: "))
c = float(input("Stana c: "))
if a+b>c and a+c>b and b+c>a:
    if a**2+b**2>c**2 and a**2+c**2>b**2 and b**2+c**2>a**2:
        print("Takovy trojuhelnik je ostrouhly.")
    elif a**2+b**2<c**2 or a**2+c**2<b**2 or b**2+c**2<a**2:
        print("Takovy trojuhelnik je tupouhly.")
    else:
        print("Takovy trojuhelnik je pravouhly.")
else:
    print("Tento trojuhelnik nelze sestrojit.")
print("")

print("Normovana kvadraticka rovnice: a*x^2 + b*x + c = 0")
a = float(input("Koeficient a: "))
b = float(input("Koeficient b: "))
c = float(input("Koeficient c: "))
if a == 0:
    if b == 0:
        print("Rovnice neni kvadraticka, ani linearni. Reseni je "+str(-c)+".")
    else:
        print("Rovnice neni kvadraticka. Reseni je "+str(-c/b)+".")
else:
    d = b**2 - 4*a*c
    if d > 0:
        x1 = (-b + d**(1/2))/(2*a)
        x2 = (-b - d**(1/2))/(2*a)
        print("Rovnice ma 2 realna reseni, a sice "+str(x1)+" a "+str(x2)+".")
    elif d == 0:
        x = -b/(2*a)
        print("Rovnice ma jedine reseni, a to 2nasobny koren "+str(x)+".")
    else:
        print("Rovnice nema realne reseni.")
print("")

x1 = float(input("1. souradnice 1. bodu primky: "))
y1 = float(input("2. souradnice 1. bodu primky: "))
x2 = float(input("1. souradnice 2. bodu primky: "))
y2 = float(input("2. souradnice 2. bodu primky: "))
rise = y2-y1
run = x2-x1
if run == 0:
    print("Primka je kolma k ose x a rovnobezna s y, smernice je tedy +/- nekonecno.")
elif rise == 0:
    print("Primka je kolma k ose y a rovnobezna s x, smernice je tedy 0.")
elif run == rise:
    print("Primka je osou I. a III. kvadrantu, smernice je tedy 1.")
elif run == -rise:
    print("Primka je osou II. a IV. kvadrantu, smernice je tedy -1.")
else:
    slope = rise/run
    print("Smernice je "+str(slope)+".")
print("")

x1 = float(input("1. souradnice 1. bodu: "))
y1 = float(input("2. souradnice 1. bodu: "))
x2 = float(input("1. souradnice 2. bodu: "))
y2 = float(input("2. souradnice 2. bodu: "))
x3 = float(input("1. souradnice 3. bodu: "))
y3 = float(input("2. souradnice 3. bodu: "))
rise = y2-y1
run = x2-x1
if run == 0:
    print("1. 2 body tvori kolmici k ose x nebo jsou totozne, takze jejich smernice je +/- nekonecno, respektive nedefinovana. To bych musel osetrit, nacez nemam po 0,5 l Kozla (byl levnejsi nez Coca-Cola) mozkovou kapacitu.")
else:
    slope = rise/run
    #y = kx + q
    #q = y - kx
    offset = y1 - slope*x1
    if (slope*x3 + offset == y3): # dosadit do rovnice x3 a y3
        print("Tyto 3 body lezi na primce.")
    else:
        print("Tyto 3 body nelezi na primce.")
print("")

a = float(input("1. operand: "))
op = input("Operator: ")
b = float(input("2. operand: "))
if op == "+":
    print(a,"+",b,"=",a+b)
elif op == "-":
    print(a,"-",b,"=",a-b)
elif op == "*" or op == "x" or op == "X":
    print(a,"*",b,"=",a*b)
elif op == "/" or op == ":":
    if b == 0:
        print("Zkousis delit 0, co?")
    else:
        print(a,"/",b,"=",a/b)
elif op == "//":
    print("Celociselne",a,"/",b,"=",a//b)
elif op == "**" or op == "^":
    if a == 0 and b == 0:
        print("0^0 neni definovano.")
    else:
        print(a,"^",b,"=",a**b)
elif op == "%" or op == "mod":
    print(a,"%",b,"=",a%b)
else:
    print("Neznam tento operator.")
print("")

print("Konec programu.")

===================================================

# ukoly2d.py


import random

#### opakovani

korun = float(input("Kolik korun mate nahazet do automatu? "))
pade = input("Bere automat 50Kc (A/N)? ")
if pade == "A" or pade == "a" or pade == "Y" or pade == "y" or pade == "Z" or pade == "z" or pade == "J" or pade == "j" or pade == "1" or pade == "T" or pade == "t" or pade == "P" or pade == "p":
    kc50 = korun//50
    print("Padesatikorun: "+str(kc50))
    korun -= kc50*50
 
kc20 = korun//20
print("Dvacetikorun: "+str(kc20))
korun -= kc20*20
 
kc10 = korun//10
print("Desetikorun: "+str(kc10))
korun -= kc10*10
 
kc5 = korun//5
print("Petikorun: "+str(kc5))
korun -= kc5*5
 
kc2 = korun//2
print("Dvoukorun: "+str(kc2))
korun -= kc2*2
 
kc1 = korun//1
print("Jednokorun: "+str(kc1))
korun -= kc1
 
if korun > 0:
    print("Zbylo ti "+str(korun)+", ktere nemuzes zaplatit presne.")
    if korun >= 0.5:
        print("Zaokrouhleni te obere o "+str(1-korun)+" Kc.")
    else:
        print("Zaokrouhleni ti je usetri.")
else:
        print("Castka byla celociselna.")
print("")

#### rozcvicka

n = float(input("Zadej pocet iteraci: "))
if n != n//1:
    print("Desetinna cast zahozena.")
    n = n//1
n = int(n)
for i in range(n):
    print(str(i+1)+", zbyva "+str(n-i)+".")
print("")

#### 1

for i in range(1,n+1):
    print(str(i)+", ",end="")
print("")
print("")

#### 2

for i in range(n):
    print(str(n-i)+", ",end="")
print("")
print("")

#### 3

fak = 1
for i in range(n+1):
    print(str(i)+"! = "+str(fak))
    fak *= i+1
print("")

#### 4

cislo = int(input("Zadej domnele prvocislo: "))
slozene = 0
if cislo < 0:
    cislo = -cislo
    print("Ignoruji minus.")
maxdel = int(round(cislo**(1/2))+1) # nazdar LISPe
if cislo != 1 or cislo != 0:
    for i in range(2,maxdel):
        zb = cislo % i
        if zb == 0:
            print("Deleni cislem "+str(i)+" bylo beze zbytku.")
            slozene = 1
            #break #zakomentuj, pokud chces vsechny delitele
        else:
            print("Deleni cislem "+str(i)+" bylo se zbytkem "+str(zb)+".")
elif cislo == 1:
    print("1 prece neni prvocislo.")
    slozene = -1
elif cislo == 0:
    print("0 je delitelna vsim beze zbytku.")
    slozene = -1
else:
    print("Chyba vstupu.")
    slozene = 666
 
if slozene == 1:
    print("Cislo neni prvocislem.")
elif slozene == 0:
    print("Cislo skutecne je prvocislem.")
print("")

#### modifikace
print("Vsechna mensi prvocisla (nemusi napsat jednociferna):")  
slozene = 0
if cislo > 2:
    for delenec in range(2,cislo):
        for delitel in range(2,maxdel):
            zb = delenec % delitel
            if zb == 0:
                slozene = 1
                break
        if slozene == 0:
            print(delenec)
        slozene = 0
print("")

#### 5

b = input("Zadej par jednicek a nul: ")
l = len(b)
d = 0
chyba = 0
if int(b) > 1:
    for i in range(l):
        if b[i] == "1":
            d += 2**(l-i)
        elif b[i] != "0":
            print("Neplatny vstup.")
            chyba = 1
            break
elif int(b) == 0:
    d = 0
elif int(b) == 1:
    d = 1
if chyba != 1:
    print("Desitkove je to "+str(d)+".")
print("")

print("KONEC")
print("")

===================================================

# ukoly2o.py


#### 1 viz predchozi prvocisla

#### 2

n = int(input("Zadej velikost jednotkove matice: "))
for radka in range(1,n):
    for sloupec in range(1,n):
        if sloupec == n or radka == n:
            print("1",end=", ")
        else:
            print("0",end=", ")
    print("")
print("")

#### 3

n = int(input("Zadej liche cislo, nejmene 5: "))
if n % 2 == 0:
    print("LICHE jsem rikal! Beru o 1 vyssi.")
    ++n
if n < 5:
    print("NEJMENE 5 jsem rikal! Beru 5.")
    n = 5

# Vypis ASCII baracek:
# Sorryjako, neumim se pohybovat po polich v Pythonu.
if n == 3 :
    print(" X ")
    print("XXX")
    print("X X")
    print("XXX")
if n == 5 :
    print("  X  ")
    print(" X X ")
    print("XXXXX")
    print("X   X")
    print("X   X")
    print("X   X")
    print("XXXXX")
if n == 7 :
    print("   X   ")
    print("  X X  ")
    print(" X   X ")
    print("XXXXXXX")
    print("X     X")
    print("X     X")
    print("X     X")
    print("X     X")
    print("X     X")
    print("XXXXXXX")
if n == 9 :
    print("    X    ")
    print("   X X   ")
    print("  X   X  ")
    print(" X     X ")
    print("XXXXXXXXX")
    print("X       X")
    print("X       X")
    print("X       X")
    print("X       X")
    print("X       X")
    print("XXXXXXXXX")
if n == 11 :
    print("     X     ")
    print("    X X    ")
    print("   X   X   ")
    print("  X     X  ")
    print(" X       X ")
    print("XXXXXXXXXXX")
    print("X         X")
    print("X         X")
    print("X         X")
    print("X         X")
    print("X         X")
    print("X         X")
    print("X         X")
    print("XXXXXXXXXXX")

print("")

#pole[n+n//2][n];
#jdi na prostredek 1. radky
#napis tam "X"
#jdi o 1 dolu
#jdi o 1 doleva, napis tam "X", jdi zpatky a o 1 doprava, napis tam "X", jdi zpatky
#jdi o 1 dolu
#jdi o 2 doleva, napis tam "X", jdi zpatky a o 2 doprava, napis tam "X", jdi zpatky
#jdi o 1 dolu
#jdi na zacatek radky
#napis tam 5x za sebou "X"
#jdi o 1 dolu
#3x dej "X" po stranach a jdi dolu
#jdi na zacatek radky
#napis tam 5x za sebou "X"

#### vol1

def fibo(n):
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        return (fibo(n-2)+fibo(n-1))

n = int(input("Kolikaty clen Fibonacciho posloupnosti? "))
print(fibo(n))
print("")

#### vol2

a = int(input("1. cislo: "))
b = int(input("2. cislo: "))
# faktorizuj a, b - jak ulozit prvocinitele?
# najdi spolecne - neumim implementovat
gcd = 0
print("Nejvetsi spolecny delitel je "+str(gcd))
print("")

#### vol3

s = 0
if a>b:
    a = a + b
    b = a - b
    a = a - b
    print("Prohodil jsem to, aby to 2. cislo bylo vetsi.")
for i in range(a,b):
    s += i
print("Soucet cisel v uzavrenem intervalu <"+str(a)+";"+str(b)+"> je "+str(s)+".")
print("")

#### vol4 viz vcerejsi kalkulacka

#### vol5

import random
s = 0
x = 0
for i in range(10):
    x[i]=random.random()*100 # prej int neumi item assignment, tak to proste bude padat, stejne je to posledni cast
    print(x[i])
for i in range(10):
    s += x[i]
    print("Soucet je "+str(s)+".")
sort(x)
print("Nejvetsi cislo je "+str(x[0])+" a za nim je "+str(x[1])+".")
print("")

print("KONEC")
print("")

===================================================

# while.py


#### while1

import array

print("Primitivni scitac. Cisla odentrovavej, pro vyvolani vysledku dej 0.")
cisla=[]
cisla.append(0.0)
while cisla[-1] != 0.0:
    cisla.append(float(input("+ ")))
print ("Soucet techto cisel je "+str(sum(cisla))+".")
# TODO pocet cisel, pocet lichych cisel, nejvetsi, 2. nejvetsi
print("")

#### while2

a = int(input("A = "))
b = int(input("B = "))
cislo = a//b
cislo = b*(cislo+1)
print("Nejmensi cislo vetsi nez A a delitelne B je "+str(cislo)+".")
print("")

#### while3

deci = int(input("Zadej cislo pro prevod: "))
binar = []
if deci != 1 and deci != 0:
    binar.append(deci%2)
    deci //= 2
if deci == 1:
    binar.append(1)
elif deci == 0:
    binar.append(1)
print("Binarne je to "+str(binar)+".")
print("")

#### while 4,5

import random
max = 100
cislo = int(max * random.random()) + 1
hadani = int(input("Hadej cislo mezi 1 a 100: "))
if hadani == "poddat":
    print("Bylo to "+str(cislo)+".")
elif hadani == "ne ty":
    hadani = 50
    pokus = 1
    anone = input("Je tvoje cislo vetsi nez "+str(hadani)+" (a/n)? ")
    if anone == "A" or anone == "a":
        hadani += 100//2**(pokus+1)
    else:
        hadani -= 100//2**(pokus-1)
    ++pokus
    # TODO opakovane puleni intervalu
    print("Myslel sis"+str(hadani)+". (NYI)")
elif hadani == "gtfo":
##problemy s odsazenim  
#elif int(hadani) > cislo:
#    print("Moje cislo je mensi")
#elif int(hadani) < cislo:
#    print("Moje cislo je vetsi.")
#else:
#    print("Uhads.")
    print("")
print("")

#### while 6

z = int(input("Posledni vstup: "))
i = 1
++z
slozene = 0
while z % i != 0:
    if i > z:
        ++z
        i = 2
print("Nejblizsi vyssi prvocislo je"+str(z)+".")
print("")

print("KONEC")
print("")      

===================================================

# slozene.py


import random

print("HADI LOTERIE. Tahne se 10 cisel od 0 do 100. Vsad postupne 5 cisel.")
sazka = [0,0,0,0,0]

for i in range(5):
    sazka[i]=int(input("%d. cislo: " % (i+1)))
print("")
# Zapomnel jsem zavorku a ten skrtic mi rikal jenom "invalid syntax". To je presne to, co me od programovani v QBasicu odrazovalo.

# nacteni 10 cisel pro nasledujici ukoly

tah = [0,0,0,0,0,0,0,0,0,0]
for i in range(10):
    tah[i]=random.randint(1,100)
print("Tazena cisla: ",end="")
for i in range(10):
    print(tah[i],end=" ")
print("")
print("")

#### slozene1

print("Obracene: ",end="")
for i in range(10):
    print(tah[-i-1],end=" ")
print("")

#### slozene2

pultah=tah[0:4]
pultah.sort()
print("Median 1. 5 je: "+str(pultah[2]))

#### slozene3

tah.sort()
print("Nejvetsi mozny rozdil ("+str(tah[9])+" - "+str(tah[0])+") je: "+str(tah[9]-tah[0]))

#### slozene4

print("Nejmensi mozny rozdil ("+str(tah[5])+" - "+str(tah[4])+") je: "+str(tah[5]-tah[4]))

#### slozene5
# funkce sort(), ktera tu nesmi byt pouzita, byla pouzita v ukolu 3, takze neni ani nutne to radit

print("")
print("Serazeno: ",tah)
print("")

#### textova hra

vyhra = 0
for tazeno in range(10):
    for sazeno in range(5):
        if tah[tazeno] == sazka[sazeno]:
            vyhra += 1
if vyhra == 0:
    print("Smula, nic jsi neuhodl. Pravdepodobnost toho je stejne mizerna, podobne jako ve skutecnych loteriich.")
elif vyhra == 5:
    print("Uznavam, ze ta pseudonahodna cisla jsou predvidatelna.")
else:
    print("Neuveritelne! "+str(vyhra)+"x jsi uhodl spravne. Stejne jsi nic nevyhral, protoze Babis hazard zakazal.")
print("")  

print("KONEC")
print("")

===================================================

# ukoly3d.py


#### of1

a1 = float(input("1. clen aritmeticke posloupnosti: "))
an = a1
d = float(input("Diference: "))
n = int(input("Pocet clenu: "))
for i in range(1,n+1):
    print(an,end=" ")
    an += d
print("")
print("")

#### of2

from array import array

it = int(input("Pocet iteraci pro vypocet pi: "))
pi = 0
jmenovatel=[] # deklaruj pole
# pi = 4 * (1/1 - 1/3 + 1/5 + 1/7 + 1/9 + 1/11 + ...)
# nejdrive zavorka
for n in range(it): # vygeneruje jmenovatele 1,3,5,7...
    jmenovatel.append(2*it+1)
for n in range(it): # pricte je k promenne pro vysledek
    if it == 2:
        pi = pi - 1/3
    else:
        pi = pi + 1/jmenovatel[n]
        # v jednom americkem zakone je pi = 4, tak proc ne 2?
pi *= 4 # vynasobi zavorku
print("pi = "+str(pi))
print("")

#### ovf1

rozmer = int(input("Rozmer ctvercovych obrazcu: "))
#mpruhy=[][]
#msachovnice=[][]
# nemam sajna jak se appenduje do vice nez 1 rozmeru
print("1 1 1 1 1")
print("0 0 0 0 0")
print("1 1 1 1 1")
print("0 0 0 0 0")
print("1 1 1 1 1")
print("")
print("1 0 1 0 1")
print("0 1 0 1 0")
print("1 0 1 0 1")
print("0 1 0 1 0")
print("1 0 1 0 1")
print("")

#### ovf2

for x in range(1,10):
    for y in range(1,10):
        print("%3d " % (x*y),end="")
    print("")
print("")

### ovf3

for radka in range(1,rozmer+1):
    for delka in range (1,rozmer+1):
        print("X ", end="")
    print("")
# tenhle cyklus muze jit do prdele
print("")

print("X X X X X")
print("  X X X X")
print("    X X X")
print("      X X")
print("        X")
print("")

for delka in range (1,rozmer+1):
    print("X ", end="")
print("")
for radka in range (2,rozmer):
    print("X ", end="")
    for prazdno in range(2,rozmer):
        print("  ", end="")
    print("X ", end="")
    print("")      
for delka in range (1,rozmer+1):
        print("X ", end="")
print("")
print("")

#### montecarlo

import random
import math

n = int(input("Zadej pocet iteraci pro Monte Carlo: "))
vkruhu = 0
m = n//100
for i in range(n):
    x = random.random()
    y = random.random()
    # kruh: x^2+y^2<=1
    rcekce = x**2+y**2
    if rcekce < 1:
        vkruhu += 1 # python neumi ++vkruhu
    #if n % m == 0:
    #    print(str(i)+". iterace: "+str(4.0 * vkruhu / n))
pi = 4.0 * vkruhu / n
print("pi = "+str(pi))
print("Vedle o "+str(abs(pi-math.pi)))
print("")

===================================================

# montecarlo.py


import random
import math

d = int(input("Zadej pocet desetinnych mist pi: "))
if d > 15:
    print("Presnost math.pi je jen 15 desetinnych mist.")
    d = 15
vkruhu = 0
swap = 0
iterace = 0
approx = []
while round(swap,d) != round(math.pi,d):
    iterace += 1 # mozno init na 1 a inkrement na konci
    x = random.random()
    y = random.random()
    # k: x^2+y^2<=1
    rcekce = x**2+y**2
    if rcekce < 1:
        vkruhu += 1
        swap = 4.0 * vkruhu / iterace # tady to nejspis zere zdroje
    if iterace % 100 == 0:
        approx.append(swap)
pi = 4.0 * vkruhu / iterace
print("1. 100 aproximaci po 100 iteracich:")
for i in range(1,iterace//100):
    print(approx[i-1])
    if i > 100:
        break
print("")
print("Provedeno "+str(iterace)+" iteraci.")
print("Konec seznamu aproximaci pi: "+str(approx[-1]))
print("Vedle o "+str(abs(approx[-1]-math.pi)))
print("Konecne pi = "+str(pi))
print("Vedle o "+str(abs(pi-math.pi)))
print("")

====================================================

# kalendar.py


# funguje pouze od gregorianske reformy 1584

rok = int(input("Rok:"))
mesic = int(input("Mesic:"))
dnu=31

# vedet, kolik ma mesic dnu, a jestli je to unor, tak kdy bude prestupny (gregoriansky)

if mesic == 2:
    if rok % 4 == 0:
        if rok % 400 == 0:
            dnu == 29
        else:
            dnu == 28
    else:
        dnu == 28
elif mesic == 4 or mesic == 6 or mesic == 9 or mesic == 11:
    dnu = 30
elif mesic == 0:
    print("Zobrazeni celeho roku neni implementovano.")
    raise WholeYearDisplayNYI
elif mesic < 0 or mesic > 12:
    print("Neplatne cislo mesice. Protoze Python neumi goto, abyste svou chybu mohli napravit, progam se ukonci.")
    raise MonthInputException
mesice = ("chybny", "leden", "unor", "brezen", "duben", "kveten", "cerven", "cervenec", "srpen", "zari", "rijen", "listopad", "prosinec")
mesvelke = ("CHYBNY", "LEDEN", "UNOR", "BREZEN", "DUBEN", "KVETEN", "CERVEN", "CERVENEC", "SRPEN", "ZARI", "RIJEN", "LISTOPAD", "PROSINEC")
print("Tento mesic je "+mesice[mesic]+", jenz ma "+str(dnu)+" dnu.")

# zjistit, cim mesic zacina

# to neumim, probrat JavaScript z https://jakus.info/skripty/vecny_kalendar.htm

zacina = int(input("Neumim zjistit, kterym dnem zacina. Kolikatym dnem v tydnu (pondeli=1, ..., nedele=7) zacina? "))
print("")
print(mesvelke[mesic]+" "+str(rok))
print("")
print("Po Ut St Ct Pa So Ne")

if zacina == 0:
    raise StartingDayException

# stydim se za to, ze nechapu vnorovani for

if zacina == 1:
    print(" 1  2  3  4  5  6  7")
    print(" 8  9 10 11 12 13 14")
    print("15 16 17 18 19 20 21")
    print("22 23 24 25 26 27 28")
    if dnu == 29:
        print("29")
    elif dnu == 30:
        print("29 30")
    elif dnu > 30:
        print("29 30 31")

if zacina == 2:
    print("    1  2  3  4  5  6")
    print(" 7  8  9 10 11 12 13")
    print("14 15 16 17 18 19 20")
    print("21 22 23 24 25 26 27")
    if dnu == 28:
        print("28")
    elif dnu == 29:
        print("28 29")
    elif dnu == 30:
        print("28 29 30")
    elif dnu > 30:
        print("28 29 30 31")

if zacina == 3:
    print("       1  2  3  4  5")
    print(" 6  7  8  9 10 11 12")
    print("13 14 15 16 17 18 19")
    print("20 21 22 23 24 25 26")
    if dnu == 28:
        print("27 28")
    elif dnu == 29:
        print("27 28 29")
    elif dnu == 30:
        print("27 28 29 30")
    elif dnu > 30:
        print("27 28 29 30 31")

if zacina == 4:
    print("          1  2  3  4")
    print(" 5  6  7  8  9 10 11")
    print("12 13 14 15 16 17 18")
    print("19 20 21 22 23 24 25")
    if dnu == 28:
        print("26 27 28")
    elif dnu == 29:
        print("26 27 28 29")
    elif dnu == 30:
        print("26 27 28 29 30")
    if dnu > 30:
        print("26 27 28 29 30 31")

if zacina == 5:
    print("             1  2  3")
    print(" 4  5  6  7  8  9 10")
    print("11 12 13 14 15 16 17")
    print("18 19 20 21 22 23 24")
    if dnu == 28:
        print("25 26 27 28")
    elif dnu == 29:
        print("25 26 27 28 29")
    elif dnu == 30:
        print("25 26 27 28 29 30")
    if dnu > 30:
        print("25 26 27 28 29 30 31")

if zacina == 6:
    print("                1  2")
    print(" 3  4  5  6  7  8  9")
    print("10 11 12 13 14 15 16")
    print("17 18 19 20 21 22 23")
    if dnu > 29:
        print("24 25 26 27 28 29 30")
    elif dnu == 28:
        print("24 25 26 27 28")
    elif dnu == 29:
        print("24 25 26 27 28 29")
    if dnu > 30:
        print("31")
     
if zacina == 7:
    print("                   1")
    print(" 2  3  4  5  6  7  8")
    print(" 9 10 11 12 13 14 15")
    print("16 17 18 19 20 21 22")
    if dnu > 28:
        print("23 24 25 26 27 28 29")
    elif dnu == 28:
        print("23 24 25 26 27 28")
    if dnu == 30:
        print("30")
    elif dnu > 30:
        print("30 31")
 
print("")

====================================================

# ukoly4d.py


import random

# vektory

xd = float(input("Zadej dimenzi: "))
#vel = float(input("Zadej delku: "))
v=[]
u=[]
skalsouc = 0.0
if d < 2:
    print("Moc mala dimenze.")
    raise UserInputException
for i in range(xd):
    v.append(random.random()*100)
    u.append(random.random()*100)
for i in range(xd):
    skalsouc += u[i]*v[i]
print("Vektor u: "+str(u))
print("Vektor v: "+str(v))
print("Skalarni soucin je: "+str(skalsouc))

# matice

vel = int(input("Zadej velikost matic:"))
mat1 = []
mat2 = []
mats = []
for i in range(vel):
    mat1.append(random.random()*100)
    mat2.append(random.random()*100)
for i in range(vel**2):
    mats[i] = mat1[i]+mat2[i]
print("")
print(mat1)
print("")
print(mat2)
print("")
for i in range(vel):
    for i in range(vel):
        print(mats)
    print("")
print("")
# TODO "kalkulacka" + odecitani a nasobeni cislem

# selection sort

### funkce

# BMI

def bmi(vaha, vyska):
    return vaha/(vyska**2)
def zdravi(bmi):
    if bmi < 18:
        print("Podvaha")
    elif bmi > 30:
        print("Nadvaha")
    else:
        print("Zdravi prospesna vaha")

# pokladna

def read_input():
    print("")
def get_sum(array):
    print("")
def get_max(array):
    print("")
def get_min(array):
    print("")
def get_avg(array):
    print("")
def array_contains(array,number):
    print("")
def do_payment():
    print("")

# prohodit cisla na zadanych pozicich

def prohod(a,b):
    cisla[a],cisla[b]=cisla[b],cisla[a]

cisla = [5, 7, 6, 8]
prohod(cisla, 1, 2)
print(cisla) # vypise [5, 6, 7, 8]

# najit nejmensi cislo

def nejmensi(array):
    print("NYI")

cisla = [7, 6, 5, 8]
i = nejmensi(cisla)
x = cisla[i]
print(x) # vypise cislo 5

# seradit pomoci nejmensi()


### rekurse (volitelne)

# 10 nahodnych cisel

# faktorial

# fibonacci

# vyplnit funkci 5x5 matici 0..24 a vytisknout

# mozne tahy jezdce na 4,4 ve 3 kolech



print("KONEC")
print("")

====================================================



Uukoly na 4. den nebyly dokonczeny, protozse se zaczlo vysvjetlovat C, abychom otestovali odevzdaavacii systeem a zjistilo se, kdo tam nenii evidovanyy.

Nespornje lepszii rzseszenii, jakozs i zadaanii, jsou tady: http://cw.fel.cvut.cz/wiki/courses/pri-bootcamp/start

No comments:

Post a Comment

Barely anyone comments, so I don't moderate. Free advertising, I guess.