Python中的循环结构

range()函数

作用:用于生成一个整数序列

返回值是一个迭代器对象

range类型的优点:不管range对象标识的整数序列又多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素

in与not in判断整数序列中是否存在(不存在)指定的整数

通常使用range()函数作为循环函数的遍历对象

创建range对象的三种方式

#range()的三种创建方式
'''第一种创建方式,只有一个参数,(小括号中只给了一个数)'''
a=range(10) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9],默认从0开始,默认相差1称为步长
print(a) #range(0,10)
print(list(a)) #用于查看range对象中的整数序列 →list是列表的意思

'''第二种创建创建方式,两个参数(小括号中给了两个数)'''
b=range(1,10) #指定了起始值,从1开始,到10结束(不包含10),默认步长为1
print(list(b))

'''第三种创建方式,三个参数(小括号中给了三位数)'''
c=range(1,10,2) #指定了起始值,结束值,步长
print(list(c))

'''判断指定的整数,在这个序列中是否存在(in,not in)'''
print(10 in a) #False,10不在当前的a这个整数序列中
print(1 in a) #True,1在当前的a这个序列中

print(10 not in a) #True,10不在a这个序列中
print(1 not in a) #False,1在a这个序列中

 循环结构

while循环

反复做同一件事情的情况,称为循环

循环的分类

  • while
  • for -in

语法结构

while 条件表达式
    条件执行体(循环体)

选择结构的if与循环结构while的区别

  • if是判断一次,条件为True执行一行
  • while是判断N+1次,条件为True执行N次

 

 四步循环法

  • 初始化变量
  • 条件判断
  • 条件执行体(循环体)
  • 改变变量
总结:初始化的变量与条件判断的变量与改变的变量为同一个

 

 小实验

#计算0到4之间的累加和
'''
初始化变量
条件判断
条件执行体(循环体)
改变变量
总结:初始化的变量与条件判断的变量与改变的变量为同一个
'''
sum=0 # 这个变量是一个储存器(用于存储累加和)
a=0 #初始化变量为0
while a<5: #条件判断
    sum += a #条件执行体(循环体)
    a += 1 #改变变量
print('和为',sum)

 运算过程

sum = 0  a = 0 a+=1

a	a<5 	sum+=a	sum
0	0<5 True	    0+0	  0
1	1<5 True	    0+1	  1
2	2<5 True	    1+2	  3
3	3<5 True	    3+3	  6
4	4<5 True	    6+4	 10

5	5<5 False	

 while练习题 1-100之间的和,偶数和,奇数和

求和

#计算1到100之间的和
sum=0 #用于存储和
a=1 #初始化变量
while a<=100: # 条件判断
    # 条件判断
        sum+=a
        a+=1 #改变变量
print('1-100之间的和',sum)

偶数和 加一个条件判断语句,如果a%2的值为0,则储存至sum,为1则不储存,每进行一次计算,a+=1。

#计算1到100之间的偶数和
sum=0 #用于存储偶数和
a=1 #初始化变量
while a<=100: # 条件判断
    # 条件判断是否为偶数
    if a%2==0: #条件执行体
        sum+=a
    a+=1 #改变变量
print('1-100之间的偶数和',sum)

 因为0的布尔值为False(1%2的余数为0),所以如果要进行奇数和的判断,可以这样写

sum=0 #用于存储偶数和
a=1 #初始化变量
while a<=100: # 条件判断
    # 条件判断是否为偶数
    if a%2: #条件执行体
        sum+=a
    a+=1 #改变变量
print('1-100之间的偶数和',sum)

 也可以用布尔值判断的方式来求偶数和(在布尔值前面加上not即可)

sum=0 #用于存储偶数和
a=1 #初始化变量
while a<=100: # 条件判断
    # 条件判断是否为偶数
    if not bool(a%2): #条件执行体
        sum+=a
    a+=1 #改变变量
print('1-100之间的偶数和',sum)

 如果还不太懂,可以去看看我之前的博客《Python中的运算符》

for_in循环

  • in表达从(字符串、序列等)中依次取值,又称为遍历
  • for-in遍历的对象必须是可迭代对象 (range()产生一个整数序列,也是可迭代对象)
  • 循环体内不需要访问自定义变量,可以将自定义变量替代为下划线

for-in的语法结构

for 自定义的变量   in 可迭代对象:
    循环体

for a in 'Python': #'python'为可迭代对象 a为自定义变量
    print(a)
'''
第一次取出的值为P,将P赋值给item,将item的值输出
第二次取出的值为y,将y的值赋给item,将item的值输出
第三次...........
'''

