当前位置:编程学习 > 网站相关 >>

Learn Python The Hard Way学习(33) - While循环

下面学习一个新的循环,while循环,如果while的布尔表达式一直是True,那么会不断的重复执行代码块。

等等,我们不是在学习一个新的术语吗?用冒号结束一行语句,然后开始新的代码段,使用缩进区别这些代码段,好吧,这就是python的语言结构,如果你还是很明白,回去多练习前面的for,if和函数。

后面我们会有一些练习让你记住这些结构,就像前面记住布尔表达式一样。

回到While循环,刚开始它和if一样,进入代码段执行,只是while循环执行完代码段后会回到这个代码段的顶部,重复执行,直到while的布尔判断为False为止。

这里有个问题:while循环有可能一直不会停止,不过你还是希望循环最终能够停止的。

为了解决这个问题,我们列出了一下规则:
不到万不得已不要使用while,可以用for代替。
仔细检查你的while声明,确保有条件让它返回False。
如果有怀疑的话,在代码段的头部和底部打印变量的值来判别。
下面看我是怎么做的:
[python] 
i = 0 
numbers = [] 
 
 
while i < 6: 
    print "At the top i is %d" % i 
    numbers.append(i) 
 
 
    i = i + 1 
    print "Numbers now: ", numbers 
    print "At the bottom i is %d" % i 
 
 
print "The numbers: " 
 
 
for num in numbers: 
    print num 


运行结果
root@he-desktop:~/mystuff# python ex33.py
At the top i is 0
Numbers now:  [0]
At the bottom i is 1
At the top i is 1
Numbers now:  [0, 1]
At the bottom i is 2
At the top i is 2
Numbers now:  [0, 1, 2]
At the bottom i is 3
At the top i is 3
Numbers now:  [0, 1, 2, 3]
At the bottom i is 4
At the top i is 4
Numbers now:  [0, 1, 2, 3, 4]
At the bottom i is 5
At the top i is 5
Numbers now:  [0, 1, 2, 3, 4, 5]
At the bottom i is 6
The numbers:
0
1
2
3
4
5

加分练习
1. 把这个while循环写到一个函数中,用一个变量传递6这个值。
[python] 
def while_function(i): 
    j = 0 
    numbers = [] 
     
    while j < i: 
        numbers.append(j) 
        j += 1 
 
 
    return numbers 
 
 
numbers = while_function(6) 


2. 使用这个函数打印不同的数字。

3. 添加一个参数到函数中,让它可以根据这个参数修改增量值,就是i=i+1这里。
[python] 
def while_function(i, increment): 
    j = 0 
    numbers = [] 
     
    while j < i: 
        numbers.append(j) 
        j += increment 
 
 
    return numbers 
 
 
numbers = while_function(6, 2) 


4. 使用上面的函数运行一下。

5. 使用for循环和range函数实现上面的代码。
[python] 
def for_function(i, increment): 
    numbers = [] 
    for j in range(0, i, increment): 
        numbers.append(j) 
    return numbers 
 
 
numbers = for_function(6, 2) 


如果你调试代码的时候进入了无限循环,可以用ctrl+c退出。

作者:lixiang0522
补充:Web开发 , Python ,
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,