第四章Python循环结构

第四章Python循环结构

一、while循环结构

1、语法格式为:

while <条件>表达式:
    循环体语句块

#求1加到100的和
s = 0
i = 1
while i <= 100:
    s += i
    i += 1
print("1加到100的和:", s)

#求1加到100之间奇数的和
s = 0
i = 1
while i <= 100 :
    s += i
    i += 2
print("1加到100之间奇数的和:", s)

#求1加到100之间偶数的和
s = 0
i = 2
while i <= 100 :
    s += i
    i += 2
print("1加到100之间偶数的和:", s)

总结:

(1)while循环是先判断再执行,因此循环体语句块有可能出现一次也不执行的情况。

(2)要注意循环体语句块的缩进格式,while语句只执行其后的一条或一组同一缩进格式的语句块。

二、遍历循环结构

1、遍历循环:遍历某一个结构形成的循环运行方式,也称为for循环结构。

2、语法格式为:

for 循环变量 in 遍历结构:
    循环体语句块

3、常见四种遍历情况
①遍历字符串

#遍历字符串
for x in "ABCD":
    print(x)

②range函数产生的数字序列

语法格式为:

for 循环变量 in range([start,]end[,step]:
    循环体语句块

#range函数产生的数字序列
for x in range(8):
    print(x)
for x in range(2,8):
    print(x)
for x in range(2,8,4):
    print(x)

③列表、元组、字典

#列表、元组、字典
city = ['北京','上海','西安','成都']
for x in range(len(city)):
    print(x,city[x])

④文件

文件位置:"D:\文件001.txt

文件001

#文件
for x in open("D:\文件001.txt"):
    print(x, end='')

运行结果:
遍历文件

三、break和continue

1、break语句:break语句跳出并结束当前整个循环,执行循环后的语句。

例题:有一阶梯,如果每步跨2阶,最后余1阶;每步跨3阶,最后余2阶;每
步跨5阶,最后余4阶;每步跨6阶,最后余5阶;每步跨7阶,正好到达阶梯顶,
问阶梯至少有多少阶?

s = 0
while True:
    if s%2==1 and s%3==2 and s%5==4 and s%6==5 and s%7==0:
        break
    s = s + 1
print("阶梯至少:",s,"阶")

2、continue语句:continue语句用来跳过当前这次循环,继续进行下次循环

例题:求100到200之间所有非3的倍数之和?

sum = 0
for i in range(100,202):
    if i%3 == 0:
        continue
    sum += i
print("100到200之间所有非3的倍数之和:",sum)

3、小结:

break和continue可以与for和while循环搭配使用,起到辅助控制循环的作用。

四、循环嵌套—99乘法表

1、循环嵌套:在一个循环体内又包含了循环结构,这种结构称为循环嵌套。

2、九九乘法表(一般)

#九九乘法表
for i in range(1,10):
    for j in range(1,10):
        #print(i,"*",j,"=",i*j,end='')
        print('%d*%d=%2d  '%(j,i,i*j),end='')
    print()

运行结果:

1*1= 1  2*1= 2  3*1= 3  4*1= 4  5*1= 5  6*1= 6  7*1= 7  8*1= 8  9*1= 9  
1*2= 2  2*2= 4  3*2= 6  4*2= 8  5*2=10  6*2=12  7*2=14  8*2=16  9*2=18  
1*3= 3  2*3= 6  3*3= 9  4*3=12  5*3=15  6*3=18  7*3=21  8*3=24  9*3=27  
1*4= 4  2*4= 8  3*4=12  4*4=16  5*4=20  6*4=24  7*4=28  8*4=32  9*4=36  
1*5= 5  2*5=10  3*5=15  4*5=20  5*5=25  6*5=30  7*5=35  8*5=40  9*5=45  
1*6= 6  2*6=12  3*6=18  4*6=24  5*6=30  6*6=36  7*6=42  8*6=48  9*6=54  
1*7= 7  2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49  8*7=56  9*7=63  
1*8= 8  2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64  9*8=72  
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   

3、九九乘法表(下三角)

#九九乘法表(下三角)
for i in range(1,10):
    for j in range(1,1+i):
        #print(i,"*",j,"=",i*j,end='')
        print('%d*%d=%2d  '%(j,i,i*j),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   

4、九九乘法表(上三角)

#九九乘法表(上三角)
for i in range(1, 10):
    print(" "*(i-1)*8, end='')
    for j in range(i, 10):
        #print(i,"*",j,"=",i*j,end='')
        print('%d*%d=%2d  '%(i, j, i*j), end='')
print()

运行结果:

1*1= 1  1*2= 2  1*3= 3  1*4= 4  1*5= 5  1*6= 6  1*7= 7  1*8= 8  1*9= 9  
        2*2= 4  2*3= 6  2*4= 8  2*5=10  2*6=12  2*7=14  2*8=16  2*9=18  
                3*3= 9  3*4=12  3*5=15  3*6=18  3*7=21  3*8=24  3*9=27  
                        4*4=16  4*5=20  4*6=24  4*7=28  4*8=32  4*9=36  
                                5*5=25  5*6=30  5*7=35  5*8=40  5*9=45  
                                        6*6=36  6*7=42  6*8=48  6*9=54  
                                                7*7=49  7*8=56  7*9=63  
                                                        8*8=64  8*9=72  
                                                                9*9=81  

五、循环嵌套—素数判定

例题:输出2-100之间的所有素数。

素数:就是一个只能被1和它本身整除的整数。

步骤:

  1. 判断n是否是素数
  2. n从2到100循环,逐个判断每个数是否
    是素数。
import math
#n = eval(input("请输入一个整数:"))
for n in range(2,101):
    m = int(math.sqrt(n))
    for i in range(2,m+1):
        if n%i == 0 :
            break
    else:
        print(n,"是素数")

六、循环与else搭配用法

1、for循环与else搭配

for 循环变量 in 遍历结构:
    语句块1
else:
    语句块2

2、while循环与else搭配

while <条件表达式>:
    语句块1
else:
    语句块2

3、小结:

(1)else语句块作为循环正常结束的补充

(2)当循环没有被break语句中断时,执行else语句块

七、随机数求圆周率

方法:撒点法

from random import random
#随机数求圆周率
s = eval(input("请输入循环次数:")) #单位正方形内总的撒点数
n = 0                # n代表1/4圆内部的撒点数
for i in range (1,s+1):
    x,y = random(),random() #撒点的x和y坐标
    if x*x+y*y <= 1:  #如果点在圆内部则计数
        n=n+1
pi=4*(n/s)   #计算pi
print("圆周率是:{}".format(pi))

八、穷举法—百元买百鸡

问题:

公元五世纪我国数学家张丘建在其《算经》一书中提出了“百鸡问题 ”:“鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1。百钱买百鸡,问鸡翁、母、雏各几何?”

for x in range(0,21):
    for y in range(0,34):
         if 5*x+3*y+(1/3)*(100-x-y)==100:
            print("公鸡%d只,母鸡%d只,小鸡%d只"%(x,y,100-x-y))

运行结果:

公鸡0只,母鸡25只,小鸡75只
公鸡4只,母鸡18只,小鸡78只
公鸡8只,母鸡11只,小鸡81只
公鸡12只,母鸡4只,小鸡84

九、递推法—斐波那契数列

斐波那契数列(Fibonacci sequence),又称黄金分割数列,因以兔子繁殖为例子而引入的,故又称为“兔子数列”。指的是这样一个数列:1、1、2、3、5、8、13、21、34、……。

分析:在数学上,斐波纳契数列以递推的方法定义如下:
F(1)=1,F(2)=1,
F(n)=F(n-1)+F(n-2) (n>=3,n∈N*)

n=eval(input("请输入数列的个数:"))
a=b=1
count=2
print("%6d%6d"%(a,b),end=' ')
for i in range(3,n+1):
    c=a+b
    print("%6d"%c,end=' ')
    count+=1
    if count %6 == 0:
        print()
    a=b
    b=c

运行结果:

请输入数列的个数:26
     1     1      2      3      5      8 
    13     21     34     55     89    144 
   233    377    610    987   1597   2584 
  4181   6765  10946  17711  28657  46368 
 75025 121393 

十、循环打印图形

1、图形一
图形1

for i in range(1,5):
    print(' '*(11-i),end=' ')
    print('*'*(2*i-1))
           *
          ***
         *****
        *******

2、图形二
图形2

for i in range(1,5):
    print(' '*(11-i),end=' ')
    print('*'*(2*i-1))
for i in range(3,0,-1):
    print(' '*(11-i),end=' ')
    print('*'*(2*i-1))

运行结果:

           *
          ***
         *****
        *******
         *****
          ***
           *	

3、图形三
图形3

for i in range(1,5):
    print(' '*(11-i),end=' ')
    print(chr(64+i)*(2*i-1))

运行结果:

           A
          BBB
         CCCCC
        DDDDDDD

4、图形四
图形4

for i in range(1,5):
    print(' '*(11-i),end=' ')
    #print(chr(64+i)*(2*i-1))
    for j in range(1,2*i):
        print(chr(64+j),end='')
    print()

运行结果:

           A
          ABC
         ABCDE
        ABCDEFG

十一、程序调试—print

1、 简单程序—打印变量

2、复杂程序– 写日志文件

十二、调试程序—断点跟踪

  • 寻找合适的位置设置断点
  • 逐步跟踪是F8
  • 运行到光标是Alt+F9
  • 在上方的窗口或下方窗口
  • 查看运行时变量的值
  • 分析变量的值的变化

十三、异常处理

1、异常:指程序运行过程中出现的错误或遇到的意外情况。

2、异常处理:

  • 异常处理可以在一定程度上可以提高程序的健壮性

  • 同时把错误信息转换为友好的提示呈现给最终用户

3、基本语法:

try…except

try:
    <语句块1>
except: #任何错误
    <语句块2>

try的完整语法

try:
    <语句块1>
except: <异常类型1>
    <语句块2>
except: <异常类型2>
    <语句块3>
else:
    <语句块4>
finally:
    <语句块5>

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值