写重复代码 是可耻的行为
-------------- 完美的分割线 --------------
摘录自:http://www.runoob.com/python/python-loops.html
程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径。
循环(loop)用于解决重附代码的问题
循环语句允许我们用简单的方法执行一个语句或语句组多次,下面是在大多数编程语言中的循环语句的一般形式
1.循环类型
1.1.循环分类
1)根据循环次数分类
有限循环(次数限制)
无限循环(死循环)
2)根据语法可以分为以下类型:
Python提供了for循环和while循环(在Python中没有do..while循环):
循环类型 | 描述 |
---|---|
while 循环 | 在给定的判断条件为 true 时执行循环体,否则退出循环体。 |
for 循环 | 重复执行语句 |
嵌套循环 | 你可以在while循环体中嵌套for循环 |
1.2.循环控制语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
控制语句 | 描述 |
---|---|
break 语句 | 在语句块执行过程中终止循环,并且跳出整个循环 |
continue 语句 | 结束本次循环,进入下次循环 |
pass 语句 | pass是空语句,是为了保持程序结构的完整性。 |
注意:
shell脚本里用break2可以跳出2层循环,但python不可以,这不是好语法,会造成语义混乱
2.while循环
2.1.while循环语法
Python 编程中 while循环是指在某条件下,重复执行某段程序,以处理需要重复处理的相同任务。其基本形式为:
while 判断条件: 执行语句……
执行语句可以是单个语句或语句块。
判断条件可以是任何表达式,任何非零、或非空(null)的值均为true。当判断条件假false时,循环结束。
执行流程图如下:
# 实例1:循环打印0-100
count = 0 while count <= 100: print("loop ",count) count += 1 print("-------end-------")
# 实例2:打印100以内的偶数
count = 0 while count <= 100: if count % 2 == 0: # 除以2余数为0的数 print("loop ",count) count += 1 print("-------end-------")
# 实例3:第50次不打印,第60-80打印对应值的平方
count = 0 while count <= 100: if count == 50: pass # 过 elif count >= 60 and count <= 80: print(count*count) else: print(count) count += 1 print("-------end-------")
2.2.死循环(无限循环)
语法:
while True: 执行代码...
# 实例1:死循环
count = 0 while True: print("forever ",count) count += 1
2.3.循环终止语句
break 完全终止循环
continue 终止本次循环,跳过本次循环
exit() 任意位置退出程序
# 实例1:break退出循环
count = 0 while count <= 100: print("loop ",count) if count == 5: break count += 1 print("-----out of while loop-----")
# 实例2:玩猜年龄3次就退出了
age = 26 count = 0 while count < 3: age_guess = int(input("猜猜年龄:")) if age_guess == age: print("猜对了!") break elif age_guess < age: print("猜大点") else: print("猜小点") count += 1
# 实例3:玩猜年龄3次后问是否还要玩
age = 26 count = 0 while count < 3: age_guess = int(input("猜猜年龄:")) if age_guess == age: print("猜对了!") break elif age_guess < age: print("猜大点") else: print("猜小点") count += 1 if count == 3: again = input("还想玩吗[y]:") if again == 'y': count = 0 else: exit('byebye')
2.4.python中while的特殊语法
语法:
while...else语句
while循环正常执行完,中间没有被 break 中止,就执行else语句
推论:没有看到else后面的语句就说明循环被中断过
else 作用:可以让你知道你的程序中间是否被break过
# 实例1:while...else正常执行完
count = 0 while count <= 5: count += 1 print("loop ",count) else: print("循环正常执行完了") print("-------end-------")
返回结果如下:
loop 1 loop 2 loop 3 loop 4 loop 5 loop 6 循环正常执行完了 -------end-------
# 实例2:while...else被break打断
count = 0 while count <= 5: count += 1 if count == 3: print('终止循环') break else: print("loop ", count) else: print("循环正常执行完了") print("-------end-------")
返回结果如下:
loop 1 loop 2 终止循环 -------end-------
总结经验:
不用非要从语义理解记忆,将while...else作为一组语句,正常语法执行完上面的while循环就执行下面的else语句,while循环被break终止就不执行下面的语句
3.for循环
参考:http://www.runoob.com/python/python-for-loop.html
3.1.for循环语法
Python的for循环用于遍历任何序列中的对象,如列表或字符串
for iterating_var in sequence: statements(s)
流程图:
3.2.for循环实例
# 实例1:打印0到10之间的奇数
方法1:for循环加if判断,比较复杂
for i in range(10): if i % 2 == 1: print(i)
方法2:步长,简单高效
for i in range(0,10,1): print("loop:",i)
# 实例2:打印0到10之间的偶数,隔2个打印:02468
for i in range(0,10,2): print("loop:",i)
# 实例3:从0打印到10之间的,隔3个打印:0369
for i in range(0,10,3): print("loop:",i)
# 实例4:猜数字,只能猜3次,猜对就退出,猜不对就退出
num = 26 for i in range(3): guess_num = int(input("Please input your num:")) if guess_num == num: print("yes,you got it!") break elif guess_num > num: print("please guess smaller...") else: print("please guess bigger...") else: print("You have tried too many times")
只要上面的for循环正常执行完毕,没被打断,就会执行else的语句
如果遇到break被打断则不走else的,因为break下面的代码不执行
遇到continue后else的代码是会执行的
# 练习:写一个登录程序,连续输错3次用户名或密码则退出。
_user = input("username:") _passwd = input("password:") for i in range(3): i_user = input("input username:") i_passwd = input("input password:") if i_user == _user and i_passwd == _passwd: print("Welcome login %s" %_user) break else: print("Invalid username or passord!")
-------------- 完毕,呵呵呵呵 ---------------