Tyto stránky již nejsou udržovány. Obsah je postupně přesouván/aktualizován na adrese chytrosti.marrek.cz.
1575/14229
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Datum: Wed Oct 24 08:51:05 2012
4 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 # Licence: GNU/GPL
6 # Úloha:
7 # Popis: převodní tabulka °C -> °F
8
9 """ String format:
10 http://docs.python.org/2.7/library/stdtypes.html?highlight=str.format#string-formatting
11 """
12 while True:
13 start = input('start = ')
14 konec = input('konec = ')
15 krok = input(' krok = ')
16
17 C = start
18 while C<=konec:
19 F= 9.0*C/5 + 32
20 # print C,"°C = ",F,"°F"
21 print u"{0:.2f}°C = {1:7.2f}°F".format(C,F)
22 C = C + krok
23
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: cifry_vzestupne.py
4 # Datum: 14.11.2012 08:17
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Je dána posloupnost celých čísel. Vypište jen ta čísla,
8 # jejíchž cifry jsou ve vzestupném pořadí.
9 ############################################################################
10
11 radek = raw_input("zadej mezerou oddělená čísla: ")
12 cisla = radek.split()
13
14 # podprogram rozhodne jestli cilo c obsahuje cifry ve vzestupnem poradi
15 def jeCisloOK(c):
16 if len(c)<=1: # jednociferná čísla nemají cifry ve vzestupném pořadí
17 return False
18 i = 1
19 while i<len(c):
20 if not( int(c[i-1]) < int(c[i]) ):
21 return False # ukončí podprogram
22 i += 1 # posunu i pro další obrátku
23 return True # pokud projdu všechno a nezjistím problém vrátím True
24
25
26
27 i = 0 # i je řídící proměná
28 while i < len(cisla):
29 cislo = cisla[i]
30 if jeCisloOK(cislo) :
31 print cislo
32 i += 1 # posunu si i pro daší obrátku cyklu
33
34 print "#### ještě jesnou bez podprogramu ######"
35
36 i = 0 # i je řídící proměná
37 while i < len(cisla):
38 cislo = cisla[i]
39 if len(cislo)<=1:
40 continue # skočí na další obrátku cylku a znovu kontroluje podmínku
41 j = 1 # řídící proměná cyklu
42 OK = True # pamatuji si jestli mám číslo tisknout
43 while j<len(cislo):
44 if not( int(cislo[j-1]) < int(cislo[j]) ):
45 OK = False
46 break # okamžitě vyskočí z cyklu
47 j += 1 # posunu j pro další obrátku
48 if OK:
49 print cislo
50 i += 1 # posunu si i pro daší obrátku cyklu
51
1 # -*- coding: utf8 -*-
2
3
4 i=1 # i je řídící proměná cyklu
5 while i<=10:
6 mocnina = i*i
7 print i,"->",mocnina
8 i = i+1
9
10 print "=========================================="
11
12 i=1 # i je řídící proměná cyklu
13 while i<=100:
14 if i>30 and i<40 or i>70 and i<77:
15 mocnina = i*i
16 print i,"->",mocnina
17 i = i+1
18
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: easygraph.py
4 # Datum: 06.03.2013 08:41
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Tvorba grafu ze vstupního souboru
8 ###################################################3
9
10 import sys
11 import pylab as lab
12 from pylab import pi
13
14
15 if len(sys.argv) > 1:
16 soubor = sys.argv[1]
17 else:
18 soubor=raw_input("Zadej jméno souboru > ")
19
20 # otevřeme soubor
21 f = open(soubor,'r')
22
23 x = f.readline().strip().split()
24 y = f.readline().strip().split()
25
26
27
28 # uzavřu soubor
29 f.close()
30
31 lab.plot(x,y)
32 lab.show()
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: fce_global_local.py
4 # Datum: 16.01.2013 08:41
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Globální a lokolní proměnné
8 ############################################################################
9
10 def funkceA():
11 # globální prom. je možné číst
12 print "A:",a,b, id(a), id(b)
13
14 def funkceB():
15 a=30 # a je lokální proměná dostupná jen z této funkce
16 print "B:",a,b , id(a), id(b)
17
18 def funkceC():
19 # x je lokální proměná dostupná jen z této funkce
20 x=123456
21 print "C:",x
22
23 def funkceD():
24 # y je globální proměná přístupná z této funkce i z hlavního programu
25 global y
26 y=123456
27 print "D:",y
28 ############################################################################
29
30 # Hlavní program
31
32 a=10 # Globání proměnné
33 b=77
34
35 y=9999999
36
37 print a,b, id(a), id(b)
38 funkceA()
39 print a,b
40 funkceB()
41 print a,b
42 funkceC()
43 #print x # CHYBA, x je definová uvnitř funkce a proto není vidět
44 funkceD()
45 print y
46
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: fce_navratova-hodnota.py
4 # Datum: 16.01.2013 09:07
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: funkce a její návratová hodnota
8 ############################################################################
9 # Definice funkcí
10
11 def secti(a,b):
12 soucet = a + b
13 return soucet # ukončí funkci a vydá hodnotu
14 bla= 12 # tyto řádky už se nevykonají, protože jsou za return
15 print bla
16
17 def mocnina(x,n):
18 return x**n
19
20 def faktorian(n):
21 vysl = 1
22 i=1
23 while i<=n:
24 vysl = vysl * i
25 i = i +1
26 return vysl
27
28 ############################################################################
29 # Hlavní program
30
31 x=10
32 y=13
33
34 suma = secti(x,y)
35 print suma
36 print secti(22,49)
37
38 print mocnina(2,16)
39
40 print "5! =", faktorian(5)
41 print "10! =", faktorian(10)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: fibonacci.py
4 # Datum: 05.12.2012 08:22
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Fibonacciho posloupnost
8 ############################################################################
9
10 # podprogram
11 def Fib(n):
12 if n < 0:
13 print "Index musí být kladný"
14 elif n == 0:
15 print 0
16 elif n == 1:
17 print 0,1
18 else:
19 print 0,1,
20 # v proměný si uchovávám hodnoty předhozích dvou čísel
21 (F_2, F_1 ) = (0,1)
22 # řídící proměná cyklu
23 i = 2
24 while i<=n :
25 i += 1
26 Fn = F_2 + F_1
27 print Fn,
28 (F_2, F_1) = ( F_1, Fn)
29
30 # rekurzivní definice
31 def FibR(n):
32 if n==0:
33 return 0
34 elif n==1:
35 return 1
36 elif n>1:
37 return FibR(n-1)+FibR(n-2)
38
39
40 maximum = input('zadej maximální index Fibonacciho poslounosti > ')
41 Fib(maximum)
42 print '\n######################\n'
43 print FibR(maximum)
44
45
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: hvezdicky.py
4 # Datum: 28.11.2012 08:39
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: trojúhelník z hvezdicek
8 ############################################################################
9
10 import random
11 ############################################################################
12 r = input("kolik řádků? >>")
13
14
15 pMezer=r-1
16 pZnaku=1
17
18 znaky=("#", '@', '§', '%', ';', 'ž', 'μ','±', 'œ', 'α', 'ω', 'Ω')
19
20 for _ in range(r):
21 tisk=''
22 for _ in range(pZnaku):
23 nahoda=random.randint(0,len(znaky)-1) # náhodné číslo v rozshahu indexů 'znaky'
24 tisk = tisk + znaky[ nahoda ]
25 print pMezer*' ' + tisk
26 pZnaku +=2
27 pMezer -=1
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: matplotlibUvod.py
4 # Datum: 13.02.2013 08:41
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: úvod do matplotlib
8 ###################################################3
9
10 import pylab as lab
11 from pylab import pi
12
13 x = ( 0,1,3,6,7 )
14 y= lab.array(( 5,4,6,4,2 ))
15
16 #http://matplotlib.org/api/pyplot_api.html?highlight=pyplot.plot#matplotlib.pyplot.plot
17 fig1=lab.figure(1)
18 lab.plot(x,y,'r:+')
19 lab.plot(x,y+1,'#aa0000', linestyle='-.', alpha=0.5,
20 marker='o', markerfacecolor='green', markersize=20)
21 lab.grid()
22 lab.title('Titulek')
23 lab.xlabel(u'osa x')
24 lab.ylabel(u'závislá proměnná')
25 lab.xlim([-2,10])
26 lab.ylim([-1,8])
27
28 # hladká řívka
29 newX = lab.linspace(min(x), max(x),300)
30 from scipy.interpolate import spline
31 newY = spline(x,y,newX)
32 lab.plot(newX,newY,'b-')
33
34 fig2=lab.figure(2)
35 # čas od 0 do 3, 100 hodnot
36 t=lab.linspace(0,0.8,100)
37 # napětí
38 f=3
39 u= 2+ lab.sin(2*pi*f*t+pi/3.)
40 lab.plot(t,u,'b-')
41 lab.title('Sinus')
42 lab.xlabel(u't [s]')
43 lab.ylabel(u'sin(2pift)')
44 lab.grid()
45 lab.xlim([0,0.8])
46 lab.ylim([0,4])
47
48
49 #### VACH
50 fig3=lab.figure(3)
51 u= (0, 0.3, 0.5, 0.8, 1, 2, 3)
52 i= (0, 0.1, 0.5, 1 , 3, 10, 30)
53
54 lab.plot(u,i,'ro',label='vzorky')
55 lab.grid()
56 lab.xlim( (-1, 4) )
57 lab.ylim( [-1, 35] )
58 # lomená čára
59 lab.plot(u,i,'y-',label='takto to nechci')
60 #hladká křivka
61 import scipy.interpolate as interpol
62 # vyrobím znovu osu x ale s mnohem větším počtem (300) bodů
63 newU=lab.linspace( min(u), max(u), 300 )
64 # vyrobím interpolační funkci
65 funkce=interpol.UnivariateSpline(u,i)
66 # právě vyrobená funkce mi vypočítá nové hodnoty osy Y
67 newI = funkce(newU)
68 lab.plot(newU,newI,'b-', label=u'proložím hladkou křivkou')
69
70 # ještě jednou, ale hladká křivka bude procházet všemi body
71 funkce=interpol.UnivariateSpline(u,i,s=0)
72 newI = funkce(newU)
73 lab.plot(newU,newI,'g-', label=u'křivka prochází všemi body')
74
75
76 lab.legend(loc='best')
77
78 lab.close(fig1)
79 lab.close(fig2)
80 fig3.show()
81 lab.show()
82
1 # -*- coding: utf8 -*-
2
3 cislo=0
4
5 def soucet(a,b):
6 return a+b
7
8 def inc():
9 global cislo
10 cislo = cislo + 1
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3
4 import mujModul
5
6 print mujModul.cislo
7 mujModul.inc()
8 print mujModul.cislo
9
10 mujModul.cislo = 20
11 print mujModul.cislo
12 mujModul.inc()
13 print mujModul.cislo
14
15 print mujModul.soucet(2,7)
16
17 ####################################################
18
19
20 import mujModul as moje
21 print moje.cislo
22 print dir(moje)
23 print moje.__name__
24 print moje.__file__
25 print moje.__doc__
26
27 ####################################################
28
29 from mujModul import cislo # prom. cislo je KOPIE prom. mujModul.cislo
30 from mujModul import soucet
31
32 print cislo
33 print mujModul.cislo
34 mujModul.cislo=894
35 print cislo
36
37 print soucet(22,76)
38
39 from mujModul import *
40
41
42 ####################################################
43 import sys
44
45 sys.path.insert(0,'./mm/')
46 sys.path = ['./mm'] + sys.path
47 #print sys.path
48 import mod
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: pocitani-znaku.py
4 # Datum: 17.04.2013 09:05
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: počítadlo znaků
8 ############################################################################
9
10 import sys
11 from sys import stdin, stdout, stderr
12 ############################################################################
13
14 cesta= sys.argv[0]
15
16 # otevřeme souboru
17 f = open(cesta, 'r')
18
19 pocty = {} # počty znaků
20 # procházím soubor znak po znaku:
21 while True:
22 znak = f.read(1) # na konci souboru .read() vrátí prázndný řetězec
23 if znak == '':
24 break
25 if znak == ' ' or znak == '\n' or znak == '\t':
26 continue # přeskočím bílé znaky
27 if pocty.has_key(znak) :
28 pocty[znak] += 1
29 else :
30 pocty[znak] = 1
31
32 # uzavřu soubor
33 f.close()
34
35 # Tisk výsledků
36 for klic in pocty.keys() :
37 print klic, '->', pocty[klic]
38
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: prace_se_soubory.py
4 # Datum: 23.01.2013 08:15
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: úvod do práce se soubory
8 ############################################################################
9
10 # f je tzv. ovladdač -- handler
11 f = open("soubor.txt", "r")
12
13 # čtu řádek
14 radek = f.readline()
15 print "----------------"
16 print radek,
17 print "----------------"
18
19 # čtu jeden znak -- jeden Byte
20 znak = f.read(1)
21 print znak
22 znak = f.read(1)
23 print znak
24 znak = f.read(1)
25 print znak
26
27
28 # přečtu celý soubor
29 while True:
30 radek = f.readline()
31 if radek == '' : # na konci souboru vrátí fce readline() prázdný řetězec
32 break
33 print radek,
34
35 # uzavření soubru
36 f.close()
37 ############################################################################
38
39 f = open('novy.txt', 'w')
40 f.write("Toto je jeden řádek")
41 f.write("toto nenní další řádek protože jsem ho neukončil")
42 f.write("ukončím ho a až teď\n")
43 f.write("nový řádek")
44
45 f.close()
46 ############################################################################
47
48 f = open('soubor.txt', 'a')
49 import time
50
51 f.write( str( time.time() )+'\n' )
52
53 f.close()
54 ############################################################################
55
56 import sys
57
58 # čtení z klávesnice
59 radek = sys.stdin.readline()
60 # tisknu na obrazovku
61 sys.stdout.write("toto se m tisknu\n")
62 sys.stdout.write(radek)
63
1 # -*- coding: utf8 -*-
2
3 # poznámka se píše za dvojkříž (hash)
4
5 "poznámku lze zapsat i jako řetězec"
6
7 """ pokud začnu řetěze 3x uvozovka je to výce
8
9 řádkový
10
11
12 řetězec"""
13
14 print "Hello World"
15
16
17 # příkaz input načte číslo
18 cislo = input("Zadej číslo: ".decode("utf-8"))
19
20 if cislo<0:
21 print u"cislo je zaporne"
22 print cislo
23 else:
24 print "číslo ti neukážu"
25 print "protože je kladné"
26
27 print "tento řádek se tiskne vždycky"
28
29 if not(cislo>0 and cislo<10) :
30 rint "internval (-oo;> U <10;+oo) "
1 #!/usr/bin/env python
2 # -*- coding: utf8 -*-
3 # Soubor: sinus.py
4 # Datum: 27.02.2013 08:30
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Popis: sinusovky
8 ###################################################3
9 import matplotlib as mpl
10 mpl.use('GTKAgg')
11 mpl.use('Qt4Agg')
12 #mpl.rc('font',**{'family':'sans-serif','sans-serif':['Helvetica']})
13 ## for Palatino and other serif fonts use:
14 #mpl.rc('font',**{'family':'serif','serif':['Palatino']})
15 #mpl.rc('lines', linewidth=2, color='r')
16 mpl.rc('font', family = 'serif', serif = 'cmr10')
17 mpl.rcParams['text.usetex']=True
18 mpl.rcParams['text.latex.unicode']=True
19
20 import numpy as num
21 import scipy as sci
22 import pylab as lab
23 from pylab import pi
24 #interactive mode
25 #lab.ion()
26 #lab.ioff()
27
28 f=50
29
30 t = lab.linspace(0,0.035,100)
31 u = 2 * lab.sin(2*pi*f*t)
32
33 lab.plot(t,u)
34 lab.grid(which='both')
35 lab.xlim( [min(t),max(t)] )
36 lab.ylim( [-4,4] )
37
38 #lab.xticks(lab.arange(0,0.035,0.002), 1000* lab.arange(0,0.035,0.002))
39 #lab.yticks( lab.arange(-4,4,0.5) )
40
41 lab.xlabel('t[s]')
42
43 lab.ylabel('u[V]')
44 lab.title(ur'$u=\sin(2 \pi f t)$')
45
46
47 i = 2 * lab.sin(2*pi*f*t+ lab.deg2rad(0) )
48 lab.plot(t,i)
49
50 lab.plot(t,u*i)
51
52
53 lab.show()
54
1 # -*- coding: utf8 -*-
2 # Soubor: veVyuce.py
3 # Datum: 10.04.2013 08:58
4 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
5 # Licence: GNU/GPL
6 # Úloha: Modul s funkcemi, které tvoříme ve výuce
7 ############################################################################
8
9
10 def myMax(seznam):
11 myMax = seznam[0]
12 for i in seznam[1:]:
13 if i>myMax :
14 myMax = i
15 return myMax
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3
4 import veVyuce
5 import random
6
7 s = [ random.randint(-100,100) for _ in range(10) ]
8
9 print s
10
11 print veVyuce.myMax(s)
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: vyber-cisel.py
4 # Datum: 21.11.2012 08:23
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: program bere čísla ze vstup na výstup vypisuje nejprve
8 # záporná čísla až potom kladná
9 ############################################################################
10
11 radek = raw_input("zadej mi sem čísla >> ")
12 cisla = radek.split()
13
14 kladna = [] # vytvořím prázdný seznam, do kterého budu přídávat čísla
15 zaporna = []
16 i = 0
17 while i<len(cisla):
18 cislo = float(cisla[i]) # převedu řetězec na číslo
19 if cislo > 0:
20 kladna = kladna + [ cislo ] # přídám do seznamu pomocí operátoru +
21 else:
22 zaporna.append(cislo) # přídám do seznamu pomocí append
23 i += 1
24
25 # vypíšu kladná
26 i = 0
27 while i<len(kladna):
28 print kladna[i]
29 i +=1
30 # vypíšu záporná čísla v opačném pořadí
31 i = len(zaporna)-1
32 while i>=0:
33 print zaporna[i]
34 i = i - 1
35
36 ############################################################################
37 # a teď se naučíme cyklus for
38 print "ukázka cyklu FOR"
39
40 for i in (1,2,3):
41 print i
42
43 print "####################"
44
45 for i in kladna:
46 print i
47 zaporna.reverse()
48 for i in zaporna:
49 print i
50
51 print "####################"
52 # http://docs.python.org/2.7/library/functions.html?highlight=range#range
53 for i in range(5,20,3):
54 print i,
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: vypocet_pi.py
4 # Datum: 07.11.2012 09:11
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: Výpočet čísla pi
8 # http://cs.wikipedia.org/wiki/Pí_(číslo)#Odhad_.CF.80
9
10
11 pi = 0
12 jmenovatel =1
13 citatel = 4.0
14 znamenko = 1
15
16 while jmenovatel<1e9 :
17 pi = pi + znamenko*citatel/jmenovatel
18 jmenovatel = jmenovatel + 2
19 znamenko = znamenko * (-1)
20 print pi
21
22 import math
23 print math.pi
24
1 #!/usr/bin/python
2 # -*- coding: utf8 -*-
3 # Soubor: zelva.py
4 # Datum: 09.01.2013 08:45
5 # Autor: Marek Nožka, nozka <@t> spseol <d.t> cz
6 # Licence: GNU/GPL
7 # Úloha: funkce
8 ############################################################################
9
10
11 import turtle as t
12
13 # nastavení
14 t.speed(1)
15 t.shape("turtle")
16
17 # kreslí n-úhlelník
18 def tvar(kroky=100,n=6):
19 for _ in range(n):
20 t.forward(kroky)
21 t.left(360./n)
22
23
24 tvar() # 6-úhelník, 100 kroků
25 tvar(200) # 6-úhelník, 200 kroků
26 tvar(150,3) # 3-úhelník, 150 kroků
27
28 tvar(n=13) # 13-úhelník, 100 kroků
29
30 tvar(n=8,kroky=90)
31
32 t.exitonclick()