Introduction to Python 3.x Mikio Kubo. Why Python? We can do anything by importing some modules...

Post on 26-Dec-2015

251 views 3 download

Transcript of Introduction to Python 3.x Mikio Kubo. Why Python? We can do anything by importing some modules...

Introduction to Python 3.x

Mikio Kubo

Why Python?

• We can do anything by importing some modules

• Optimization• Data Analysis • Statistics• Everything is included!• Also fly!

import antigravity ?• Programming becomes fun

again!

http://xkcd.com/353/

Why Python?• Most popular programming language • Including MIT (Introduction to

Computer Science and Programming Using Python)

Why Python?• To get more money!

Python!Average InitialSalary in Japan

Why Python?• To get more and more money!Top 10 Programming Languages to Learn in 2014No 1. Python

Average Salary: $93,000 Job Count: 24,533 Top Employers: Amazon, Dell, Google, eBay & Yahoo, Instagram, NASA, Yahoo Example Sites: Google.com, Yahoo Maps, Reddit.com, Dropbox.com, Disqus.com

No 2. Java, No 3. Ruby, No. 4 C++, No5. JavaScriptNo 6. C#, No. 7 PHP, No8. Perl ….

http://tech.pro/blog/1885/top-10-programming-languages-to-learn-in-2014

Some Remarks

• Python 3.x is not compatible to Python 2.x

• We use Python 3

• Install Anaconda (Python 3 Package)

https://store.continuum.io/cshop/anacondahttps://store.continuum.io/cshop/anaconda//Free version is enoughIt includes more than 100 useful modulesIt supports Mac, Linux, and Windows

How to print 'Hello, world!'C++ (You need not remember this! )

#include <iostream>

int main() {

std::cout << 'Hello, world!' << std::endl;

return 0;

}

Python – Just use function print()

print ('Hello, world!')

Indent = Beauty Indent = The way for grouping the sentences in Python

A bad C++ programmer may write...

if (x > 1) { y=x+1; z=x+y; } else { y=0; z=0; }

In Python, anyone must write like this: if x > 1: y=x+1 # This is a comment part   z=x+y # Here is the first block else: y=z=0 # Now the second block

If the indentation was wrong, it causes an error !

Why Python Again !

• Number of keywords to be remembered is much less than other language (about 30! Java has more than 120!)

• Indentation helps to write a easy-to-read program • Interpreter (You need not to compile)• Need not to declare variables• Need not to manage memory (automatic garbage

collection)• Works on Windows, Mac, Linux (and also iphone and

ipad!)• Object oriented • Free!

Data Type (1): Number• Number

– int : integer number in unlimited range– bool : True or False– float: floating point number, i.e., 5.4 or 1.0 – complex: complex number, i.e.,

z= 0 + 1j (real part and imaginary part) z.real is 0 z.imag is 1 z * z is -1+0j because j*j is minus 1

Data Type (2): Sequence

• Sequence Type– string : (immutable) sequence of unicodes, i.e., 'Mickey' ,

'Minny' , 'Mickey's Birthday', and ''' We can write multiple lines using triple quotes like this'''

– list: (mutable) sequence of arbitrary objects generated by brackets [ ], i.e., [1,2,3,'a'], [1,'b', [2,3,'c'], 6 ], [ ]

– tuple : (immutable) sequence of arbitrary objects generated by parentheses ( ), i.e., (1,2,3,'a'), ( (1,2), (2,'f','g'))

'Immutable' = cannot modify

String is immutable!>>> a='Mickey'

>>> a[0]='D' # a[0] is the first string

Traceback (most recent call last):

File '<pyshell#7>', line 1, in <module>

a[0]='D'

TypeError: 'str' object does not support item assignment

Tuple are immutable, while list is mutable!

Data Type (3)• Set Type

– set : (mutable) set generated by braces { }, i.e., {1,2,3}, {'a', 'b', 'Mickey'}

– frozenset: (immutable) set

• Map Type– dictionary : hash function that maps keys to values

composed generated by {key: value, ... }, i.e., { 'Mary': 126, 'Jane': 156}, { 'Hello': 'Konnnichiwa', 1: 'One', 2: 'Two'}

Function type( ) and type conversion

• To check the type of objects, use function type(): type(124) type(3.1415) type(3+5j)

• To convert the type – int( ) : convert to integer number

– float( ) : convert to floating number

– complex() : convert to complex number int(3.14) float(3) complex(1)

Bool and String: type conversion

• Check the type of objects type(True) type('Hello')

• Convert the type– bool( ) : 0 is False , otherwise True

– str( ) : return string bool(3.14) bool(0) bool('0') str(3+5) str(True)

String (1)

'abc' or 'abc' or ''' .....

