day4_循环结构

循环结构

循环

循环:让代码重复执行(代码写一遍,可以运行多次)。

for 循环

1)语法:
for 变量 in 序列:
循环体
2)说明:
for、in - 关键字、固定写法
变量 - 写一个变量,可以是定义过的,也可以是不曾定义的
序列 - python中的容器型数据类型对应的数据
常见序列:字符串、列表、元组、字典、集合、迭代器、生成器、range等。
数据值不是序列
: - 缩进
循环体 - 和for保持一个缩进的一条或者多条语句(需要重复执行的代码)
3)执行过程:
让变量在序列中一个一个地取值直至取完,每取一个值执行一个循环体。for循环的执行次数与序列中的元素个数有关。

for x in 'abc':
x=a,print(x,'hello')
    print(x,'hello')			#  字符串里有3个符号 -> 循环3次
'''
x=a,print(x,'hello')
x=b,print(x,'hello')
x=c,print(x,'hello')
'''

range函数

range函数:产生指定范围的数字序列

语法:

​ 1) range(N) - 产生[0,N)的数字序列,其中步长是1

for x in range(10):
    print(x)

​ 2) range(M,N) - 产生[M,N)的数字序列,其中步长是1

for x in range(10,20):
    print(x)
    
for x in range(-10,10):
    print(x)

​ 3) range(M,N,step) - 产生[M,N)的数字序列,其中步长是step的指定值

for x in range(10,20,2):
    print(x)

for x in range(20,0,-2):
    print(x)

练习1: 打印100以内所有的偶数

# 法一:
for x in range(100):
    if x%2==0:
        print(x)
# 法二
for x in range(0,100,2):
    print(x)

练习2: 打印100~200中所有个位数是3的数

# 法一:
for x in range(100,200):
    if x%10==3:
        print(x)
# 法二
for x in range(103,200,10):
    print(x)

练习3: 打印所有的水仙花数

