循环结构的作用就是让指定的代码块重复执行
循环结构使用下边的流程图进行描述:
Python中通过 while
和 for
语句实现循环结构。
while 循环
- 语法格式
while 条件表达式:
语句块
更新条件表达式
else:
语句块
条件表达式
和else
之后要使用冒号:
- 当条件表达式结果为
True
时,反复执行语句块直到条件表达式为False
。- 当条件表达式结果为
False
时,执行else
中的语句块,else
是可选项- 在Python中没有
do...while
循环。
- 计算 1 到 100 的和
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
1 到 100 之和为: 5050
- 执行
while
循环中的else
语句块
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
0 小于 5
1 小于 5
2 小于 5
3 小于 5
4 小于 5
5 大于或等于 5
while循环嵌套
-
while
嵌套就是:while
里面还有while
while 条件表达式1:
语句块1
while 条件表达式2:
语句块2
更新条件表达式2
更新条件表达式1
- 练习:输出如下图形
*
**
***
****
*****
- 在默认情况下,
- 如果不希望换行,可以在
, end=""
- 其中
""
中间可以指定
print('*', end='') # 不换行输出
print('') # 单纯换行
- 练习:输出 九九乘法表
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
for 循环
- 语法格式
for 变量 in 序列:
语句块
else:
语句块
- 和
while
循环类似,注意:
的使用。for
循环可以遍历任何序列数据,如列表或字符串。- 当所有元素遍历结束后,执行
else
中的语句块,else
是可选项- 使用
break
语句提前结束循环时,else
中的语句块不会执行
- 使用
for
循环遍历列表
>>> languages = ["C", "C++", "Perl", "Python"]
>>> for x in languages:
... print (x)
...
C
C++
Perl
Python
- 执行
for
循环中的else
语句块
>>> sites = ["Baidu", "Google","Neuedu","Taobao"]
>>> for site in sites:
... if site == "Neuedu":
... print("东软睿道!")
... print("循环数据 " + site)
... else:
... print("没有循环数据!")
...
循环数据 Baidu
循环数据 Google
东软睿道!
循环数据 Neuedu
循环数据 Taobao
没有循环数据!
- 忽略
for
循环中的else
语句块
>>> sites = ["Baidu", "Google","Neuedu","Taobao"]
>>> for site in sites:
... if site == "Neuedu":
... print("东软睿道!")
... break # break提前结束循环
... print("循环数据 " + site)
... else:
... print("没有循环数据!")
...
循环数据 Baidu
循环数据 Google
东软睿道!
break 和 continue
break
条件满足时,退出循环,不再执行后续重复的代码continue
条件满足时,不执行后续的代码,直接进入下次循环break
和continue
只针对 当前所在循环 有效
-
break
语句
>>> i = 0
>>> while i < 10:
... if i == 3:
... break
... print(i)
... i += 1
...print('over')
0
1
2
'over'
-
continue
语句
>>> i = 0
>>> while i < 6:
... if i == 3:
... i += 1
... continue
... print(i)
... i += 1
...
0
1
2
4
5
循环计数
常见的计数方法有两种:
-
自然计数法(从
1
开始)— 更符合人类的习惯 -
程序计数法(从
0
开始)— 几乎所有的程序语言都选择从 0 开始计数,python也不例外
在程序开发中,通常会遇到 利用循环计数,产生数列 的需求
- 产生 0 ~ 100 之间所有整数
i = 0
while i <= 100:
print(i)
i += 1 # 处理计数器,保证循环可以结束
- 练习:产生100以内的奇数
- 练习:判断素数,给出任意整数,判断是否为素数
range( )函数
- 除了循环,在python中还可以使用
range()
函数来生成数列
>>>for i in range(5):
... print(i)
01234
range(i)
,会生成0 ~ i-1
之间的整数
- 可以为
range()
函数指定区间
>>>for i in range(5,9) :
... print(i)
5678
range(a, b)
,生成a ~ b-1
之间的整数
- 可以指定不同的增量(甚至可以是负数,有时这也叫做'步长'):
>>>for i in range(0, 10, 3) :
... print(i)
0369
>>>for i in range(-10, -100, -30) :
... print(i)
-10-40-70
- 可以结合
range()
和len()
函数遍历序列
>>> a = ['Google', 'Baidu', 'Neuedu', 'Taobao', 'QQ']
>>> for i in range(len(a)):
... print(i, a[i])
... 0 Google1 Baidu2 Neuedu3 Taobao4 QQ
- 可以使用
range()
函数创建一个列表,会在生成器中详细介绍
>>> list(range(5))
[0, 1, 2, 3, 4]
死循环
- 由于程序员的原因,忘记在循环内部 更新条件表达式,导致循环持续执行而无法终止!
- 通常使用死循环处理命令行菜单,等待用户输入数据
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
输入一个数字 :5
你输入的数字是: 5
输入一个数字 :
- 练习:猜价格
pass 语句
-
pass
是空语句,是为了保持程序结构的完整性。 -
pass
不做任何事情,一般用做占位语句。
>>> while True:
... pass # 等待键盘中断 (Ctrl+C)
- end -