...... '''

Single (double) quote inside the double (single) quotes is allows.

' My 'ideal' Place ' or 'My 'favorite' movie'

Triple quotes ( ''' ) allows multiple lines

String (2)

• String is a sequence type index from 0 For x= 'abcd', x[1] returns 'b'

a b c dx[0] x[1] x[2] x[3]

Slicing (1)• slicing of sequence type

  [i:j] means i≦k<j [ :j] means 0≦k<j

[i: ] means i≦k For x= 'abcd', x[1:3] returns 'bc'x[1:] returns 'bcd'

a b c dx[0] x[1] x[2] x[3]

Slicing (2)• len() returns the size of the object

  len(x[i:j]) is equal to j-i

• The negative indices mean the index from the last. The last character is x[-1]. The slicing is the strings between the number i and j.

a b c dx[0] x[1] x[2] x[3]

0 1 2 3 4

-4 -3 -2 -1

String Methods (1) • Method (function associated with object using '.' notation)

Example: s='abABBaac'

s.count(x) : returns how many times x occurs in string s s.count('a') -> 3

s.index(x) : returns the first index x occurs in string s s.index('A') -> 2

s.upper() : converts all the characters in string s to uppercase s.upper() -> 'ABABBAAC'

s.islower() : returns True iff all the characters in sting s are lowercased s.islower() -> False

String Methods (2) • Example: s='abABBaac'

s.replace(old, new): returns a string by substituting string <old> to <new> in string s

s.replace('AB','Mickey') -> 'abMickeyBaac's.split(d) : returns a list of strings using d as the separator

s.split('a')| -> [' ', 'bABB', ' ', 'c']s.join(L): returns a string that concatenates all the string in list L

using s as the separator ':'.join(['a','b','c'])| -> |'a:b:c'|

