标签:style blog http java color 使用
迭代程序的实现,通常包括下了以下五个部分:
- 计数器(Count):用于标记循环的次数
- 初始化(Initiate):在循环外部进行初始化
- 正确的结束测试(Right End Test):在什么情况下结束通常与计数器(Count)密切相关
- 循环部分的代码块:该部分代码块通常包含了对计数器的改变
- 结束后程序应该做什么
在使用具体的代码实现之前,可以用流程图来组织程序。
举一个简单的例子,已经一个正整数的平方为X,要求这个正整数,可以设这个正整数为ans
具体的代码实现如下:
# Find the square root of a perfect square 1.0
x = 16
ans = 0
while ans*ans < x:
ans = ans + 1
print(ans)
当然,上述代码仍然具有很大的改进空间,可以稍微进行修改,增加对x的判断
# Find the square root of a perfect square 2.0
x = 16
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‘)
在改进的代码中,我们对于x的不输入值,进行了不同的判断,这种设计程序的方式叫做防卫性程序设计。
防卫性程序设计:确保用户的所有输入都能对应不同的代码路径
之前我们所考虑的循环主要是增量式的循环,实际上,可以扩展到更一般的情况,即依次访问集合中的每一个元素,我们将此称之为遍历
for 元素 in 集合
代码块
下面来求能被1到10之间(不包括10)有哪几个数能被10整除,先考虑增量式的方法
#求1到10之间能被10整除的数(不包括10)
x = 10
count = 1
while(count<x):
if(x%count==0):
print(‘divisor‘,count)
count+=1 #python不支持count++的写法
再考虑遍历集合元素的方法
# 运用集合遍历来求1到10之间能被10整除的数
x = 10
#range函数产生1到10之间的整数,不包括10
for i in range(1,x):
if x%i == 0:
print(‘divisor‘,i)
通过比较,可以发现利用for循环进行遍历有如下的好处
- 不用担心变量是否进行初始化
- 可读性更强
- 不用手动添加递增操作
- 遍历的是集合的元素,不需要考虑顺序,所以范围更加广泛
继续考虑除数的例子,现在要做的是把那些显示的除数聚集起来,从而可以进行另外一些操作,这时候,可以考虑采用元组
元组是一系列有序的元素,而且是不可变的
元素的创建与显示非常简单,用小括号即可
# 元组的创建与显示 test = (1, 3, 5, 4, 2) test[0] #=>1 test[2] #=>5 test[-1] #=>2 test[-6] #=>1 test[-7] #=>wrong test[5] #=>wrong test[1:3] #=>(3, 5) test[2:] #=>(5, 4, 2) test[:3] #=>(1, 3, 5)
接下来可以将符合要求的除数放在同一个元组里面了
# 将1-100之间能被100整除的数字储存在同一个元组中 x = 100 divisors = () for i in range(1,x): if x%i == 0: divisors = divisors + (i,) #如果i后面不加逗号,python就会将其当做整型处理,从而显示错误
计算机科学及编程导论(3)迭代程序的设计与实现、遍历、元组,布布扣,bubuko.com
标签:style blog http java color 使用
原文地址:http://www.cnblogs.com/ihuangmx/p/3768013.html