麻省理工python公开课 pdf_MIT麻省理工学院公开课:计算机科学及编程导论 Python 笔记1-3...

Lecture1:Goals of the course; what is computation; introduction to data types, operators, and variables

Python

High (√) VS. low

General (√) VS. targetted

Interpreted (√) VS. compile

Syntax语法:what are legal expressions

“cat dog boy “

Static semantics 静态语义:which programs are meaningful

“ My desk is Suson“

Full semantics 完整语义:what does program mean

what will happen when i run it

Operation

+ - * /

>>>'a'*3

'aaa'

>>>3/5

0

>>>3**3

27

Variables

>>>a = 3

>>>print a

3

Lecture2:Operators and operands; statements; branching, conditionals, and iteration

Operators and operands

>>>'ab' + 'c'

'abc'

>>>3 + 'c'

Traceback (most recent call last):

File "", line 1, in

TypeError: unsupported operand type(s) for +: 'int' and 'str'

>>>str(3) + 'c'

'3c'

type conversion 类型转换 str(3)

type checking 类型检查 weak VS. strong typing

TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’

type discipline

operation precedence 算符优先

* >> / >> + - when is doubt, use ()

>>>'a' < 3

False

>>>4 + '3'

True

>>>9/5

1

>>>9%5

4

>>>3+4*5

23

Variables has a value--Assignment x = 3

type of Variables--get from value

Dynamic types 动态类型

x = ‘abc’

don’t change types arbitrarily 不要反复无常的改变变量类型

Variables used any place it’s legal to use value

statements

statements = legal commands that Python can interpret

print, assignment

branching 分支

change the order of instructions based on some test (usually a value of a variable)

Syntax

冒号colon : begin a sequence of instructions

identifies a block of instructions.

冒号: start

carriage 回车 is end

x = 15

if(x/2)* 2 == x:

print 'Even'

else: print 'Odd'

conditionals 条件

# if语句可嵌套

if :

Block of instructions.

else:

Block of instructions.

Boolean combination:AND, OR, or NOT

iteration 迭代 or loops 循环

# y = x的平方

y = 0

x = 3

itersLeft = x

while(itersLeft>0) :

y = y + x

itersLeft = itersLeft -1

print y

Lecture3:Common code patterns:iterative programs

iterative programs

choose a variable that’s going to “count“

initialize it outside of the loop 循环外初始化

set up the right end test (variable)正确结束循环

construct the block of code

changing the variable

what to do when done 循环结束后做什么

flow chart 流程图

# x开方

# find the square root of a perfect square

x = 16

ans = 0

while ans*ans <= x:

ans = ans + 1

print ans

Created with Raphaël 2.1.2

Start

ans = 0

ans * ans <= x

ans = ans + 1

print ans

End

yes

no

x = 15

if(x/2)* 2 == x:

print 'Even'

else: print 'Odd'

Created with Raphaël 2.1.2

Start

(x/2)* 2 == x

print Even

print Odd

End

yes

no

Simulate 模拟

ans

x

ans*ans

0

16

0

1

16

1

2

16

4

3

16

9

4

16

16

5

16

25

Defensive programming

A, if you’re getting inputs from a user, they won’t necessarily give you the input you’ve asked for 使用者可能没有按照你指定的输入。

B, if you’re using a piece of a program written by a programmer who is not perfect, perhaps yourself, there could be mistakes in that program, and so you write your program under the assumption that, not only might the user make a mistake, other parts of your program might make a mistake, and you just put in lots of different tests under the assumption that you’d rather catch that something has gone wrong, then have it go wrong and not know it. 程序中可能有错误。

# x开方进化版

# find the square root of a perfect square

# x = 1515361

ans = 0

if x > 0:

while ans*ans < x:

ans = ans + 1

#print 'ans =', ans

if ans*ans != x:

print x, 'is not a perfect square'

else: print ans

else: print x, 'is a negative number'

Exhaustive enumeration 穷尽/枚举

try all “reasonable” values until you find the solution

# find x's divisor

# x = 10

# i = 1

while i < x:

if x%i == 0:

print 'divisor', i

i = i+1

# find x's divisor

x = 10

for i in range(1, x):

if x%i == 0:

print 'divisor', i

Tuple 元组

w3school Python元组

- ordered sequence of elements 有序的元素序列(immutable 不可变的)

>>> foo = (1, 2, 3)

>>>> foo

(1, 2, 3)

>>>foo[0]

1

>>>foo[1]

2

>>>foo[10]

Traceback (most recent call last):

File "", line 1, in

IndexError: tuple index out of range

>>>foo[-1]

3

>>>foo[-2]

2

>>>foo[1:3]

(2, 3)

>>>foo[1:2]

(2,)

>>>foo[:2]

(1, 2)

>>>foo[1:]

(2, 3)

# find x's divisor

x = 100

divisors = ()

for i in range(1, x):

if x%i == 0:

divisors = divisors + (i,)

print divisors

String

w3school Python字符串

- support selection, slicing, and a set of other parameters, other properties

sumDigits = 100

for c in str(1952):

sumDigits += int(c)

print sumDigits

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值