#range()产生一个整数序列,也是一个可迭代对象
for b in range(10):
    print(b)

#如果在循环体中不需要使用自定义变量,可以将自定义变量写为 _
for _ in range(5):
    print('Python')

使用for_in循环,计算1-100之间的奇数和

a=0 #用于储存和
for b in range(1,101):
    if b%2:
        a+=b
print('1-100的奇数和',a)

 for_in练习题 100到999之间的水仙花数

所谓水仙花数是指一个三位数,各位数的立方和等于该数本身
举例:
153=3*3*3+5*5*5+1*1*1
'''
    输出100到999之间的水仙花数
    所谓水仙花数是指一个三位数,各位数的立方和等于该数本身
    举例:
    153=3*3*3+5*5*5+1*1*1
'''
for a in range(100,1000):
    g= a%10 #个位
    s=a//10%10 #十位
    b=a//100 #百位
    #print(b,s,g)
    #判断
    if g**3+s**3+b**3==a:
        print(a)

 流程控制语句

break

用于结束循环结构,通常与分支结构if一起使用(if条件成立,执行break,打破循环)

 break与for_in循环的使用

#从键盘录入密码,最多录入三次,如果正确就结束循环
for a in range(3):
    pwd=input('请输入密码')
    if pwd == '8888':
        print('密码正确')
        break
    else:
        print('密码不正确')

break与while循环的使用

a=0 #初始化变量
while a<3: #条件判断
    #条件执行体(循环体)
    pwd=input('请输入密码')
    if pwd =='6666':
        print('密码正确')
        break
    else:
        print('密码不正确')
    a+=1 #改变变量

 

 continue

用于结束当前循环,进入下一个循环,通常与分支结构中的if一起使用(if条件不成立,执行continue,结束当前循环进入下一个循环)

'''
    要求输出1到50之间所有5的倍数,5,10,15,20,25...
    5的倍数共同点:和5的余数为0的数都是5的倍数
    什么样的数不是5的倍数?与5的余数不为0的数都不是5的倍数
'''
'''
for a in range(1,51):
    if a%5==0:
        print(a)
'''
#使用continue
for a in range(1,51):
    if a%5!=0:
        continue #a%5!=0 条件成立,则循环,条件不成立,执行下面的print
    print(a)

 else语句

与else语句搭配使用的三种情况

 else语句和for_in搭配使用

for a in  range(3):
    pwd=input('请输入密码:')
    if pwd == '666':
        print('密码正确')
        break
    else:
        print('密码不正确')
else:
    print('三次密码均输入错误')

 else语句与while的使用

a=0 
while a<3:
    pwd=input('请输入正确密码')
    if pwd=='666':
        print('密码正确')
        break
    else:
        print('密码错误')
    a+=1 
else:
    print('输入密码超过三次')

 嵌套循环

循环结构中又嵌套了另外的完整的循环结构,其中内层循环作为外层循环的循环体执行

输出一个三行四列的矩形

#输出一个三行四列的矩形
for a in range(1,4): #行表,执行三次,一次是一行
    for b in range(1,5): #输出个数
        print('*',end='\t') #不换行输出
    print() #打印
#嵌套的外部输出的是行数,外部输出的是每行的个数

 输出一个直角三角形

#输出一个高为九行的直角三角形
for a in range(1,10):
    for b in range(1,a+1):
        print('*',end='') #换行输出
    print()

 输出一个九九乘法表

#输出一个高为九行的直角三角形
for a in range(1,10):
    for b in range(1,a+1):
        print(a,'*',b,'=',a*b,end='\t')
    print()

 二重循环中的break与continue

 二重循环中的break与continue用于控制本层循环

 break

#流程控制语句break与continue在二重循环中的使用
for a in range(5): #外层循环会执行5次
    for b in range(1,11):
        if b%2==0:
            break
        print(b)
'''
为什么输出结果全为1呢?
因为每当b执行了一次内循环后,值为2时,会退出里面的循环,进入外面的循环,所以内循环一直都只执行了一次
'''

 continue

#流程控制语句break与continue在二重循环中的使用
for a in range(5): #外层循环会执行5次
    for b in range(1,11):
        if b%2==0:
            continue
        print(b,end='\t')
    print()

'''
    1(b)%2的余数为0 判断结果为False,条件不成立,会打印b,
    2(b)%2的余数为0 判断结果为True,条件成立,会继续进行内循环不打印
    当到10时,会结束内循环,转到外循环
    依次类推,只会输出偶数,共输出5次
'''

 总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值