s.format(args): formats the string s using argument args 'My friends are {0}, {1} and {0}'.format('Bob','Pedro','Bob) -> 'My friends are Bob, Pedro and Bob'

List

• list : sequence of arbitrary objects

• Use bracket [] and separate the objects by comma (,). i.e., [1,2,3,'a'] , ['a',['b',5,5],'c']

• mutable: can modify the items For L=[1,1,5,4] , L[1]=100 => L=[1,100,5,4]

• Modify the elements by slicing For L=[1,1,5,4] , L[1:3]=[100,200,300] =>

L=[1,100,200,300,4]

List Methods • Method (function associated with object using '.' notation)

Example: L=[1,1,5,4]

L.count(x) : returns how many times x occurs in list L L.count(1) -> 2

L.index(x) : returns the first index x occurs in L L.index(5) -> 2

L.reverse() : reverses the order of items in L L.reverse() -> L=[4,5,1,1]

L.sort() : sorts the items in L L.sort()-> L=[1,1,4,5]

Tuple

• tuple : sequence type of arbitrary objects

• Just separate the objects by comma (,) like a,bor use parentheses. i.e., (1,2,3,'a')

• Parentheses are necessarily for nested tuples ((1,5),('a','b',6))

• immutable : cannot modify

• Usage: a,b = b,a

Dictionary

• dictionary : map type composed of keys and values• Use braces { } and input 'key : value' pairs separated

by comma, i.e., D={ 'Mary': 126, 'Jane': 156, 'Sara': 170}

• Same dictionary can be generate using dict() functionD=dict(Mary=126, Jane=156, Sara=170)

• D['Sara'] returns 170• Keys must be immutable • Dictionary is mutable :

D['Sara']=130 => { 'Mary': 126, 'Jane': 156, 'Sara': 130}

Set

• set and frozenset: set type composed of arbitrary objects

• Use braces S = {1,2,'Candy'} • Use function set (or frozenset)

S=set( [1,2,'Candy'])• set methods such as union, intersection,

difference , symmetric difference• set is mutable• fronzenset is immutable

Operation (1)• Priority of operations

1. Parentheses ()2. Exponential **3. Multiply * or Division / or Integer Division // or

Mod (Division Remainder) %4. Add + or Subtract -

• Comparison (returns Boolean)<= less than or equal to>= greater than or eqial to == equal != not equal

Operator (2)

• 'in' and 'not in'– True if an element is in the object (string, list, tuple,

set, dictionary)– True if an element is not in the object

• Boolean operators and

or

(1<4) or (5<4) ('a' in 'banana') and ('c' in [1,5,'c'])

If /else statesment if <True or False Expression 1>: Expression 1 is True elif if <True or False Expression 2>: Expression 1 is False and Expression 2 is True else: Expression 1 is False and Expression 2 is False

Example: if x<0: print ( 'Negative Number' ) else: print ( 'Non-negative' )

for-loop

for <element> in <iterative object such as list or dict>: Loop Block

range(i,j): generator function that returns integers k such that i ≦k < j

Example : print 0,1,2,3,4

for x in range(5): print(x)

Comprehension (1)

List comprehension:generate a list using 'for' within [ ]

Example: A list that contains tuples

[ (x, x**2, 2**x) for x in range(5)]

>>> [(0, 0, 1), (1, 1, 2), (2, 4, 4), (3, 9, 8), (4, 16, 16)]

2,, 2 xxx

Comprehension (2)

Generator comprehension:

'for' loop within ( )

Example using 'sum' function

sum(x for x in range(11))>>>55

while-loop

while <True or False Expression>: Loop Block

Example :  print 2*x while x is positive

x=10while x>0: print (2*x) x =x-1

break and continue• Keywords to escape from a loop

– break : finish the loop– continue : jump to the next iteration

Example :  print 2*x while x is positive and x is oddx=10while True: x =x-1 if x%2==0: continue # do not print when x is even print (2*x) if x<=0: break # finish the loop when x reaches 0

for-else

Example: check whether y is a prime number

y=11

for x in range(2,y):

if y % x==0: # if y is divisible by x, y is a composite number

break

else:

print ('Prime Number' )

When for (or while) loop is not finished by 'break',execute 'else' block after the loop

Function

• To define a fuction ... def <name of function>( arguments ) : function block

return <return value> # optional

Example : Concatenate given two strings and repeat three times.

def concatenate3(a,b): c=a+b return 3*c

concatenate3('a','b') returns 'ababab'

Recursion (1)

• Recursion = function that calls itself

Example : factorial n! =n×(n-1) × ・・・ ×2×1

that can be defined recursively :

n!=n × (n-1)! and the initial condition 0!=1

def factorial(n): if n==0: return 1 else: return n*factorial(n-1)

Recursion (2)

• Fibonacci number defined by :

F(0)=1, F(1)=1, F(n)=F(n-1)+F(n-2)

def fibonacci (n): if n == 0 or n == 1: return 1 else: return fibonacci(n-1) + fibonacci(n-2)

Module

• Module is a library to be imported; that is just a program named <filename.py> written in Python

Method 1 : import module import <filename>

Example : import 'math' module and use square root function 'sqrt'import mathprint math.sqrt(2)

Method 2 : import function (and/or class) in modulefrom <filename> import <function/class name> or wildcard (*)

from math import *print sqrt(2)

(Pseudo) Random Number Generator Module

• import random or from random import *

random() : returns a uniform random number in [0.0, 1.0) Example : random() -> 0.48777947886

randint(i,j) : returns a uniform random integer in i ≦k <=j Example : randint(-5,1) -> -3 shuffle(L) : mix list L randomly . Example : L=[1,2,3,4], shuffle(L) -> L=[4, 1, 3, 2] choice(L) : Choose one item from list L randomly Example : L=[1,2,3,4], choice(L) -> 3

Exercises

• CodingBat http://codingbat.com/python/

• PySchool http://www.pyschools.com/

(requires a google account)