Notes:
# -------------------------------------------------------------------------
# ex1: Print
# -*- coding: utf-8 -*-
print "I'd much rather you 'not'."
print 'I "said" do not touch this.'
print "世界,你好"
# on terminal, run ex1.py
python ex1.py
# -------------------------------------------------------------------------
# ex2: Common
# This is a common
print "common" #This is a common too.
# -------------------------------------------------------------------------
# ex3: Numbers and Math
# + - / * % < > <= >=
# more: **
print "Result is ", 2*2-3/1, "+", 7%6,"=", 2, "is", 2>1, 2**8
# -------------------------------------------------------------------------
# ex4: Variables And Names
cars = 100
space_in_a_car = 4.0
# -------------------------------------------------------------------------
# ex5: More Variables and Printing
my_name = 'lucy'
my_age = 16
print "My name is %s." % my_name
print "My name is %s, i am %d old." % ( my_name, my_age )
# -------------------------------------------------------------------------
# ex6: Strings and Text
print "My name is: %r" % "lucy" # Print "My name is:'lucy'".
print "My name is: '%s'" % "lucy" # Print the same.
my_name = "My name is: %r"
print my_name % 'lucy' # Print the same.
# -------------------------------------------------------------------------
# ex7: More Printing
print "a" + "b" + "c" * 5 # Print "abccccc"
# -------------------------------------------------------------------------
# ex8: Printing, Printing
formatter = "%r %r %r %r"
print formatter % (1, 2, 3, 4)
print formatter % ("one", "two", "three", "four")
print formatter % (True, False, False, True)
print formatter % (formatter, formatter, formatter, formatter)
# -------------------------------------------------------------------------
# ex9: Printing, Printing, Printing
# Here's some new strange stuff, remember type it exactly.
days = "Mon Tue Wed Thu Fri Sat Sun"
months = "Jan\nFeb\nMar\nApr\nMay\nJun\nJul\nAug"
print "Here are the days: ", days
print "Here are the months: ", months
print """
There's something going on here.
With the three double-quotes.
We'll be able to type as much as we like.
Even 4 lines if we want, or 5, or 6.
"""
# -------------------------------------------------------------------------
# ex10
print "\t \\ \" '\"' "
# -------------------------------------------------------------------------
# ex11: Asking Questions
print "How old are you?", # We put a "," (comma) at the end of each print line. This is
#so print doesn't end the line with a newline character and go to the next line.
age = raw_input()
print "So, you're %r old" % age
# -------------------------------------------------------------------------
# ex12: Prompting People
age = raw_input("How old are you ?")
# -------------------------------------------------------------------------
# ex13: Parameters, Unpacking, Variables
from sys import argv
script, first, second, third = argv
print "The script is called:", script
print "Your first variable is:", first
print "Your second variable is:", second
print "Your third variable is:", third
# ex14: Prompting and Passing
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex15: Reading Files
print "Type the filename :"
filename= raw_input("> ")
txt= open(filename)
print txt_again.read()
# -------------------------------------------------------------------------
# ex16: Reading and Writing Files
# class file's function:
# close : like save
# read:
# seek:
# readline -- Reads just one line of a text file.
# truncate -- Empties the file. Watch out if you care about the file.
# write('stuff')
# writeline
my_file.open('tmp.txt', 'w')
my_file.write('first line \n')
# ex17: More files
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex18: Names, Variables, Code, Functions
# create a function by using the word 'def'
def my_function(*args):
arg1,arg2=args
print "arg1:%r, arg2:%r" % (arg1, arg2)
#or
def print_two_again(arg1, arg2):
print "arg1: %r, arg2: %r" % (arg1, arg2)
# ex19: Functions and Variables
# ex20: Functions and Files
# ex21: Functions Can Return Something by "return"
# ex22: What Do You Know So Far?
# ex23: Read Some Code
# ex24: More Practice
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex25: Even More Practice
# in ex25.py file:
def break_words(stuff):
"""This function will break up words for us."""
words = stuff.split(' ')
return words
# usage ex25.py in Terminal:
import ex25
ex25.break_words("Hello world") # call function 'break_words' in ex25.py
help(ex25) # show help info about ex25.py
help(ex25.break_words) # show help info about function break_words in module ex25
# Typing 'ex25' is annoying. A shortcut is to
# do your import like this: 'from ex25 import * ' which is like saying, "Import everything from ex25."
from ex25 import *
break_words("Hello world")
# ex26: Congratulations, Take a Test!
# Nothing.
# -------------------------------------------------------------------------
# ex27: Memorizing Logic
# terms:
and, or, not, !=, ==, >=, <=, True, False
# ex28: Boolean Practice
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex29: What If
# ex30: Else and If
# ex31: Making Decisions
people = 20
cats = 30
if cars > people:
print "We should take the cars."
elif cars < people:
print "We should not take the cars."
else:
print "We can't decide."
# -------------------------------------------------------------------------
# ex32: Loops and Lists
the_count = [1, 2, 3, 4, 5]
fruits = ['apples', 'oranges', 'pears', 'apricots']
change = [1, 'pennies', 2, 'dimes', 3, 'quarters']
# this first kind of for-loop goes through a list
for number in the_count:
print "This is count %d" % number
for fruit in fruits:
print "A fruit of type: %s" % fruit
# also we can go through mixed lists too
# notice we have to use %r since we don't know what's in it
for i in change:
print "I got %r" % i
# we can also build lists, first start with an empty one
elements = []
# then use the range function to do 0 to 5 counts
for i in range(0, 6):
print "Adding %d to the list." % i
elements.append(i)
# now we can print them out too
for i in elements:
print "Element was: %d" % i
# -------------------------------------------------------------------------
# ex33: While Loops
i = 0
numbers = []
while i < 6:
numbers.append(i)
i += 1;
for num in numbers:
print num
# ex34: Accessing Elements of Lists
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex35: Branches and Functions
from sys import exit
def gold_room():
print "This room is full of gold. How much do you take?"
choice = raw_input("> ")
if "0" in choice or "1" in choice:
how_much = int(choice)
else:
dead("Man, learn to type a number.")
if how_much < 50:
print "Nice, you're not greedy, you win!"
exit(0)
else:
dead("You greedy bastard!")
def dead(why):
print why, "Good job!"
exit(0)
# -------------------------------------------------------------------------
# ex36: Designing and Debugging
# ex37: Symbol Review
# ex38: Doing Things to Lists
ten_things = "Apples Oranges Crows Telephone Light Sugar"
print "Wait there are not 10 things in that list. Let's fix that."
stuff = ten_things.split(' ')
more_stuff = ["Day", "Night", "Song", "Frisbee", "Corn", "Banana", "Girl", "Boy"]
while len(stuff) != 10:
next_one = more_stuff.pop()
print "Adding: ", next_one
stuff.append(next_one)
print "There are %d items now." % len(stuff)
print "There we go: ", stuff
print "Let's do some things with stuff."
print stuff[1]
print stuff[-1] # whoa! fancy
print stuff.pop()
print ' '.join(stuff) # what? cool!
print '#'.join(stuff[3:5]) # super stellar!
# -------------------------------------------------------------------------
# ex39: Dictionaries, Oh Lovely Dictionaries
>>> stuff = {'name': 'lucy', 'age': 16}
>>> print stuff['name']
lucy
>>> stuff[1] = "Wow"
>>> stuff
{1:'Wow', 'age':16, 'name':'lucy'}
>>> del stuff['age']
>>> stuff
{1:'Wow', 'name':'lucy'}
#
for key, value in stuff.items():
print "%r : %r" % (key, value)
# -------------------------------------------------------------------------
# ex40: Modules, Classes, and Objects
# Modules Are Like Dictionaries
# Classes Are Like Modules
# Objects are Like Import
# Getting Things from Things
# I now have three ways to get things from things:
## dict style
mystuff['apples']
## module style
mystuff.apples()
print mystuff.tangerine
## class style
thing = MyStuff()
thing.apples()
print thing.tangerine
# A First Class Example:
class Song(object):
def __init__(self, lyrics):
self.lyrics = lyrics
def sing_me_a_song(self):
for line in self.lyrics:
print line
happy_bday = Song(["Happy birthday to you",
"I don't want to get sued",
"So I'll stop right there"])
bulls_on_parade = Song(["They rally around tha family",
"With pockets full of shells"])
happy_bday.sing_me_a_song()
bulls_on_parade.sing_me_a_song()
# ex41: Learning To Speak Object Oriented
# ex42: Is-A, Has-A, Objects, and Classes
super
# -------------------------------------------------------------------------
# ex43: Basic Object-Oriented Analysis and Design
# ex44: Inheritance Versus Composition
class Parent(object):
def override(self):
print "PARENT override()"
def implicit(self):
print "PARENT implicit()"
def altered(self):
print "PARENT altered()"
class Child(Parent):
def override(self):
print "CHILD override()"
def altered(self):
print "CHILD, BEFORE PARENT altered()"
super(Child, self).altered()
print "CHILD, AFTER PARENT altered()"
dad = Parent()
son = Child()
dad.implicit()
son.implicit()
dad.override()
son.override()
dad.altered()
son.altered()
# multiple inheritance
class SuperFun(Child, BadStuff):
pass
# Using super() with __init__
class Child(Parent):
def __init__(self, stuff):
self.stuff = stuff
super(Child, self).__init__()
# ex45: You Make a Game
# Nothing impresses me.
# -------------------------------------------------------------------------
# ex46: A Project Skeleton
try:
from setuptools import setup
except ImportError:
from distutils.core import setup
# -------------------------------------------------------------------------
# ex47: Automated Testing
nosetests
from nose.tools import *
assert_equal
# Test files go in "tests/" and are named "BLAH_tests.py" otherwise "nosetests" won't run them.
# -------------------------------------------------------------------------
# ex48: Advanced User Input
# A tuple is nothing more than a list that you can't modify.
# It's created by putting data inside two "("")" with a comma, like a list:
first_word = ('verb', 'go')
# Exceptions and Numbers
def convert_number(s):
try:
return int(s)
except ValueError:
return None
# -------------------------------------------------------------------------
# ex49: Making Sentences
# ex50: Your First Website
# ex51: Getting Input from a Browser
# ex52: The Start Of Your Web Game
# Nothing impresses me.