Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1575/14228
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: cteni_wav.py
4 # Datum: 05.02.2015 11:03
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: čtení hlavičky souboru WAV
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10
11 import struct
12 ############################################################################
13 # WAV formát
14 # http://www.fi.muni.cz/~qruzicka/Duffek/wav.html
15
16 f = open('left.wav', 'r')
17
18 f.read(8)
19 wID = f.read(4)
20 fID = f.read(4)
21
22 fLen = f.read(4)
23 wFormatTag = f.read(2)
24 nChannels = f.read(2)
25 nSamplesPerSec = f.read(4)
26 nAvgBytesPerSec = f.read(4)
27 nBitsPerSample = f.read(2)
28 # dohromady by to šlo udělat i jedním read()
29 dohromady = b''.join((fLen, wFormatTag, nChannels, nSamplesPerSec,
30 nAvgBytesPerSec, nBitsPerSample))
31 abych_to_videl = struct.unpack('IHHIIH', dohromady)
32
33 print(wID)
34 print(fID)
35 print(repr(fLen))
36 print(repr(wFormatTag))
37 print(repr(nChannels))
38 print(repr(nSamplesPerSec))
39 print(repr(nAvgBytesPerSec))
40 print(repr(nBitsPerSample))
41 f.read(2)
42 print(f.read(4))
43
44 print(abych_to_videl)
45
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: fibonacci.py
4 # Datum: 07.05.2015 10:33
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Fibonacciho posloupnost
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10
11
12 def fib(n):
13 if n == 0:
14 return 0
15 elif n == 1:
16 return 1
17 elif n > 1:
18 i = 2
19 x, y = 0, 1
20 while i <= n:
21 i += 1
22 vysledek = x + y
23 x, y = y, vysledek
24 return vysledek
25 else:
26 return None
27
28
29 def fibR(n):
30 if n == 0:
31 return 0
32 elif n == 1:
33 return 1
34 elif n > 1:
35 return fibR(n-2) + fibR(n-1)
36 else:
37 return None
38
39
40 def fibG(n):
41 yield 0
42 yield 1
43 x, y = 0, 1
44 i = 2
45 while i <= n:
46 yield x + y
47 x, y = y, x+y
48 i += 1
49 return
50
51 # n = 10
52 # print(fib(n))
53 # print(fibR(n))
54
55 g = fibG(10)
56 print(g.next())
57 print(g.next())
58 print(g.next())
59 print(g.next())
60 print(g.next())
61 print(g.next())
62 print(g.next())
63 print(g.next())
64 print(g.next())
65
66 print('-----------------')
67 for i in fibG(10):
68 print(i)
69
70 gen = [x*x for x in range(10)]
71 print (gen)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 ############################################################################
4 from __future__ import division
5 from __future__ import print_function
6 from __future__ import unicode_literals
7 from __future__ import generators
8
9 seznam = list( range(10, 20) )
10
11 for cislo in seznam:
12 if cislo % 3 == 0:
13 print(cislo, "je dělitelne 3")
14 print(cislo)
15
16
17 for cislo in range(100):
18 if cislo % 3 == 0:
19 print(cislo, "je dělitelne 3")
20 print(100 * cislo)
21 print(100 * cislo)
22 if cislo % 5 == 0:
23 print(cislo, "je dělitelne 5")
24
25 seznam = [ 2 ** i for i in range(100) if i < 20 ]
26 print(seznam)
27
28 import random
29 nahoda = [ random.randint(0, 10) for _ in range(10) ]
30 print(nahoda)
31
32 nahoda = []
33 for i in range(10):
34 nahoda.append( random.randint(0, 10) )
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: kalendar.py
4 # Datum: 30.10.2014 10:53
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Autor: Marek Nožka, marek <@t> tlapicka <d.t> net
7 # Licence: GNU/GPL
8 # Úloha: Ascii kalendář
9 ############################################################################
10 from __future__ import division
11 from __future__ import print_function
12 from __future__ import unicode_literals
13 from __future__ import generators
14
15 import sys
16 echo = sys.stdout.write
17
18 den = tuple(range(1, 32))
19
20 '''tato proměnná obsahuje den v týdnu, kterým začíná měsíc'''
21 prvni = 3 # středa
22
23 echo(' ' * 3 * (prvni - 1) )
24 for i in den:
25 echo('{0:2d}'.format(i) )
26 if i % (7-prvni+1) == 0:
27 echo('\n')
28 else:
29 echo(' ')
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: kladna_a_zaporna.py
4 # Datum: 23.10.2014 11:01
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Je dána posloupnost celých čísel. Přerovnejte čísla tak, aby na
8 # začátku posloupnosti byla všechna záporná čísla v původním pořadí
9 # a za nimi všechna nezáporná čísla v opačném pořadí. Upravenou
10 # posloupnost vypište.
11 ############################################################################
12 from __future__ import division
13 from __future__ import print_function
14 from __future__ import unicode_literals
15 from __future__ import generators
16
17 radek = raw_input("zadej cisla > ")
18 radek = radek.split()
19
20 nezaporna = []
21 zaporna = []
22 for i in radek:
23 i = int(i)
24 if i >= 0:
25 nezaporna.append(i)
26 else:
27 zaporna.append(i)
28
29 zaporna.reverse()
30 hotovo = nezaporna + zaporna
31 print(hotovo)
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: myLMS.py
4 # Datum: 22.07.2014 15:41
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: adaptivní filter (LMS)
8 ##############################################################################
9 from __future__ import division, print_function, unicode_literals
10 import random
11
12
13 def zobraz(data):
14 for radek in data:
15 for x in radek:
16 print(x, end='')
17 print()
18
19
20 def generuj(pradku=12, psloupcu=12):
21 data = []
22 for _ in range(pradku):
23 radek = []
24 for _ in range(psloupcu):
25 radek.append(random.randint(0, 1))
26 data.append(radek)
27 return data
28
29 d = generuj(10, 20)
30
31 for r in range(len(d)):
32 for s in range(len(d[0])):
33 if r == 0 or s == 0 or r == len(d)-1 or s == len(d[0])-1:
34 d[r][s] = 2
35
36
37 zobraz(d)
38
39 # import pylab as lab
40 # lab.imshow(d, interpolation='none', cmap='binary')
41 # lab.show()
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: mpl.py
4 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 # Licence: GNU/GPL
6 # Úloha: výkon střídavého proudu
7 ##############################################################################
8 from __future__ import division, print_function, unicode_literals
9
10 import pylab as lab
11 from pylab import pi
12
13 f = 50
14 T = 1/f
15 fi = lab.deg2rad(int(raw_input("zadej fázový posuv > ")))
16
17 t = lab.linspace(0, 1.8 * T, 300)
18 u = 1.5 * lab.sin(2*pi*f*t)
19 i = 1.2 * lab.sin(2*pi*f*t + fi)
20
21 lab.figure(1)
22 lab.plot(t, u, label='napětí')
23 lab.plot(t, i, label='proud')
24 lab.plot(t, u*i, label='výkon')
25 lab.grid(True)
26 lab.xlim(min(t), max(t))
27 lab.legend()
28
29 lab.show()
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Licence: GNU/GPL
4 # Úloha: harmonické složky obdelníkového časového průběhu
5 ##############################################################################
6 from __future__ import division, print_function, unicode_literals
7
8 import pylab as lab
9 from pylab import pi
10
11
12 Um = 1
13 f = 1
14 DCL = 0.5
15 N = lab.arange(0, 10)
16 U = 2.*Um*DCL*lab.sinc(N*DCL)
17 U[0] = U[0]/2
18
19 t = lab.linspace(0, 2, 300)
20
21 lab.figure(1)
22 u = lab.zeros(len(t))
23 for n in N:
24 un = U[n] * lab.cos(2*pi*n*f*t)
25 u += un
26 lab.plot(t, un, '--')
27 lab.plot(t, u, 'r-', lw=3)
28 lab.grid(True)
29 lab.show()
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: myLMS.py
4 # Datum: 22.07.2014 15:41
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: adaptivní filter (LMS)
8 ##############################################################################
9 from __future__ import division, print_function, unicode_literals
10
11 import pylab as lab
12 from random import random
13 obrazek = lab.imread('samec.png')
14 obrazek = lab.imread('sachy.png')
15
16 print(obrazek[0][0][0])
17 print(obrazek[0][0][1])
18 print(type(obrazek[0][0][2]))
19
20 novy = []
21 for radek in obrazek:
22 novy_r = []
23 for bod in radek:
24 # seda = 0.3*bod[0] + 0.59*bod[1] + 0.11*bod[2]
25 seda = 0.33*bod[0] + 0.33*bod[1] + 0.33*bod[2]
26 if seda > random():
27 novy_r.append(0)
28 else:
29 novy_r.append(1)
30 novy.append(novy_r)
31
32
33 lab.imshow(obrazek)
34 lab.imshow(novy, cmap='binary')
35 lab.show()
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: opp.py
4 # Datum: 29.01.2015 10:35
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Ukázka OOP
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10 import math
11
12
13 class Ccislo():
14 """můj Datový typ pro komplaxní čísla"""
15 def __init__(self, re, im):
16 self.re = re
17 self.im = im
18
19 def __del__(self):
20 print('umírám')
21
22 @property
23 def arg(self):
24 return math.atan(self.im/self.re)
25
26 def __add__(a, b):
27 return Ccislo(a.re + b.re, a.im + b.im)
28
29 def __str__(self):
30 return "{} + {}j".format(self.re, self.im)
31
32
33 class Ccislo2(Ccislo):
34 @property
35 def arg(self):
36 return math.degrees(math.atan(self.im/self.re))
37
38
39 x = Ccislo2(3, 4)
40 y = Ccislo(4, 3)
41 Q = Ccislo(4, 3)
42 del(Q)
43 print(x.arg)
44 print(y.arg)
45
46 z = x + y
47 print(z.re)
48 print(z.im)
49 print(z.arg)
50
51 print(x)
52 print(y)
53 print(z)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: platidla.py
4 # Datum: 06.11.2014 11:03
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha:
8 ############################################################################
9 from __future__ import division
10 from __future__ import print_function
11 from __future__ import unicode_literals
12 from __future__ import generators
13
14 platidla = [1, 2, 5]
15
16 while platidla[-1] < 5000:
17 platidla.append( platidla[-3] * 10 )
18 platidla.reverse()
19
20 castka = raw_input('zadej částku > ')
21 castka = int(castka)
22
23 for bankovka in platidla:
24 if castka // bankovka == 0:
25 continue
26 else:
27 print(castka // bankovka, 'x', bankovka)
28 castka = castka % bankovka
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 ############################################################################
4
5 from __future__ import division
6 from __future__ import print_function
7
8 vek = input("Kolik ti je? > ")
9
10 if vek < 6:
11 print('Ti jsi ještě předškolák.')
12 a = 10 * 59
13 print('Ti jsi ještě předškolák.')
14 elif vek == 6:
15 print('Hurá jdeš do školy.')
16 elif vek <= 17:
17 print('Ještě prisim tě poslouchej maminku.')
18 elif vek > 18 and vek < 65:
19 print('Makej, makej, makej.')
20 else:
21 print('Jsi fakt starej.')
22 print("konec")
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: prumer.py
4 # Datum: 30.10.2014 10:01
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Vypočítá aritmetický průměr
8 ############################################################################
9 from __future__ import division
10 from __future__ import print_function
11 from __future__ import unicode_literals
12 from __future__ import generators
13
14 import random
15
16 '''Pokud zádám jen Enter, čísla se vygenerují náhodně,
17 jinak se čtou ze vstupu.'''
18 radek = raw_input('zadej čísla oddělená mezerou > ')
19
20 if radek == '':
21 cisla = []
22 for _ in range(20):
23 cisla.append( random.randint(-20, 20) )
24 cisla = [ random.randint(-20, 20) for _ in range(20) ]
25 else:
26 cisla = radek.split() # rozdělím řetězec
27 for i, cislo in enumerate(cisla):
28 cisla[i] = int(cislo)
29 cisla = [ int(i) for i in cisla ] # převedu řetězce na čísla
30
31 print(cisla)
32
33 suma = 0
34 for hodnota in cisla:
35 suma = suma + hodnota
36 print("Průměr:", suma / len(cisla) )
37
38 pocet_kladnych = 0
39 for hodnota in cisla:
40 if hodnota > 0:
41 pocet_kladnych = pocet_kladnych + 1
42 print("Počet kladných:", pocet_kladnych)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: prvocisla.py
4 # Datum: 16.10.2014 09:59
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Provočísla
8 ############################################################################
9 from __future__ import division
10 from __future__ import print_function
11 from __future__ import unicode_literals
12 from __future__ import generators
13
14
15 def jeToProvocislo(cislo):
16 for i in range(2, int(cislo ** 0.5) + 1):
17 if cislo % i == 0:
18 return False # ukončí funkci s danou návratovou hodnotou
19 return True
20
21 # vypíšu všechna prvočísla menší než 1000
22 for i in range(2, 1000):
23 if jeToProvocislo(i):
24 print(i, end=' ')
25 print()
26
27 # vypíšu prvních 1000 prvočísel
28 i = 2
29 pocet = 0
30 while pocet < 1000:
31 if jeToProvocislo(i):
32 print(i, end=' ')
33 pocet = pocet + 1
34 i = i + 1
35 print()
36
37
38 ############################################################################
39 # načtu vstup, cislo je řetězec
40 cislo = raw_input("Zadej celé číslo > ")
41 # převedu řetězec na číslo
42 cislo = int(cislo)
43
44 AnoNe = True
45 # zjišťuji jestli je cislo prvočíslo
46 for i in range(2, cislo // 2):
47 if cislo % i == 0:
48 AnoNe = False
49 break # když najdu prvního dělitele vyskočím z cyklu ven
50 if AnoNe:
51 print("Hurá, hurá", cislo, "je prvočíslo")
52 else:
53 print(cislo, "není prvočíslo")
54
55 # ještě jedno trochu jinak
56 for i in range(2, cislo // 2):
57 if cislo % i == 0:
58 print(cislo, "není prvočíslo")
59 exit() # ukončení programu
60 print("Hurá, hurá", cislo, "je prvočíslo")
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: reverzni_kalkulator.py
4 # Datum: 22.01.2015 10:29
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Autor: Marek Nožka, marek <@t> tlapicka <d.t> net
7 # Licence: GNU/GPL
8 # Úloha:
9 ############################################################################
10 from __future__ import division, print_function, unicode_literals
11
12 ############################################################################
13 zasobnik = []
14
15
16 def fce2argumenty(funkce):
17 if len(zasobnik) >= 2:
18 b = zasobnik.pop()
19 a = zasobnik.pop()
20 try:
21 zasobnik.append(funkce(a, b))
22 except Exception as e:
23 print('Chyba:', e.__class__)
24 print('Chyba:', e.message)
25 zasobnik.extend([a, b])
26 else:
27 print('"' + token + '":',
28 'nelze provést, v zásobníku musí být alespoň dvě čísla')
29
30
31 def plus(a, b):
32 return a+b
33
34
35 def minus(a, b):
36 return a-b
37
38 while True:
39 try:
40 radek = raw_input(str(zasobnik) + ' >> ')
41 for token in radek.split():
42 try:
43 zasobnik.append(float(token))
44 except ValueError:
45 if token == '+':
46 fce2argumenty(plus)
47 elif token == '-':
48 fce2argumenty(minus)
49 elif token == '*':
50 fce2argumenty(lambda x, y: x * y)
51 elif token == '/':
52 fce2argumenty(lambda x, y: x / y)
53 except EOFError:
54 exit(0)
55 except KeyboardInterrupt:
56 exit(1)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: soubory.py
4 # Datum: 05.02.2015 10:03
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Práce se soubory
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10 import os
11
12
13 f = open('soubor.txt', 'w')
14
15 f.write('ahoj')
16 f.write(' nazdar\n')
17 f.write('cau\n')
18
19 raw_input('1. stiskni enter')
20 f.flush()
21
22 raw_input('2. stiskni enter')
23 f.write('haloooo\n')
24 f.writelines(['Karel\n', "Bob\n", 'Bobek\n', 'Nijak\n'])
25
26 f.close()
27 ############################################################
28 print('######################################')
29 f = open('soubor.txt', 'r')
30 byte = f.read(1)
31 print(byte)
32 byte = f.read(1)
33 print(byte)
34
35 radek = f.readline()
36 print(radek)
37
38 # čtu zanak po znaku
39 while True:
40 znak = f.read(1)
41 if znak == '':
42 break
43 print(znak.upper(), end=':')
44
45 cely = f.read()
46 print(cely)
47 f.close()
48
49 ############################################################
50 print('######################################')
51 f = open('soubor.txt', 'r+')
52
53 neco = f.read(3)
54 print(neco)
55 print(f.tell())
56 f.write('TADY')
57 print(f.tell())
58 f.seek(14)
59 f.write('14')
60
61 # o 4 znky dál
62 f.seek(4, os.SEEK_CUR)
63 f.write('RELATIVNE')
64
65 # jdu na konec souboru
66 f.seek(0, os.SEEK_END)
67 f.write('\nKonec')
68
69 f.write('\x0d')
70 f.write('\x0d')
71 f.write('\x0d')
72 f.write('neco')
73
74
75 f.close()
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: statistika_poctu_znaku.py
4 # Datum: 15.01.2015 10:28
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Vypíše na výstup počet použití jednotlivých znaků
8 # načtených ze vstupu
9 ############################################################################
10 from __future__ import division, print_function, unicode_literals
11
12 ############################################################################
13 pocet = {}
14 while True:
15 try:
16 radek = raw_input()
17 for znak in radek.upper():
18 if znak.isalpha():
19 if znak in pocet:
20 pocet[znak] += 1
21 else:
22 pocet[znak] = 1
23 except EOFError:
24 m = max(pocet.values())
25 for znak, pocet in pocet.items():
26 print("{:>2s}: {:6d} |{:s}".format(znak, pocet,
27 '#' * int(60*pocet/m)))
28 exit(0)
29 except KeyboardInterrupt:
30 exit(1)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: vyjiky.py
4 # Datum: 08.01.2015 10:18
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: sečte všechny čísla zadaná na řádek
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10
11 ############################################################################
12 while True:
13 try:
14 line = raw_input('suma: zadej čísla oddělená mezerou\n >> ')
15 if 'konec' in line.lower():
16 exit(0)
17 suma = 0
18 for i in line.split():
19 try:
20 suma += float(i)
21 except ValueError:
22 print("Vynechávám", i, "-- není to číslo")
23 print('-->', suma, '\n')
24 except EOFError:
25 print("\nKonec")
26 exit(0)
27 except KeyboardInterrupt:
28 print("\nPřerušeno uživatelem")
29 exit(1)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: trojuhelnik.py
4 # Datum: 09.10.2014 10:23
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Popis: Trojúhelníkový fraktál
8 ############################################################################
9 from __future__ import division
10 from __future__ import print_function
11 from __future__ import unicode_literals
12 from __future__ import generators
13
14 import turtle as t
15
16
17 def troj(delka=100, n=2):
18 if n >= 3:
19 troj(delka / 3, n - 1)
20 else:
21 t.forward(delka)
22 t.left(60)
23 if n >= 2:
24 troj(delka / 3, n - 1)
25 else:
26 t.forward(delka)
27 t.right(120)
28 if n >= 2:
29 troj(delka / 3, n - 1)
30 else:
31 t.forward(delka)
32 t.left(60)
33 if n >= 3:
34 troj(delka / 3, n - 1)
35 else:
36 t.forward(delka)
37
38
39 def vlocka(velikost=100, pstran=6, rev=False):
40 for _ in range(pstran):
41 troj(velikost / 3, 3)
42 if rev:
43 t.left( 360 / pstran )
44 else:
45 t.right( 360 / pstran )
46
47 t.up()
48 t.goto(-200, 0)
49 t.down()
50 """troj(200, 4)"""
51 vlocka(rev=0)
52 vlocka(rev=1)
53 t.exitonclick()
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: vyjiky.py
4 # Datum: 08.01.2015 10:18
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: podělí čísla na řádku
8 ############################################################################
9 from __future__ import division, print_function, unicode_literals
10
11 ############################################################################
12 while True:
13 try:
14 line = raw_input('deleni >> ')
15 if 'konec' in line.lower():
16 exit(0)
17 a, b = line.split()
18 print(float(a) / float(b))
19 except EOFError:
20 print("\nKonec")
21 exit(0)
22 except KeyboardInterrupt:
23 print("\nPřerušeno uživatelem")
24 exit(1)
25 except ValueError:
26 print("\nMusíš zadat celé číslo..")
27 except ZeroDivisionError:
28 print("\nNelze dělit nulou!")
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: zelva.py
4 # Datum: 02.10.2014 10:02
5 ############################################################################
6 from __future__ import division
7 from __future__ import print_function
8 from __future__ import unicode_literals
9 from __future__ import generators
10
11 import turtle as t
12 import math
13
14 # t.speed(0)
15 t.up()
16 t.goto(-300, 0)
17 t.down()
18
19
20 def n_uhelnik(n=5, krok=100):
21 if n < 1:
22 return
23 for _ in range(n):
24 t.forward(krok)
25 t.left(360 / n)
26 return
27
28
29 def sinus(amplituda, perioda):
30 deleni = 256 # počet díléčků pro periodu
31 pocatekX = t.xcor()
32 pocatekY = t.ycor()
33 krok = perioda / deleni
34 krokUhel = 2 * math.pi / deleni
35 for i in range(deleni):
36 t.goto(pocatekX + i * krok,
37 pocatekY + amplituda * math.sin( i * krokUhel ) )
38 ############################################################################
39
40 n_uhelnik(7)
41 n_uhelnik(7, 50)
42 n_uhelnik()
43 n_uhelnik(krok=200, n=8)
44 t.exitonclick()
45 exit(0)
46
47
48
49
50 t.goto(50, 50)
51 sinus(100, 200)
52
53
54 for i in range(4):
55 t.forward(100)
56 t.left(90)
57
58 t.left(45)
59
60 i = 0
61 while i < 4:
62 t.forward(100)
63 t.left(90)
64 i = i + 1
65
66
67 ############################################################################
68 t.exitonclick()