for x in range(100,1000):
    if (x//100)**3+(x%100//10)**3+(x%10)**3==x:
        print(x)

两个套路

统计套路

count=0 # 利用变量count累计次数

练习1:统计100以内偶数的个数

count=0
for x in range(100):
    if x%2==0:
        count+=1
print(count)

练习2:统计100以内能被3整除的偶数的个数

# 法一
count=0
for x in range(0,100):
    if (x%3==0) and (x%2==0):       # x%6==0
        count+=1
print(count)
# 法二
count=0
for x in range(0,100,3):
    if x%2==0:
        count+=1
print(count)

求和套路

sum=0 # 利用变量sum累计求和

练习1:计算1+2+3····+100的和

sum=0
for x in range(1,101):
    sum+=x
print('1+2+3····+100的和:',sum)

练习2:计算所有水仙花的和

sum=0
for x in range(100,1000):
    if (x//100)**3+(x%100//10)**3+(x%10)**3==x:
        sum+=x
print(sum)

while 循环

  1. 语法:
    while 条件语句:
    循环体
  2. 说明:
    while - 关键字固定写法
    条件语句 - 任何有结果的表达式;(只有赋值语句不行)
    : - 固定写法
    循环体 - 和while保持一个缩进的一条或者多条语句;需要重复执行的代码
  3. 执行过程:
    先判断条件语句是否为True,如果为True就执行循环体,执行完循环体再判断条件是否为True
    如果为True就再执行循环体···一次类推,当条件结果为False循环直接结束。

练习:使用while循环控制程序打印10个‘hello’

num =10
while num>0:
    num-=1
    print('hello')

while 循环和for 循环的选择

for循环:循环次数确定的时候使用

while循环:循环次数不确定的时候使用(程序员在写代码的时候没有办法通过任何方式来确定循环次数)

练习:提示用户不断输入内容,直到输入的数据是0为止

value=input('请输入:')
while value!='0':
    value=(input('请输入:'))

循环关键字

continue和break

continue和break只能出现在循环体中
1)continue - 结束一次循环/结束当次循环
如果在执行循环体的时候遇到了continue,那么当次循环结束,直接进入下一次循环

for x in range(4):
    print('======')
    continue
    print('------')
    print('++++++')
'''
x=0: ======
x=1: ======
x=2: ======
x=3: ======
'''
for x in range(10):
    if x==5 or x==8:
        continue
    print(x)
'''
0
1
2
3
4
6
7
9
'''
  1. break - 结束整个循环
    如果在执行循环体的时候遇到了break,整个循环直接结束
for x in range(4):
    print('======')
    break
    print('------')
    print('++++++')
'''
======
'''
for x in range(10):
    print(x)
    if x==3:
        break
'''
0
1
2
3
'''
  1. 含有break的while循环
''' 
while True:
    需要重复执行的操作
    if 循环结束的条件:
        break 
'''
while True:
    value=input('请输入:')
    if value=='0':
        break						# 无法估计循环次数,直至输入的字符串是0结束循环

else

完整for循环:
for 变量 in 序列:
循环体
else:
代码段

完整while循环
while 条件语句:
循环体
else:
代码段

else结构的存在不影响原来循环的执行,当循环是 自然死亡else后面的代码段会执行
如果循环是因为遇到break而结束的else后面的代码段不执行

for x in range(4):
    print(x,'======')
else:
    print('else')
'''
0 ======
1 ======
2 ======
3 ======
else
'''

day 4_循环关键字习题

基础题

  1. 使用for和while循环输出 0~100内所有3的倍数。

    for x in range(0,100):
        if x%3==0:
            print(x)
     
    x=0
    while x<100:
        if x%3==0:
            print(x)
        x+=1
    
  2. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    for x in range(100,200):
        if (x%100//10)%3==0 or (x%10)%3==0:
            print(x)
     
    x=100
    while x<200:
        if (x%100//10)%3==0 or (x%10)%3==0:
            print(x)
         x+=1
    
  3. 统计100~200中十位数是5的数的个数

    count=0
    for x in range(100,200):
        if (x%100//10)==5:
            count+=1
    print(count)
    
  4. 打印50~150中所有能被3整除但是不能被5整除的数

    for x in range(50,150):
        if x%3==0 and x%5!=0:
            print(x)
    
  5. 计算50~150中所有能被3整除但是不能被5整除的数的和

    sum=0
    for x in range(50,150):
        if x%3==0 and x%5!=0:
            sum+=1
    print(sum)
    

进阶题

  1. 使用循环计算1*2*3*4*...*10的结果。

    mul=1
    for x in range(1,11):
        mul*=x
    print('1*2*3*4*...*10的结果:',mul)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数。

    count=0
    for x in range(100):
        if x%10==2 and x%3==0:
            count+=1
    print('100以内个位数是2并且能够被3整除的数的个数:',cunt)
    
  3. 输入任意一个正整数,求他是几位数?

    i=int(input('请输入任意正整数:'))
    count=0
    while True:
        if i//(10**count):
            count+=1
        else:
            break
    print(count)
    

    注意: 这儿不能使用字符串,只能用循环

  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

    ⼀个⽔仙花数,因为 1³ + 5³ + 3³ 等于 153。

    for x in range(100,1000):
        if (x//100)**3+(x%100//10)**3+(x%10)**3==x:
            pritn(x)
    

挑战题

  1. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    i=int(input('请输入一个正整数:'))
    for x in range(2,i):
        if i%x==0 and i!=x:
            print(i,'不是素数')
            break
    else:
        print(i,'是素数')
    
  2. 求斐波那契数列列中第n个数的值:1,1,2,3,5,8,13,21,34… (这儿的n可以是任意正整数,可以通过输入来确定)

    n=int(input('请输入n:'))
    num_1=1
    num_2=1
    for x in range(3,n+1):
        num_x=num_1+num_2
        num_1=num_2
        num_2=num_x
    print(num_2)
    
  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for j in range(1,10):
        for i in range(1,j+1):
            print(i,'×',j,'=',i*j,end=' ')
        print('')
    
  4. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

horse=100
num=100
for big in range(100):
    for middle in range(100):
        for small in range(100):
            if num==big*3+middle*2+small*0.5 and horse==big+middle+small and small%2==0:
                print(big,middle,small)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值