think in python 7
对一个变量可以进行多次赋值 是合法的。
例如以下:
bruce = 5
print bruce
bruce = 7
print bruce
因为有了多重赋值 所以=
与==
的区别就更重要了。
不过=
有时候 也会让你产生歧义
a=7
b=a
a=8
b ? #这个时候 b还是 7 ,b已经不再等于a了
赋值操作最常见的形式是更新操作,即变量的新值依赖旧值
x = 6
y = 6
x = x+1
y = y-1
通过加1来更新一个变量,称为增量。
通过减1来更新一个变量,称为减量。
计算机常被用来自动化重复处理某些任务
countdown 函数 while版本
def countdown(n):
while n>0:
print n
n = n-1
- 计算条件,得到True或者False
这种流程称之为 循环(loop).
我们写的程序也会出现无限循环的时候,这是因为 我们对值的判断和操作分支有些问题
def squence(n):
while n!=1:
print n
if n%2==0:
n = n/2
else:
n = n*3+1
这个函数的循环条件是n!=1
所以只要n还没变成1就可能会 一直循环下去。
只有在循环语句体的执行途中,才能知道是不是到了退出循环的时机
break 可以用来跳出循环
while True:
line = raw_input()
if line = 'done':
break
print line
print 'DONE'
循环常用于数值计算,以一个近似值开始,迭代的优化计算结果
以计算平方根方法(牛顿方法)为例:
x=3.0 #牛顿方法里面 需要定义一个估计值。
while True:
print x
y = (x+a/x)/2
if y==x:
break
x = y
牛顿方法是算法的一个例子,它是解决一类问题的机械化的过程。
定义算法比更不容易,从一个算不上算法的东西开始可能更简单。当你学习个位数相乘的时候,可能背诵过乘法口诀,其实 你只是记住了100个特别的解答,这种知识不算是算法
比如要计算n和9的乘积,你可以写下n-1作为十位数,10-n作为个位数,这个小技巧是计算任意个位数和9的乘积的通用方案,算是一个算法。
def n9(n):
print "".join([str(n-1),str(10-n)])
相似的,你学习过的进位加法,借位减法以及长除法都是算法,
算法的特点之一是他们不需要仁和聪明才智就能执行,他们是一个机械化的过程,每一步都依照一组简单的规则紧接着上一步进行。
print_n
函数,使用循环而非递归来实现def print_n(n): while n>0: n = n-1 print n
eval
可以接受一个字符串 并使用python解释器对它进行求。写一个eval_loop
迭代的提示用户 接受他们输入并使用eval
求值,直到用户输入done
中断def must_done(): while True: u = raw_input("> \n") if u=="done": break print(u) print "you input done"