MasodikSageEloadas

868 days ago by Gaebor

Második túra a Sage-ben

Listák

range(-tól=0, -ig, lépésköz=1)

[ ) intervallum! A nulla az első index!

range(5, 10) 
       
[1, 2, 3][0] == 1 
       

Lista értelmezés

[ f(x) for x in ___ ]

[n for n in range(10)] 
       
[n^2 for n in range(1,11)] 
       

Függvények

sorközi:

f(x) = x^2

vagy kiemelt:

def f(x):
    return x^2

Fontos a kettőspont és az identálás. Az identálásból derül ki, hogy mi tartozik még a függvényhez és mi van már rajta kívül (nincsen end).

return nem feltétlenül a legutolsó parancs, de utána már nem fut le semmi.

x=var('x') f(x)=x^2 def g(x): return x^2 def h(x): return x^2 print('elfelejtettem!') # def h2(x): # return x^2 print(f(3), g(3)) print(diff(f,x,1)) print(diff(g(x),x,1)) 
       

sorközi függvény (f(x) = ...) mást tud, azok a matematikai értelemben vett függvények, a kiemelt (def) a programozás értelemben vett függvények.

f? 
       

Elágazás

sorközi:

f1(x) if g(x) else f2(x)

vagy kiemelt:

if g(x):

    f1(x)

else:

    f2(x)

 

 Fontos a kettőspont és az identálás. Az else opcionális.

def paritas(a): if a%2 == 0: return "páros" else: return "páratlan" return 0 print(paritas(5)) 
       

Ha nincs return egy kiemelt függvénxben, akkor értéke egy egyedi None érték.

Nem kiemelt függvény nem tud nem adni értéket, mert különben error-t kapunk!

def paritas2(a): if a%2 == 0: return "páros" else: print "páratlan" 'jajj' print(paritas2(5)) 
       
def lnko(a,b): if (b == 0): return a return lnko(b, a%b) print(lnko(50,15)) 
       
def faktor(n): if n==0: return 1 return n*faktor(n-1) faktor(10) 
       
def faktor2(x): return x*faktor2(x-1) faktor2(10) 
       

Hanoi tornyai

 

 
       
 
       

A játékot 1883-ban Édouard Lucas francia matematikus találta fel. Az ötletet egy legendából kapta, ami szerint a világ megteremtésekor egy 64 korongból álló hanoi torony feladványt kezdtek el „játszani” Brahma szerzetesei. A szabályok azonosak voltak a ma ismert hanoi torony szabályaival. A legenda szerint, amikor a szerzetesek végeznek majd a korongok átjuttatásával a harmadik rúdra, a kolostor összeomlik, és a világunk megszűnik létezni.

Wikipédia

A = [5, 4, 3, 2, 1] B = [] C = [] def move(n, source, target, auxiliary): if n > 0: # move n - 1 disks from source to auxiliary, so they are out of the way move(n - 1, source, auxiliary, target) # move the nth disk from source to target target.append(source.pop()) # Display our progress print(A, B, C) # move the n - 1 disks that we left on auxiliary onto target move(n - 1, auxiliary, target, source) # initiate call from source A to target C with auxiliary B move(5, A, C, B) 
       
 
       

kiválasztás

[ f(x) for x in ___ if g(x) ]

f(x) az eredmény, g(x) egy igaz/hamis feltétel.

vagy-vagy

[ f1(x) if g(x) else f2(x) for x in ___ ]

Mindegyik elem belekerül, de választható értékkel.

[ 3*x+1 if x%2==1 else x//2 for x in range(1,21) ] 
       

Több for

Descartes szorzatot jelent

[(i,j) for i in ___ for j in ___ ]

 párokon megy végig.

Nem ugyan az, mint

[[(i,j) for i in ___ ] for j in ___ ]

Mert ez egymásba ágyazott lista.

print([ (i, j) for i in range(5) for j in range(5) ] ) print print([[ (i, j) for i in range(5)] for j in range(5) ] )