Python-流程控制-while循环-for循环
Python-流程控制-while循环-for循环
写重复代码 是可耻的行为
程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径。
循环(loop)用于解决重附代码的问题
1.循环类型
1.1.循环分类
1)根据循环次数分类
有限循环(次数限制)
无限循环(死循环)
标志位flag
2)根据语法可以分为以下类型
Python提供了for循环和while循环(在Python中没有do..while循环):
while 循环 在给定的判断条件为 true 时执行循环体,否则退出循环体。
for 循环 重复执行语句
嵌套循环 你可以在while循环体中嵌套for循环
1.2.循环控制语句
循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:
break结束全部循环,跳出整个循环
continue结束本次循环,进入下次循环
shell脚本里用break2可以跳出2层循环,但python不可以,这不是好语法,会造成语义混乱
2.while循环
参考文章:
http://www.runoob.com/python/python-while-loop.html
2.1.while循环语法:
while 条件:
执行代码...
- 实例:循环打印0-100
count = 0
while count <= 100:
print("loop ",count)
count += 1
print("-------end-------")
while True: # 当这个条件成立就执行下面的代码
print("count:",count)
count = count +1 # count +=1 <=> count = count +1
if count == 100:
break
- 实例:优雅退出
while True:
if count ==3;
break # 结束退出
# 优化代码
while count <3:
- 实例:打印100以内的偶数
count = 0
while count <= 100:
if count % 2 == 0: # 除以2余数为0的数
print("loop ",count)
count += 1
print("-------end-------")
- 实例:第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')
注意:以上的无限循环你可以使用 CTRL+C 来中断循环。
2.4.python中while的特殊语法
while...else语句
while … else 在循环条件为 false 时(也就是训完执行完成)执行 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终止就不执行下面的语句
2.5.简单语句组
类似 if 语句的语法,如果while循环体中只有一条语句,可以将该语句与while写在同一行中, 如下所示:
#!/usr/bin/python
flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"
3.for循环
Python for循环可以遍历任何序列的项目,如一个列表或者一个字符串。
参考:http://www.runoob.com/python/python-for-loop.html
3.1.for循环语法
for iterating_var in sequence:
statements(s)
3.2.实例演示
- 实例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!")
10.参考地址
本文版权归作者和博客园共有,如果感觉有用可以随意打赏,感谢支持,欢迎转载