循环

总结

1、if

1)if 多分支

根据不同的条件做不一样的事情,但是要求条件之间存在:其中某一个条件成立了,另外的其他条件一定不会成立

语法:
if 条件语句1:
    代码段1
elif 条件语句2:
    代码段2
elif 条件语句3:
    代码段3
...
else:
    代码段N

若条件之间没有关系,可用多个if

# 进校标准:分数高于500进普通班级,等级是A级进特长班
score = 492
grade = 'A'
if score > 500:
    print('进普通班级')
if grade == 'A':
    print('进特长班')
2) if 嵌套
# 判断一个数是否是偶数,如果是打印'偶数'否则打印'奇数',同时判断这个数是否是4的倍数,如果是打印'4的倍数'
num = 20
if num % 2 == 0:
    print('偶数')
    if num % 4 == 0:
        print('4的倍数')
else:
    print('奇数')

2、循环结构

代码只写一遍,但是可以让代码重复执行很多次

1)for循环
语法:
for 变量 in 序列:
    循环体
  • 说明:

    • for、in - 关键字;固定写法
    • 变量 - 变量名
    • 序列 - 容器型数据类型的数据,例如:字符串、列表、字典、元组、集合、迭代器、生成器、range等
    • 和for保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码
  • 执行过程:让变量去序列中取值,一个一个地取,取完为止,每取一个值就执行一次循环体。(序列中元素的个数决定了循环的次数)

    for x in '85':
        print('yibo', x)
    
2)range函数

产生一个指定范围的数字序列

range(N) - 产生[0,N)的数字序列

for x in range(5):
    print('8',x)
    print('7')

range(M,N) - 产生[M,N)的数字序列,M < N

for x in range(-8, 5):
    print('yibo', x)

range(M,N,step) - 产生[M,N)的数字序列,每次数字增加step step不一定是1或正数

for x in range(-8, 5,3):
    print('yibo', x)

for x in range(85, 7,-50):
    print('yibo', x)

3、while循环

1)while 用法
语法:
while 条件语句:
    循环体
  • 说明
    • while - 关键字;固定写法
    • 条件语句 - 任何有结果的表达式
    • 循环体 - 和while保持一个缩进的一条或者多条语句;循环体就是需要重复执行的代码
  • 执行过程:
    不断地判断条件语句是否为True,为True就执行循环体,执行完再判断条件语句是否为True,为True就执行循环体,…
    以此类推,直到判断条件语句的时候结果为False,整个循环就结束
# 打印1~100
num = 1
while  num <= 100:
    print(num)
    num += 1

num = 0
while num < 10:
    print('hello')
    num += 1
2)for循环和while循环的选择

当循环次数不确定的时候使用while循环,否则使用for循环

# 程序开始的时候随机产生一个100以内的数,用户通过输入的方式来猜数字,如果猜对了游戏结束,如果猜错了给出提示信息:大了,小了
from random import randint
num = randint(0, 99)    # 产生0到99的随机整数并保存到变量num中

num = randint(0, 99)
i_num = int(input('请输入数字(0~99):'))
while i_num != num:
    if i_num < num:
        print('小了,再大点:')
    else:
        print('大了,再小点:')
    i_num = int(input('请输入数字(0~99):'))
print('恭喜你!猜对了')

4、关键字

1)continue和break

continue和break只能在循环体中使用

continue: 结束一次循环(当执行循环体的时候遇到continue,当次循环结束,直接进入下次循环的判断)

break:结束整个循环(当执行循环体的时候遇到break,整个循环直接结束)

for x in range(5):
    print('yibo')
    continue
    print('bobo')

for x in range(5):
    if x % 2:
        continue
    print(x)

for x in range(5):
    print('yibo')
    break
    print('bobo')

使用while循环的套路

while True:
    每次循环要做的事情
    if循环结束的条件:
        break
2)else

python中完整的for循环和while循环后面都游else结构,else结构的存在不影响原循环的执行

当循环是因为遇到break而结束的,那么循环后面else里面的代码不会执行
循环结束的时候不是因为遇到break,那么else后面的代码段会执行

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

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

作业

基础题

  1. 根据输入的成绩的范围打印及格 或者不及格

    grade = 85
    if grade >= 60:
        print('及格')
    else:
        print('不及格')
    
  2. 根据输入的年纪范围打印成年或者未成年,如果年龄不在正常范围内(0~150)打印这不是人!

    age = int(input('请输入年龄:'))
    if 0 <= age < 18:
        print('未成年')
    elif 18 <= age <= 150:
        print('成年')
    else:
        print('这不是人')
    
  3. 输入两个整数a和b,若a-b的结果为奇数,则输出该结果,否则输出提示信息a-b的结果不是奇数

    a = 85
    b = 7
    result = (a - b)
    if result % 2:
        print(result)
    else:
        print('a-b的结果不是奇数')
    
  4. 使用for和while循环输出 0~100内所有3的倍数。

    for num in range(3, 100, 3):
        print(num)
    
    num = 0
    while  True:
        print(num)
        num += 3
        if num >= 100
            break
    
  5. 使用for和while循环输出100~200内个位数或者十位数能被3整除的数。

    for x in range(100, 200):
        if (x % 10) % 3 == 0 or (x // 10 % 10) %3 == 0:
            print(x)
    
    num = 100
    while True:
        if (num % 10) % 3 == 0 or (num // 10 % 10) % 3 == 0:
            print(num)
        num += 1
        if num >= 200:
            break
    

进阶题

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

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

    count = 0
    for x in range(2, 100,10):
        if x % 3 == 0:
            count += 1
            print(x)
    print('个数',count)
    
  3. 输入任意一个正整数,求他是几位数。

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

    num = 9785
    count = 0
    while True:
        num //= 10
        count += 1
        if num == 0:
            break
    print('位数:',count)
    
  4. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

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

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

挑战题

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

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

    p1 = 1
    p2 = 1
    n = 8
    if n > 2:
        for x in range(n-3):
            p1, p2 = p2, p1+p2
        print(p1+p2)
    else:
        print(1)
    
  3. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

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

    for big in range(1,100//3+1):
        for middle in range(1,100//2+1):
            for samll in range(2, 101, 2):
                if big + middle + samll == 100 and big*3 + middle*2 + samll/2 == 100:
                    print('大马:', big, '中马:', middle, '小马:', samll)
    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值