Best way to start

namekuseijin namekuseijin at gmail.com
Tue Apr 7 00:17:26 CEST 2009


Google's automatic chat logging is nice too.  My first online python 
tutorial for someone who never saw it before (sorry for not being in 
english):

14/09/08
00:50 KALEL: I'm on Phyton Shell
00:52 me: cool
   let's go
   type it: 2
   just to get rid of your fears... :)
  KALEL: Hah hah hah hah
  me: really
   1+2
00:53 KALEL: Stupendous
   AND???
  me: type( 1 )
   type( "foobar" )
00:54 KALEL: Good
  me: Python is dinamically typed, you don't declare types: a = 2
   a+3
  KALEL: Ok... how do I refer to the values????
00:55 me: a
   ?
  KALEL: I mean, define some constant???
  me: no constants, all variable. of course, there are scope rules
00:56 modules, classes and functions
   let's go by steps
  KALEL: Ok Morpheus
  me: type there: dir() to know what it is in the current scope
  KALEL: ['__builtins__', '__doc__', '__name__', 'a']
  me: exact
   it's a list: []
00:57 KALEL: I see
  me: type dir( [] ) to know the methods of a list object
  KALEL: Cool
  me: show
00:58 KALEL: Waitaminute:
   dir is a list, right?
  me: it's a function returning a list
   ls = dir()
  KALEL: OK.
  me: ls.sort
00:59 KALEL: Traceback (most recent call last):
File "<pyshell#12>", line 1, in <module>
ls.sort
NameError: name 'ls' is not defined
  me: you did not define it?
   ls = dir()
01:00 KALEL: <built-in method sort of list object at 0x00C29878>
  me: yes
   ls.sort()
   forgot the parentheses to call
   ;)
   ls.index('a')
01:01 for i in dir(): print i
01:02 KALEL: stopped
01:03 me: one more ENTER
   BTW: blocks in python are idented by tabs
  KALEL: ok
  me: no {} or begin end
   wait
01:04 KALEL: wonderful
01:05 Ok, but when you have a single command, you don't need {} nor 
begin end
01:06 me: true, for that same reason I put print in the same line
   for and if end in :
  KALEL: 0x0
  me: if foo:
   this
   else:
01:07 that
   not forgetting tab indenting
  KALEL: good
  me: if you get another nested if, more indenting
  KALEL: This is very good
01:08 The guy does not get lost
  me: let's define a function
  KALEL: And you don't need to worry about non-practical details
  me: def fact( n ):
   if n < 2: return 1
   else:
   return n+fact(n-1)
01:10 you can, of course, write a program in a text file and import it
01:11 KALEL: good
   Guess I can already solve an Euler
01:12 me: say
   type
   def fact( n ):
"""Factorial of n"""
if n < 2:
return 1
else:
return n*fact(n-1)
   into a text file and save as euler.py
01:13 notice documentation as part of a function
01:14 KALEL: Just did it.
   Opened a python instance
01:15 me: still open?
  KALEL: Yes
  me: so, type this
   euler.fact( 5 )
01:16 KALEL: FAIL
  me: what?
  KALEL: typed on the shell and didnt recongnize
  me: import euler
   now should go
   euler.fact(5)
01:22 KALEL: Now it works!
  me: I forgot the import, no? :P
   hahahaha
  KALEL: yep
  me: sorry
  KALEL: Will get more coffee
  me: huhauhua, javaman
01:24 KALEL: Got coke
  me: good
  KALEL: while is in the same vein???
01:26 me: i = 1
   while i<10:
... print i
... i += 1
   without the dots, sure
01:30 KALEL: any mod function??????
01:32 me: %
   3%2
  KALEL: Yes, thanks... I looked up on help
01:33 Any easy way to sum var to itself + new result??? say: sp = sp + p1
01:34 me: sp += 3
  KALEL: sp +=p1
   That?????
  me: yep
  KALEL: Awesome.
01:35 me: converting a previous problem to Python? :)
  KALEL: No... Solving the second one
  me: ok
01:39 KALEL: how to end while???
   indenting???
   I mean, how do I close the block?
01:40 Forget
  me: ident all commands inside while
   ok
   ending it is newline, plainly
01:43 KALEL: finally!!!!
   Very good Phyton
   GOT IT!!!!!!
  me: way to go
   very easy, ain't it?
01:44 nothing like removing away everything non-essential
  KALEL: while sp<=4000000:
p1=p1+p2
if p1%2 == 0: sp += p1
p2=p2+p1
if p2%2 == 0: sp += p2
  me: hehe
  KALEL: of course, defining p1 = 2
   p1 = 1 and p2 = 2
  me: I was worried you would use = to compare
  KALEL: sp = 2
  me: exactly
  KALEL: a bug
01:45 me: you don't even need a fib function
  KALEL: Then I remembered = was used for attribution
  me: hehe
   common mistake among Pascal programmers
  KALEL: COOL
  me: not even in need for OO too! :O
   haha
01:46 KALEL: too much...
   Used OOPS!!
  me: OOPS?
  KALEL: OOPS
01:47 you try, if it fails: OOPS!
01:50 KALEL: Thank you.
   I'll continue studying... you wait for me... now the force if with me 
too.
  me: we're right here
   huhauhuha
01:51 nice, young Padawan
01:52 KALEL: Thanks, Jedi Master!!!!
01:55 me: BTW, my solution will make you go nuts:
   def p2():
print "Find the sum of all the even-valued terms in the Fibonacci 
sequence which do not exceed 4 million."
sum = 0
fib = 2
pfib = 1
while (fib<4000000):
if fib%2==0: sum+=fib
fib, pfib = fib+pfib,fib
return sum
01:56 check out the excellent variables swap near the last line... :)
01:57 KALEL: AWESOME!
  me: yeah, no need for intermediary temp variables
01:58 I see you have a strange gleaming in the eyes, young disciple
   :)
01:59 KALEL: huah huah huah
02:01 me: you may also reload a module after each change
   reload( euler )

-- 
a game sig: http://tinyurl.com/d3rxz9



More information about the Python-list mailing list