一
循环语句(有两种):
while 语句
for 语句
while 语句:
问题: 输入一个整数 n, 让程序输出 n 行的:
- hello 1
- hello 2
- .......
- hell n
while 语句:
作用: 根据一定条件, 重复的执行一条语句或多条语句
语法:
while 真值表达式:
语句块 1......
else:
语句块 2......
说明:
1, 先执行真值表达式, 测试布尔值为 True 或 False
2, 如果真值表达式的测试值为 True, 侧执行语句 1, 然后再返回到第一步重复进行测试
3, 如果真值表达式的测试值为 False. 则执行 else 子句中的语句块 2, 然后结束此 while 语句的执行, 如果没有 else 子句, 则直接结束 while 语句的执行.
4,else 子句部分可以省略(同 if 语句类似).
如: 打印 10 行的 hello
- i = 1 #创建并初始化一个控制 while 循环的变量 i
- while i <= 10:
- print("hello") #此处执行 10 次
- i += 1
- # 运行结果:[root@localhost data]# ./test.py
- hello
- hello
- hello
- hello
- hello
- hello
- hello
- hello
- hello
- hello
while 语句的注意事项:
1, 要控制循环的真值表达式的值来防止死循环.
2, 通常用真值表达式中的循环变量来控制循环条件.
3, 通常在循环语句块內需要改变循环来控制循环的次数和变量的走向
while 循环的嵌套:
while 语句本身是语句, 和其它的语句一样可以嵌套在其它复合语句中(如: if 语句 ,while 语句, for 语句 .... 内部)
while 语句嵌套示意:
while 真值表达式:
.......
while 真值表达式 2:
- ......
- else:
- ........
- else:
- ........
如:
输入一个数, 打印指定宽度的正方形:
如: 输入: 5
- n = int(input("输入一个数:"))
- j = 1
- while j <= n:
- i = 1
- while i <= n:
- print(i,end=' ')
- i += 1
- print()
- j += 1
- ###### 运行结果:
- 1 2 3 4 5
- 1 2 3 4 5
- 1 2 3 4 5
- 1 2 3 4 5
- 1 2 3 4 5
break 语句:
作用: 用于循环语句 (while,for 语句) 中, 用来终止当前循环语句的执行.
说明:
1, 当 break 语句执行后, 此循环语句 break 之后的语句将不再执行
2,break 语句通常和 if 语句组合使用.
3,break 语句终止循环时, 循环语句的 else 子句将不会被执行
4,break 语句只能终止当前循环的执行, 如果有循环嵌套时, 不会跳出嵌套的外重循环
5,break 语句只能在循环语句 (while 或 for 语句) 内部使用
如:
- i = 1
- while i < 10:
- print("循环开始 i=",i)
- if i == 5: #当 i = 5 时结束循环
- break
- i += 1
- # 运行结果:[root@localhost data]# ./test.py
循环开始 i= 1
循环开始 i= 2
循环开始 i= 3
循环开始 i= 4
循环开始 i= 5
死循环 death loop:
1, 死循环是指循环条件一直成立的循环
1, 死循环通常用 break 语句来终止循环
3, 死循环的 else 子句永远不会执行
如: 用 input 输入一些文字, 当输入三个 * 号时, 代表输入结束, 否则一直循环.
- s = ""
- while True:
- a = input("请输入文字(*** 结束)")
- if a == '***':
- break
- s += a + '\n'
- ## 运行结果:[root@localhost data]# ./test.py
请输入文字(*** 结束)a
请输入文字(*** 结束)b
请输入文字(*** 结束)v
请输入文字(*** 结束)c
请输入文字(*** 结束)d
请输入文字(*** 结束)*** #输入三个 *** 结束, 退出循环
[root@localhost data]#
二:
for 语句(循环语句)
作用: 用来遍历可迭代对象的数据元素
语法:
for 变量列表 in 可迭代对象:
语句块 1......
else:
语句块 2......
语法说明:
1, 可迭代对象每次提供一个元素依次赋值给变量列表中的变量, 赋值完毕后执行语句块 1, 重复执行此步骤,
2, 当可迭代对象不能够提供数据时, 执行 else 子句部分的语句块 2, 然后退出循环.
如:
- s = 'ABCDE'
- for x in s:
- print(x)
- else:
- print("继续执行此条") #迭代对象不能够提供数据时, 继续执行 else 中的这条
- ## 运行结果:[root@localhost data]# ./test.py
- A
- B
- C
- D
- E
继续执行此条
3,else 子句部分可以省略(同 while 语句类似)
4, 当在语句内部用 break 终止循环时, else 子句部分语句块 2 不会执行,
可迭代对象时指能依次获取数据元素的对象
四:
for 循环嵌套: 和 while 循环嵌套一样
如:
- for x in "ABC":
- for y in "123":
- print(x + y)
- ## 运行结果:
- [root@localhost data]# ./test.py
- A1
- A2
- A3
- B1
- B2
- B3
- C1
- C2
- C3
经典否循环嵌套示例:
用 for 循环嵌套打印如下图形:
(输入一个数 n(10 以内)代表矩形的宽度和高度)
如: 输入: 5
- 1 2 3 4 5
- 2 3 4 5 6
- 3 4 5 6 7
- 4 5 6 7 8
- 5 6 7 8 9
- n = int(input("输入一个数:"))
- for i in range(1, n +1):
- for j in range(i, i + n):
- print(j,end=' ')
- else:
- print()
- # 运行结果:
- [root@localhost data]# ./test.py
输入一个数: 5
- 2 3 4 5
- 3 4 5 6
- 4 5 6 7
- 5 6 7 8
- 6 7 8 9
五:
continue 语句:
作用: 用于循环语句 (while,for 语句) 中, 不再执行本次循环內 continue 之后的语句, 重新开始一次新循环.
说明:
1, 在 while 语句中执行 continue 语句, 将直接跳转到 while 语句的真值表达式重新判断循环条件.
2, 在 for 语句中执行 continue 语句, 将会从可迭代对象中取下一个元素, 绑定变量后再次进行循环.
如:
- for i in range(5):
- if i == 3: #当 i 等于 3 时, 跳过打印, 进行下一次循环.
- continue
- print(i)
- # 运行结果
- [root@localhost data]# ./test.py
- 0
- 1
- 2
- 4
示例:
写一个程序, 求 1-100 之间所不能被 5,7,11 整除的数的和.
- s = 0
- for i in range(1,101):
- if (i % 5) == 0 or (i % 7) == 0 or (i % 11) == 0:
- continue
- s += i
- print(s)
- # 运行结果:
- [root@localhost data]# ./test.py
- 3007
六:
range 函数:
作用: 用来创建一个生成一系类整数的可迭代对象(也叫整数序列生成器.)
调用格式:
range(stop)
从零开始, 每次生成一个整数后加 1, 操作, 直到 stop 为止(不包含 stop)
range(start,stop[,step])从 start 开始, 每次生成一个整数后移动 step, 直到 stop 为止(不包含 stop, 且 step 可以为负数.)
注: 如果直接打印 range(5)或 (print(range(5))) 的时候会得到 range(5), 而不是一个列表, 这是因为节省空间, 防止过大的列表产生.
如:
- >>> range(5)
- range(0, 5)
- >>>
如果想要到交互模式下得到列表, 可以加入 list 到前面来进行, 如下:
示例:
- >>> list(range(5))
- [0, 1, 2, 3, 4]
- >>> list(range(1,6))
- [1, 2, 3, 4, 5]
- >>> list(range(10,0,-1))
- [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
- >>> list(range(1,10,2))
- [1, 3, 5, 7, 9]
- >>> list(range(5,0,-2))
- [5, 3, 1]
- >>>
来源: http://www.bubuko.com/infodetail-2571804.html