循环语句 loop statement
两种 循环语句:
while 语句
for 语句
问题:
写一个程序,输入一个整数n,打印如下内容
这是第 1 行
这是第 2 行
这是第 3 行
...
这是第 n 行
如何让一条语句或多条语句重复执行多次?如果i是一个变量
print("这是第",i,"行")
# 示例 n = int(input("请输入一个整数:")) i = 1 while i <=n: print("这是第",i,"行",sep="") i += 1 else: print("程序结束")
while 语句
作用:
根据一定条件,重复执行一条语句或多条语句
语法:
while 真值表达式:
语句块 1(*此部分的语句可能会重复执行多次)
else:
语句块 2
说明:
1.选执行真值表达式,测试布尔值为True或False
2.如果测试值为True,则执行语句块1,然后再返回到第1步,重复执行进行测试
3.如果真值表达式测试值为False,则执行else子语句中的语句块2,然后结束此while语句,如果没有else子句,则直接结束此while语句的执行
4.else 子部部分可以省略
# 示例见: #此示例示意用while语句打印5行的hello i = 1 # 先创建一个变量.用来控制循环的次数 while i<=5: print("hello") i += 1 else: print('程序结束')
练习:
1.写程序打印1~20的整数
2.写程序打印1~20的整数,打印在一行内
i = 1 while i <= 20: print(i,end=" ") i += 1 print() # 换行print(sep=" ",end = " ", flush=False)
3.写程序,打印1~20的整数,每行五个,打印四行,如:
1 2 3 4 5
6 7 8 9 10
11 12 ......
提示:可以将if语句嵌入到while语句中
i = 1 while i <= 20: print(i,end=" ") if i % 5 == 0: print("") i += 1 print()
4.写一个程序,输入一个开始的整数存在于beigin变量中
输入一个结束的整数,存于end 变量中
打印从 begin 到 end (不包含 end)的每个整数
打印在一行内
如:
请输入:8
请输入:20
附加思考:
如何实现每5个打印在一行内,打印多好?
提示:多加一个变量来记录打印的个数???
begin = int(input("请输入一个整数:")) end = int(input("请输入一个结束整数:")) count = 0 # 此变量用来记录打印数字的个数,每打完一个,此变做加1操作 i = begin while i < end: # 不包含end print(i,end=" ") count += 1 if count % 5 ==0: print() # 换行 i += 1 print() # 换行
5.写程序,计算:
1+2+3+4+5+ ..... +99+100的和
并打印这个和是多少?
i = 1 # 此变量用来记录生成的数字的循环 he = 0 # 此变量用来累加每此生成的数字 while i <= 100: he = he + i i += 1 print(he)
练习:
输入一个整数n,打印一个宽度和高度都为n个字符的长方形
如:
请输入:4
打印:
####
# #
####
如:
请输入:6
打印:
######
# #
# #
# #
# #
######
s = int(input("请输入一个整数:")) # 1.打印第一行 print("#"*s) # 2.打印中间的s-2行 i = 1 while i <= s-2: print("#"+" "*(s-2)+"#") i += 1 # 2.打印最后的一行 if s >=2: print("#"*s)
while 语句注意事项:
1.要控制循环真值表达式的值来防止死循环
2.通常用真值表达式内的循环变量来控制循环的条件
3.通常在循环的语句块内改变循环变量来控制循环的次数和变量的走向
while 语句嵌套
while 语句本身是语句,和其他语句一样,可以嵌套到任何复合语句中
示意:
while 真值表达式:
...
while 真值表达式2:
...
else:
...
...
# 示例见 j = 1 while j<=10: i = 1 while i <= 20: print(i,end=" ") i += 1 print() # 换行print(sep=" ",end = " ", flush=False) j += 1
练习:
输入一个数,打印指定宽度的正方形
如:
请输入: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
s = int(input("请输入整数:")) # 做一个循环w次的while循环 j = 1 while j <=s: #此处将循环W次,在此处打印 1 2 3 4 .....w
i = 1 while i <= s: print(i,end=" ") i += 1 print()#换行 j += 1
练习:
用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的三角形
如:
请输入三角形的宽度:3
1)打印如下三角形
*
**
***
****
2)打印如下三角形:
*
**
***
****
3)打印如下三角形:
****
***
**
*
4)打印如下三角形:
****
***
**
*
s = int(input("请输入整数:")) i = 1 while i<=s: print("*"*i) i += 1 print("--------------------------") i = 1 while i <= s: k = s - i print(" "*k+"*"*i) i += 1 print("--------------------------") i = s while i > 0: k = s-i print(" "*k+"*"*i) i -= 1 print("--------------------------") i = s while i >0: print("*"*i) i-=1
break 语句
问题:
如果在循环过程中,不想再继承此循环语句的执行,怎么办?
作用:
用于循环语句(while,for语句)中,用来终止当前循环语句的执行、
说明:
当break语句执行后,此循环语句break之后的语句将不再执行
break 语句通常和if语句组合使用
break 语句终止循环时,循环语句的else子句将不会被执行
break 语句只能终止当前循环语句的执行,如果有循环嵌套时,不会跳出嵌套的外重循环
break 语句只能在循环语句(while或for语句)内部使用
# 示例: i = 1 while i <=6: print("",i) if i == 3: break #终止循环 print("",i) i+=1 else: print("6666") print("程序结束")
死循环
死循环是指循环条件一直成立的循环
死循环通常用break语句来终止循环
死循环的else子句永远不会执行
死循环经常用在循环次数难以确定中的循环中
# 示例见: s = 0 # 此变量用来记录累加和 while True: x = int(input("请输入: ")) if x < 0: break # 终止当前循环 s += x print("您刚才输入的这些数的和是:", s)
for 语句
作用:
用来遍历可迭代对象的数据元素
(可迭代对象是指能依次获取数据元素的对象)
可迭代对象包括:
字符串 str 列表 list 元组 tuple 字典 dict 等等...
for 语句语法:
for 变量列表 in 可迭代对象:
语句块1
else:
语句块2
说明:
else子句部分可以省略(用while语句类似)
当在循环语句内部用break终止循环时,else子句部分的语句不会执行
# 示例: # 此示例示意for语句订语法和用法 s = "ABCDE" for ch in s: print("ch绑定---->".ch) else: print("for语句迭代访问结束") print("程序退出")
练习:
任意输入一段字符串
1)计算出这个字符串中空格的个数,并打印这个数
(要求用for语句,不予许使用s.count方法)
n = input("请输入一段字符串") blanks_count=0 # 遍历输入的字符串,当有字符为""是,将blanks_count做加1操作 for ch in n : if ch == " ": blanks_count +=1 print(blanks_count)
2)计算出字符串中全部英文字母(A-Z和a-z)的个数,并打印打印这个个数
zimu = 0 n = input("请输入一段字符串") for ch in n: # if 65 <= ord(ch) < 65 + 26 or 97 <= ord(ch) <97+26: # 第一种方法 if "A"<=ch <="Z"or "a"<=ch<="z": zimu += 1 print("英文字母的个数是:",zimu)
练习:
输入一个字符串,从尾向头输出这个字符串的字符
如:
请输入:hello
打印:
o l l e h (垂直)
n = input("请输入一个字符串:") s2 = n[::-1]#反转字符串 for c in s2: print(c)
range函数
range(stop) 用来生成0~stop 区间内的整数,知道stop为止(不包含stop)
range (start(开始数字),stop(停止数字)[,step(步长)]) 用来生成 start~stop 区间内整数,直到 stop 为止(不包含stop),每个整数间隔 step(且step可以是负数)
作用:
用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)
说明:
此函数调用后返回的对象是可迭代对象,可以用于for语句中
# 示例: range(4) #生成 0 1 2 3 range(4,6) #生成 3 4 5 range(1,10,2) #生成 1 3 5 7 9 range(5,0,-2) #生成 5 3 1 range(4,0) #空
for x in range(4): print(x)#打印0 1 2 3 print("------------") for x in range(3,6): print(x) print("-------------") for x in range(1,10,3): print(x) print("---------------") for x in range(5,0,-1): print(x)
练习:
1.用for语句打印 1 - 20 整数,打印在一行内
1 2 3 4 5 6 .... 19 20
for x in range(1,21): print(x,end=" ") print()
2.求 100以内有哪些整数与自身+1的乘积再对11求余的结果等于8?
即:x * (x + 1)% 11 ==8
打印出这些数
for x in range(0,101): if x * (x+1)%11==8: print(x,end=" ") print()
3.计算 1 + 3 + 5 + 7 +.... + 99 的和,分别用for循环语句和while循环语句实现
d = 0 for x in range(1,100,2): d = d + x print(d) print("---------------------") i = 0 he = 0 while i<=99: if i % 2 == 1: he = he + i i += 1 print(he,end=" ")
for 语句的注意事项
1.for range的调用顺序见:
i = 6 for x in range(1,i): print("x=",x,"i=",i) i -= 1
2.变量可能不被创建的问题:
# 如: for x in range(4,0): print(x) else: print("循环结束后的x=,x") # 出错 print(x) # 出错
for 语句嵌套:
# 示例: for x in "ABC": for y in "123": print(x+y) #请问此语句打几次?
练习:
1.输入一个整数,打印正方形的宽和高,打印相应的正方形
请用for语句实现
如:请输入: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
w = int(input("请输入数字:")) for y in range(w): # 外重循环控制行数 # 内循环打印一行 i = range(1,w+1) for x in i: print(x,end=" ") print()
2.输入一个整数,代表正方形的宽和高,打印相应的正方形
如:
请输入: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
w = int(input("请输入数字:")) for y in range(1,w+1): # 外重循环控制行数 # 内循环打印一行 i = range(y,y+w) for x in i: print("%2d" % x,end=" ") print()
continue 语句
问题;
如何让程序不再向下执行,重新开始一次新的循环
作用:
用于循环语句(while,for语句),不再执行本次循环continue之后的语句,重新开始一次新的循环
语法:
continue
说明:
1.在while语句中执行continue语句,将会直接跳转到while语句的真值表达式,重新判断循环条件。
2.在for语句中执行continue语句,将会从可迭代对象中取下一个元素绑定变量后再次进行循环。
# 示例见: for x in range(5): if x == 2: continue print(x)
# 打印10以内的偶数 for x in range(10): # 如果x是奇数,则跳过本次循环 if x % 2 ==1: continue print(x)
练习:
1.打印10以内的偶数(要求使用while语句+ continue)
采用跳过奇数的方式实现
i = 1 while i <=10: if i % 2 == 1: i += 1 continue print(i) i += 1
2.求1~100之间所有不能被2,3,5 和7 中任意一个数整的数的和(用continue实现)
he = 0 i = 1 while i <=100: if i % 2 == 0 or i % 3 ==0 or i % 5 == 0 or i % 7 == 0: i+=1 continue he =he + i i+=1 print(he)
循环小结:
四条语句:
while语句:
for 语句:
字符串str
range函数调用后返回的对象
break 语句
continue 语句