Here are some key points about complex numbers in Python:- Complex literals are written as a + bj, where a is the real part and b is the imaginary part.- Complex supports the basic arithmetic operations like addition, subtraction, multiplication, division. - Complex objects have real and imag attributes to access the real and imaginary parts.- Functions like abs(), conjugate(), phase() are available on complex numbers.- Complex numbers cannot be directly cast to float, since they have both real and imaginary components.- Python represents complex numbers internally using the C double data type for efficiency.So in summary, Python nicely supports complex arithmetic and accessing components of complex values
Similaire à Here are some key points about complex numbers in Python:- Complex literals are written as a + bj, where a is the real part and b is the imaginary part.- Complex supports the basic arithmetic operations like addition, subtraction, multiplication, division. - Complex objects have real and imag attributes to access the real and imaginary parts.- Functions like abs(), conjugate(), phase() are available on complex numbers.- Complex numbers cannot be directly cast to float, since they have both real and imaginary components.- Python represents complex numbers internally using the C double data type for efficiency.So in summary, Python nicely supports complex arithmetic and accessing components of complex values
Similaire à Here are some key points about complex numbers in Python:- Complex literals are written as a + bj, where a is the real part and b is the imaginary part.- Complex supports the basic arithmetic operations like addition, subtraction, multiplication, division. - Complex objects have real and imag attributes to access the real and imaginary parts.- Functions like abs(), conjugate(), phase() are available on complex numbers.- Complex numbers cannot be directly cast to float, since they have both real and imaginary components.- Python represents complex numbers internally using the C double data type for efficiency.So in summary, Python nicely supports complex arithmetic and accessing components of complex values (20)
Right Money Management App For Your Financial Goals
Here are some key points about complex numbers in Python:- Complex literals are written as a + bj, where a is the real part and b is the imaginary part.- Complex supports the basic arithmetic operations like addition, subtraction, multiplication, division. - Complex objects have real and imag attributes to access the real and imaginary parts.- Functions like abs(), conjugate(), phase() are available on complex numbers.- Complex numbers cannot be directly cast to float, since they have both real and imaginary components.- Python represents complex numbers internally using the C double data type for efficiency.So in summary, Python nicely supports complex arithmetic and accessing components of complex values
2. Mosky:
● The examples and the PDF version are available at:
– j.mp/mosky-programming-with-python.
● It is welcome to give me any advice of this slide or
ask me the answers of the challenges.
– mosky.tw
2
5. Topics
● Basic Topics ● Adv. Topics
– Python 2 or 3? – Module and Package
– Environment – Typing
– hello.py – Comprehension
– Common Types – Functional Technique
– Flow Control – Object-oriented Prog.
– File I/O – Useful Libraries
– Documentation ● Final Project
– Scope – A Blog System
5
6. An Investigation
Do you know _________ ?
– any other programming language
– Object-oriented
– Static Typing; Strong and Weak Typing
– Dynamic Typing
– Functor; Closure
– Functional Programming
– Web development
6
8. Python 2 or 3?
● Python 2.x ● Python 3.x
– status quo – present & future
– 2.7 is end-of-life release – under active development
– harder for newcomers – easier for newcomers
– more third-party lib. – less third-party lib.
– 2to3.py – 3to2.py
– backported features: – new features:
● What's News in Python 2.6 ● What's News in Python 3.0
docs.python.org/release/2.6.4/whatsnew/2.6.html docs.python.org/py3k/whatsnew/3.0.html
● What's News in Python 2.7
docs.python.org/dev/whatsnew/2.7.html
8
9. Python 2 or 3? (cont.)
● Use Python 3 if you can.
● Decide Python 2 or 3 by the libraries you will use.
● Today, we will go ahead with Python 2.
And introduce you to the changes in Python3.
9
11. On Linux or Mac
● Python is built-in on Linux or Mac.
● All you have to do is check the version.
Type "python" in any terminal.
Python 2.7.3 (default, Sep 26 2012, 21:51:14)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license"
for more information.
>>>
11
12. On Windows
● Download the installer from:
"http://python.org/download"
● Install it.
● Add the Python's PATH.
– Computer → System Properties → Advanced system
settings → Advanced tab → Environment Variables →
System Variables → find PATH.
– "...;C:Python27"
12
13. Editor / IDE
● The Editors ● The IDE
– Sublime Text 2 – IDLE
www.sublimetext.com
● Debian-base:
– VIM sudo apt-get install idle
wiki.python.org/moin/Vim ● Windows:
– Gnome Text Editor Use the Start Menu to
(gedit) search "IDLE"
– Notepad++
● The others:
notepad-plus-plus.org – wiki.python.org/moin/PythonEditors
– ...
13
14. The Python Shell
● Type "python" in terminal.
– >>>
– ...
● Leaving a shell:
– exit()
– Linux or Mac: Ctrl+D
– Windows: Ctrl+Z<Enter>
14
15. The python Command
● Enter Python shell without arguments.
● python hello.py
● python -c 'print "Hello, World!"'
● python -m SimpleHTTPServer
15
17. hello.py
#!/usr/bin/env python
● #! the shebang.
# -*- coding: utf-8 -*- ● # -*- defines the encoding
# file: hello.py of this file.
● # means the comments.
def hello(name=None):
if name:n ● : starts a block.
return 'Hello, %s!' %
name
else: ● A block uses 4-space indent.
return 'Hello, Python!' ● A statement ends with n.
17
18. hello.py (cont.)
if __name__ == '__main__':
● __name__, the name of
module.
import sys
if len(sys.argv) >= 2: ● import is important.
print The usage:
hello(sys.argv[1])
else:
● import sys
print hello() ● from sys import argv
● … as alias
18
20. The print Statement
print 'End with a new line char.'
print 'Print', 'multiple', 'strings.'
print 'End with a space.',
print # print a new line char
20
21. The print function in Python 3
print('End with a new line char.')
print('Print', 'multiple', 'strings.')
print('End with a space.', end=' ')
print() # print a new line char
print('End with a space.', end='')
print('a', 'b', 'c', seq=',')
21
37. List and Tuple
List (mutable seq.) Tuple (seq.)
– [] – tuple()
– ['item'] – ('item', )
– ['s', 100, u'unicode'] – ('s', 100, u'unicode')
– list('abc') – tuple('abc')
– 'a b c'.split(' ')
– 'n'.join(['spam', – 'n'.join(('spam',
'eggs']) 'eggs'))
– x, y = [1, 2] – x, y = (1, 2)
– x, y = [y, x] – x, y = (y, x)
37
38. Sequence
Sequence Mutable Seq.
– s[i] = x
– x in s # performance? – s[i:j] = t
– x not in s – del s[i:j]
– s + t – s[i:j:k] = t
– s * n, n * s – s.append(x)
– s.insert(i, x)
– s[i] – s.pop([i])
– s[i:j] – s.remove(x) # performance?
– s[i:j:k] – s.extend(t)
in-place
– len(s)
– s.sort([cmp[, key[, reverse]]])
– s.index(x) – s.sort([key[, reverse]]) # Py 3
– s.count(x) – s.reverse()
38
41. Sequence (cont.)
Slicing and Slice object:
– s = range(10) – s = 'I am a str.'
– t = s – s[:-3]
– t[0] = 'A'
– print s – s.reverse()
– t is s → TypeError
– s[::-1]
– t = s[:] – ''.join(reversed(s))
– t is s
– slice(None, None, -1)
41
42. Mapping
Dict. (mutable map.)
– len(d)
– {}
– d[k]
– {'A ': 1, 'B': 2, 'C': 3} – d[k] = v
– dict({...}) – del d[k]
– dict(A=1, B=2, C=3) – k in d, k not in d
– d.copy()
– d.get(key[, default])
– k = 'ABC' – d.setdefault(key[, default])
– v = [1, 2, 3] – d.items(), d.keys(), d.values()
– pairs = zip(k, v) – d.pop(key[, default)
– dict(pairs) – d.update([other])
...
42
43. Set
Set (mutable set)
– len(s)
– set() – x in s, x not in s
– {'A', 'B', 'C'} # Py3 – s.copy()
– s.add(elem)
– set('ABC') – s.discard(elem)
– set(['A','B','C']) – s.pop()
– s |= other
– s &= other
– s | other | ...
– s & other & ...
– s < | <= | == | > = | > other
...
43
45. The if Statement
if [condition 1]:
…
elif [condition 2]:
…
elif [condition 3]:
…
else:
…
[exp. if true] if [condition] else [exp. if false]
45
46. Truth Value Testing
They are same as False in a boolean context:
– None
– False
– Zeros (ex. 0, 0.0, 0L, 0j)
– Empty containers (ex. '', [], {})
– __nonzero__() or __len__() returns 0 or False
46
47. Truth Value Testing (cont.)
● if not None: ...
● if not []: ...
● if [0]: ...
● if [[]]: ...
● if "": ...
● if {}: ...
● if not {0: False}: …
…
47
48. The for Statement
for [item] in [iterable]: for i in [0, 1, 2]:
… print i
for i in range(3): for i in xrange(3):
print i print i
48
49. The for Statement in Python 3
for [item] in [iterable]: for i in [0, 1, 2]:
… print i
for i in range(3): for i in xrange(3):
print i print i
49
50. The for Statement (cont.)
for i in range(1, 3): for i in range(3, -1, -1):
print i print i
s = [1, 2, 3] s = [...]
t = 'xyz' for i, item in enumerate(s):
print i, item
for i, j in zip(s, t):
print i, j
50
51. The for Statement (cont.)
● It is like for … each in other language.
– Note: Python hasn't other for loop.
● It can iterate all of iterable object.
– In other words, the object which defined __iter__.
– ex. sequence, mapping, set, ...
51
52. Challenge 1: A Pyramid
● Use for loop to build a *
pyramid on right. ***
– without limit. *****
– limit: in two lines *******
● hint: string formatting
52
53. Challenge 2-1: Count the Chars
● Use for loop to count "Please count the
the sentence on right. characters here."
– without limit.
– limit: without if
● hint: use get
{'P': 1, ...}
53
54. Challenge 2-2: Collect the Chars
● Use for loop to collect "Here are UPPERCASE
the chars. and lowercase chars."
– limit: use setdefault
{'c': ['C', 'c',
'c'], ...}
54
55. The while Statement
tasks = [...]
while tasks: while 1:
… …
● It leaves the loop once ● A infinite loop.
the tasks is empty. ● It is better to use block
mechanism in a loop.
– ex. I/O block
55
56. The break, continue Statement
loop …: loop …:
if …: break if …: continue
● It terminates a loop. ● It continues with the
next iteration.
56
57. The break, continue Statement (cont.)
● They do the same thing in both C and Python.
● Using break or continue is encouraged.
– take the place of the complicated condition in a while.
– faster, because Python is interpreted.
● Just use them.
57
59. The else Clause on Loops
loop …:
…
else:
…
● No a clause on the if statement!
● If the loop isn't broken by any break statement, the
else block is executed.
● It replaces the flags we usually used.
59
60. Challenge 3-1: The Primes
● Try to filter the primes [2, 3, 5, 7, 11, 13,
from [2, 100). 17, 19, 23, 29, 31,
37, 41, 43, 47, 53,
– without limit. 59, 61, 67, 71, 73,
– limit: use loop's else 79, 83, 89, 97]
60
62. The try Statement in Python 3
try:
…
except LookupError as e:
…
except (IndexError, KeyError) as e:
…
else:
…
finally:
…
62
63. The try Statement (cont.)
● For avoiding to catch the exception we don't expect, you should:
– reduce your code in try block.
●
move them to else block.
– make the exception precise in except statement.
● Avoid using Exception.
● ref: docs.python.org/2/library/exceptions.html#exception-hierarchy
● Release the resource in finally block.
– or use context manager
– ex. file, socket, …
● raise SomeError
63
69. The def Statement (cont.)
def f(): pass
def g(): pass
d = {'x': f, 'y': g}
d['x']()
● Python functions are first-class functions.
– It means you can pass functions as arguments, and
assign functions to variables.
– It is like the function pointers in C.
69
70. An Example of Using while, try and def.
# file: ex_try.py $ python ex_try.py
def take_int(prompt='Give me a int: '):
Give me a int: str
while 1:
try:
It is not a int!
user_input = int(raw_input(prompt)) Give me a int: abc
except ValueError, e:
print 'It is not a int!' It is not a int!
else:
return user_input Give me a int: 100
if __name__ == '__main__':
I got a int from user:
x = take_int() 100
print 'I got a int from user: %d' % x
$
70
71. A Trap of the Default Value
# file: ex_defval_trap.py ● Because the list is
created when the
def f(items=[]): function is defined.
items.append(1)
return items
● Avoid to use the
mutable types as the
if __name__ == '__main__': default value.
print f() # -> [1]
print f() # -> [1, 1]
print f() # -> [1, 1, 1]
71
72. Challenge 4: A BMI Calculator
● BMI: Body Mass Index Enter your height (M):
– BMI = weight (KG) ÷ height (M)2 1.63
– < 18.5 → Underweight
Enter your weight (KG):
– [18.5, 25) → Normal weight
– [25, 30) → Overweight 49
– >= 30 → Obesity ---
● Write a BMI calculator.
Your BMI is:
– without limit.
– limit: only one if
18.44 (Underweight)
● hint: use loop Ideal weight is between:
49.15 ~ 66.42
72
74. The file Object
f = open('input.txt') f =
print f.read() open('output.txt',
'w')
f.seek(0)
f.write('a line.n')
for line in f:
f.close()
print line,
f.close()
74
75. The Context Manager
with open('input.txt') as f:
for line in f:
print line,
f.close()
● Python 2.5↑
– Python 2.5.x: from __future__ import with_statement
– Python 2.6↑: It is mandatory.
75
76. Challenge 2: Count the Chars (cont.)
– limit 3: with the files The path of input:
input.txt
The path of output:
output.txt
---
The result was
written.
76
77. The csv Moudle
#!/usr/bin/env python 1, apple
# -*- coding: utf-8 -*- 2, orange
# file: ex_csv.py
3, watermelon
import csv
['1', ' apple']
with open('ex_csv.csv') as f:
['2', ' orange']
for row in csv.reader(f):
print row ['3', ' watermelon']
77
78. The os.path Moudle
# file: ex_os_path.py $ python ex_os_path.py
from os import walk
from os.path import join
It requires a path as
def list_files(path):
paths = []
argument.
for root, dir_names, file_names in walk(path):
for file_name in file_names:
paths.append(join(root, file_name))
$ python ex_os_path.py .
return paths
…/1
if __name__ == '__main__':
import sys
…/b/4
from os.path import abspath, dirname
if len(sys.argv) == 2:
…/a/2
path = abspath(dirname(sys.argv[1]))
for path in list_files(path): …/a/3
print path
else:
print 'It requires a path as argument.'
78
80. The help Function
● In Python shell: ● In terminal:
– help(open) – $ pydoc SimpleHTTPServer
– dir(open) – $ pydoc csv
– $ pydoc os.path
– 'n'.join(dir(open))
80
81. Your Documentation
$ pydoc ex_doc
# file: ex_doc.py Help on module ex_doc:
'''module-level doc.''' NAME
ex_doc - module-level doc.
def f(x): FILE
'''A short sentence describes
this function. /home/mosky/programming-with-python/ex_doc.py
FUNCTIONS
About the parameters, return f(x)
value or any other detail ... A short sentence describes this
''' function.
pass
About the parameters, return value or
any other detail ...
81
83. Scope
# file: ex_scope.py $ python ex_scope.py
global
x = 'global'
local
def f():
$
if 1:
x = 'local'
return x
● Scopes are decided by
functions.
if __name__ == '__main__':
print x
print f()
83
84. The LEGB Rule
# file: ex_LEGB.py ● return …
global_var = 100 – Local (in function)
def f():
enclosed_var = 10
– Enclosed
def g():
– Global
local_var = 1
return sum([local_var, enclosed_var,
– Built-in
global_var])
return g()
if __name__ == '__main__':
print f() # -> 111
84
86. Challenge 5: Mix All
● You have many $ python mix.py pyramid 10
functions now. …
$ python mix.py primes 100
Try to write a CLI
…
program to trigger your
$ python mix.py bmi 1.63 49
functions.
…
– without limit
$ python mix.py blah blah
– limit: without if. Please check your args.
86