python的日常(三)——循环学习
循环语句
while 语句
for 语句
while 语句:
作用:根据一定条件,重复的执行一条语句或多条语句
语法:
while 真值表达式: 语句块 else: 语句块
# 练习: # 编写程序,用while语句解决下面的问题 # 问题: # 输入一个数用n绑定,打印出n行的"hello world!" n = int(input("请输入一个数: ")) # 方法1 # i = 1 # while i <= n: # print("hello world!") # i += 1 # else: # print("条件不满足,循环退出") # 方法2, 直接用变量n来控制循环次数 while 1 <= n: print("hello world!") n -= 1 print("程序结束!")
# 写程序,输入二个整数,第一个用begin绑定, # 第二个用end变量绑定,打印出 begin~end的 # 所有的整数 begin = int(input("请输入第一个整数: ")) end = int(input("请输入第二个整数: ")) i = begin while i <= end: print(i) i += 1
while 语句语法说明
1. 先执行真值表达式,判断True/False
2. 如果为True则执行语句块1,然后跳转到第1步
3. 如果为 False则执行else子句部分的语句块2. 然后结束此while语句的执行.如果没有else子句,则直接结束此while语句
4. else 子句部分可以省略(同if语句类似)
while 注意事项
1. 要控制真值表达式来访问死循环
2. 通常用真值表达式内的变量来控制循环条件
3. 通常要在循环语句块内改变循环变量来控制循环的次数和变量的走向
# 打印 1~ 20的整数,每行5个,打印四行,如: # 1 2 3 4 5 # 6 7 8 9 10 # .... # .... # (注: while语句内可以嵌入if语句) i = 1 while i <= 20: print(i, end=' ') if i % 5 == 0: print() # 打印换行 i += 1
while 语句嵌套
while 语句本身是语句,和其它语句一样,可以放在其它复合语句的内部
while 真值表达式: ... while 真值表达式2: ... else: ... ... else: ...
# 练习: # 输入一个数,打印指定宽度的正方形 # 如: # 请输入: 5 # 打印如下正方形: # 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 # 如: # 请输入: 4 # 打印如下: # 1 2 3 4 # 1 2 3 4 # 1 2 3 4 # 1 2 3 4 n = int(input("请输入: ")) i = 1 while i <= n: # 外重循环来控制行数 # 在此处打印一行内容 j = 1 while j <=n: print(j, end=' ') j += 1 # 修改内重循环的变量来控制内重循环 print() # 行尾换行 i += 1
break 语句
作用:用于循环语句(while,for语句)中,用来终止当前循环语句的执行
break说明
1. 当break语句执行后,此循环语句break之后的语句将不再执行
2. break语句通常和if语句组合使用
3. break语句终止循环时,循环语句的else子句的语句将不会执行
4. break语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
5. break 语句只能在循环语句(while或for语句)内部使用
死循环:
死循环是指循环条件一直成立的循环
死循环通常用break语句来终止循环
死循环的else子句永远不会执行
while True: n = int(input("请输入: ")) if n == 0: break print(n)
for 语句
作用:用来遍历可迭代对象的数据元素
可迭代对象是指能依次获取数据元素的对象
可迭代对象包括:字符串 str 列表 list 元组 tuple 字典 dict 集合set ...
for 语句语法:
for 变量列表 in 可迭代对象: 语句块1 else: 语句块2
for 语法说明:
1. 可迭代对象每次提供一个元素依次赋值给变量列表中的变量,赋值完毕后执行语句块1,重复执行此步骤,直到可迭代对象不能提供数据为止
2. 可迭代对象提供完所有元素后,执行else子句部分的语句块2,然后退出此for语句
3. else子句部可以省略(同while语句类似)
4. 当在循环内部用break终止循环时,else子句部分语句不会执行
range函数
格式见:>>> help(range)
range(stop) 从零开始,每次生成一个整数后加1操作,直到stop为止(不包含stop)、
range(start, stop[, step]) 从start开始,每次生成一个整数后移动step,直到stop为止(不包含stop,且step可以是负整数)
作用:用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)
说明:range返回的对象是可迭代对象.可以用于for语句中
range(4) # 生成0,1,2,3 range(3, 6) # 生成 3, 4, 5 range(1, 10, 2) # 生成 1,3,5,7,9 range(5, 0, -2) # 生成 5,3,1 range(4, 0) # 空
for语句嵌套
for语句内部可以放任意语句,包含for语句和while语句
for x in "ABC": for y in '123': print(x + y,end = ' ')# A1 A2 A3 B1 B2 B3 C1 C2 C3
continue 语句
作用:用于循环语句(while, for语句)中,不再执行本次循环内continue之后的语句,重新开始一次新的循环
说明:
1. 在while语句中,执行continue语句将会直接跳转到while语句的真值表达式处重新判断循环条件
2. 在for语句中,执行 continue语句,将会从可迭代对象中取下一个元素,绑定变量后再次进行循环
# 练习: # 输入一个整数用begin绑定,再输入一个整数用end绑定,打印出从begin~end(包含end)的所有偶数 # (建议用continue语句跳过奇数) begin = int(input("请输入一个开始整数: ")) end = int(input("请输入一个结束整数: ")) for x in range(begin, end): if x % 2 == 1: continue print(x)
# 练习: # 求 1 ~ 100(包含100) 之间所有不能 # 被5,7,11整除的数的和是多少? # (建议用continue语句实现) s = 0 # 用来保存累加和 # 方法1 # for x in range(1, 101): # if x % 5 == 0 or x % 7 == 0 or x % 11 == 0: # continue # s += x # 方法2 for x in range(1, 101): if x % 5 == 0: continue if x % 7 == 0: continue if x % 11 == 0: continue s += x