循环语句
while 语句
for 语句
语句解决问题的方向
问题1:
输入一个整数n,写程序打印如下:
这是第一行
这是第二行
这是第三行
......
这是第n行
问题2:
如何让一条语句重复执行多次
whlie 语句
作用:
根据一定条件,重复的执行一条或多条语句
语法:
while 真值表达式:
语句块1
else:
语句块2
说明:
1.先执行真值表达式,测试布尔值是否为True或False。
2.如果真值表达式测试值为True,则执行语句块1,然后返回到第一步,重新进行测试。
3.如果真值表达式测试值为False,则执行else字句中的语句块2,然后结束while语句,如果没有else字句,则直接结束while语句的执行。
注:
else 字句部分可以省略(同if语句类似)
见示例:while.py
1 #while.py 2 n = int(input("请输入一个你需要打印的行数")) 3 i = 1 4 while i <= n: 5 print("这是第%d行"%i) 6 i+=1
1.输入一行字符串,将字符串中Unicode编码值最大的一个字符打印出来(不允许用max函数)
(提示:while语句内可以嵌入if语句进行判断)
1 #while-if.py 2 # 1.输入一行字符串,将字符串中UNIcode编码值最大的一个字符打印出来(不允许用max函数) 3 # (提示:while语句内可以嵌入if语句进行判断) 4 s = input("请输入") 5 i = 1 6 smax = s[0] 7 smin = s[0] 8 while i< len(s): 9 if s[i] > smax: 10 smax = s[i] 11 if s[i] < smin: 12 smin = s[i] 13 i+=1 14 print(s,'编码值最大的字符是:',smax) 15 print(s,'编码值最小的字符是:',smin)
2.打印从零开始的浮点数,每个数增加0.5,打印出10以内的这样的数:
如:0.0 0.5 1.0 1.5 ... 9.5
1 #while-2.py 2 # 2.打印从零开始的浮点数,每个数增加0.5,打印出10以内的这样的数: 3 # 如:0.0 0.5 1.0 1.5 ... 9.5 4 # i = 1 5 # f = 0 6 # while i <= 10: 7 # print("%.1f"%f,end=' ') 8 # f = 0.5*i 9 # i = i+1 10 11 i = 0.0 12 while i <= 10: 13 print("%.1f"%i,end=' ') 14 i+=0.5
3.打印1到20的整数;
4.打印10到0(不含0)之间的整数
5.打印1到20的整数,打印在一行内
1 #while-练习.py 2 # 3.打印1到20的整数; 3 # 4.打印10到0(不含0)之间的整数 4 # 5.打印1到20的整数,打印在一行内 5 i=1 6 while i<=20: 7 print(i) 8 i+=1 9 print('='*20) 10 j=10 11 while j>0: 12 print(j) 13 j-=1 14 print('='*20) 15 k=1 16 while k<=20: 17 print(k,end=" ") 18 k+=1
6.打印1到20的整数,每行打印5个,打印四行。
1 #while_练习2.py 2 i=1 3 while i<=20: 4 print('%3d'%i,end=' ') 5 if i % 5 == 0: 6 print() 7 i+=1 8 print("="*20)0
while 语句的注意事项:
要控制循环真值表达式的值来防止‘死循环’
通常用真值表达式内的循环变量来控制循环条件
通常在循环语句块内改变循环变量来控制循环的次数和变量的走向
while 语句的嵌套
while 语句本身就是语句,和其他语句一样,可以嵌套放入任何复合语句中。
示意:
while 真值表达式1:
语句块1
while 真值表达式2:
语句块2
else:
语句块3
else:
语句块4
1 # 输入一个数,打印指定宽度的正方形 2 # 如: 3 # 输入: 5 4 # 打印如下正方形: 5 # 1 2 3 4 5 6 # 1 2 3 4 5 7 # 1 2 3 4 5 8 # 1 2 3 4 5 9 # 1 2 3 4 5 10 # 如: 11 # 输入: 3 12 # 打印如下正方形: 13 # 1 2 3 14 # 1 2 3 15 # 1 2 3 16 17 18 n = int(input("请输入一个数: ")) 19 # 先写一个循环,打印n行任意的数 20 i = 0 # 控制外重循环的变量 21 while i < n: 22 # 打印其中的一行: 23 j = 1 # 控制一行内数字的变量 24 while j <= n: 25 print(j, end=' ') 26 j += 1 27 print() # 打印一行后的换行 28 i += 1
1.写程序,计算:
1 + 2 + 3 + 4 + 5 + ...+ 99 + 100的和
1 # 1 + 2 + 3 + 4 + ..... + 99 + 100的和 2 s = 0 # 先创建一个变量,用来存储所有数的和 3 i = 1 # 整数的起始数 4 while i <= 100: 5 s += i # 把i的值累加到s当中 6 i += 1 7 8 print('和是:', s) 9 10 11 # 2. 写程序,任意输入一个数n,计算: 12 # 1 + 2 + 3 + 4 + ..... + (n-1) + n的和 13 n = int(input("请输入结束整数: ")) 14 15 s = 0 # 先创建一个变量,用来存储所有数的和 16 i = 1 # 整数的起始数 17 while i <= n: 18 s += i # 把i的值累加到s当中 19 i += 1 20 21 print('和是:', s)
2.写程序,任意输入一个数n,计算:
1 + 2 + 3 + 4 + 5 + ...+ (n-1) + n的和
break 语句
问题:
如果在循环过程中不想继续循环语句的执行,怎么办?
作用:
用于循环语句(while,for)中,用来终止当前循环语句的执行
说明:
1.当break语句执行后,次循环语句break之后的语句将不在执行
2.break语句通常和if语句组合使用
3.break语句终止循环是,循环语句else字句将不在执行
4.break语句只能终止当前循环语句的执行,如果由循环嵌套时,不会跳出嵌套的外重循环
5.break语句只能在循环语句(whlie或for语句)内部使用
示例:break.py
1 #break.py 2 #此示例示意break语句的用法 3 i = 1 4 while i <= 6: 5 print("循环开始时:",i) 6 #break#当break执行,循环语句后面的语句不在执行 7 if i == 3: 8 break 9 i+=1 10 print("循环执行中",i) 11 else: 12 print('这是else语句')#break执行后,else语句不执行,else语句是while语句正常结束循环,才执行。 13 print("循环结束时:",i)
死循环
死循环是指循环条件一直成立的循环
死循环通常用break语句来终止循环
死循环的else字句永远不会执行
示例:
1.任意输入一些数,当输入负数时结束输入,当输入完成后,打印您输入的这些数的和是多少?
1 he = 0 # 2 while True: # 开始循环做事情 3 n = int(input("请输入一个数:")) 4 if n < 0: 5 break # 结束做事情 6 he += n # 开始累加 7 8 print("和是:", he)
2.写程序求:
sn = 1 + 1/2 + 1/4 + 1/8 + ...+ 1/(2**n),求当前等同于100时,sn的值是多少?
1 sn = 0 2 n = 0 3 while n <= 100: 4 a = 1/(2**n) 5 sn += a 6 n += 1 7 8 print("和是:", sn)
3.用while语句实现打印三角形,输入一个整数,表示三角形的宽度和高度,打印出相应的直角三角形:
如:
请输入三角形的宽度:4
1.打印如下:
*
* *
* * *
* * * *
2.打印如下:
*
* *
* * *
* * * *
3.打印如下:
* * * *
* * *
* *
*
4.打印如下:
* * * *
* * *
* *
*
1 # 请输入三角形的宽度: 4 2 n = int(input("请输入三解形的宽度: ")) 3 4 line = 1 # line 代表行数 5 while line <= n: 6 # 打印一行星 7 print('*' * line) 8 line += 1 # 行数变大 9 # 1) 打印如下: 10 # * 11 # ** 12 # *** 13 # **** 14 15 print('-------------------') 16 line = 1 17 fmt = "%%%ds" % n 18 while line <= n: 19 print(fmt % ('*' * line)) 20 line += 1 21 # 2) 打印如下: 22 # * 23 # ** 24 # *** 25 # **** 26 27 print('-------------------') 28 stars = n # 第一行星号的个数 29 while stars > 0: 30 # 先计算空格的个数 31 blank = n - stars 32 print(' ' * blank + '*' * stars) 33 stars -= 1 # 下一行星号个数变少一个 34 # 3) 打印如下: 35 # **** 36 # *** 37 # ** 38 # * 39 40 print('-------------------') 41 stars = n # 第一行星号的个数 42 while stars > 0: 43 # 先计算空格的个数 44 print('*' * stars) 45 stars -= 1 # 下一行星号个数变少一个 46 # 4) 打印如下: 47 # **** 48 # *** 49 # ** 50 # *