day6分支和循环作业

基础题

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

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

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

    a = int(input('请输入一个整数:'))
    b = int(input('请输入一个整数:'))
    # 方法1
    if (a - b) % 2 != 0:
        print(a - b)
    else:
        print(f'{a}-{b}的结果不是奇数')
        
    # 方法2
    if (a-b) % 2 == 1:
        print(a - b)
    else:
        print('a-b的结果不是奇数')
    
  4. 使用for循环输出 0~100内所有3的倍数。

    # 方法1
    for x in range(101):
        if x % 3 == 0:
            print(x)
    # 方法2       
     for x in range(0, 100, 3):
        print(x)
     
    # 使用while循环
    # 方法1:
    y = 0
    while y % 3 == 0 and y < 100:
        print(y)
        y += 3
        
    # 方法2:
    num = 0
    while True:
        print(num)
        num += 3
        if num > 99:
            break
    
  5. 使用for循环输出100~200内个位数或者十位数能被3整除的数。

    for x in range(100, 200):
        if (x % 10) % 3 == 0 or (x % 100 // 10) % 3 == 0:
            print(x)
    
  6. 使用for循环统计100~200中十位数是5的数的个数

    # 方法1
    count = 0
    for x in range(100, 200):
        if x % 100 // 10 == 5:
            count += 1
    print(count)
    
    
    # 方法2
    count = 0
    for x in range(150, 160):
        count += 1
    print(count)
    # 10
    
  7. 使用for循环打印50~150中所有能被3整除但是不能被5整除的数

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

    sum1 = 0
    for x in range(50, 150):
        if x % 3 == 0 and x % 5 != 0:
            sum1 += x
    print(sum1)
    
    # 2682
    
  9. 统计100以内个位数是2并且能够被3整除的数的个数。

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

进阶题

  1. 输入任意一个正整数,求他是几位数?

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

    num = int(input('请输入一个正整数:'))
    # 方法1:
    x = 1
    while num // (10 ** x) != 0:
        x += 1
    print(x, '位数')
    
    # 方法2:
    count = 0
    while True:
        num //= 10
        count += 1
        if num == 0:
            break
    print(count)
    
  2. 打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字⽴方和等于该数本身。例如:153是

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

    for x in range(100,1000):
        if (x % 10) ** 3 + (x % 100 // 10) ** 3 + (x // 100) ** 3 == x:
            print(x)
    # 153
    # 370
    # 371
    # 407
    
  3. 判断指定的数是否是素数(素数就是质数,即除了1和它本身以外不能被其他的数整除的数)

    x = int(input('请输入一个数:'))
    # 方法1:
    count = 0
    for i in range(2, x):
        if x % i == 0:
            count += 1
            print(f'{x}不是素数')
            break
    if count == 0:
        print(f'{x}是素数')
    
    
    # 方法2:
    for i in range(2, x):
        if x % i == 0:
            print(f'{x}不是素数')
            break
    else:
        # 循环结束的时候如果没有遇到break才执行
        print(f'{x}是素数')
    
  4. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    for i in range(1, 10):
        for j in range(1, i + 1):
            print(f'{i}×{j} = {i * j}', end='  ')
        print('\n')
        
    # 1×1 = 1 
    
    # 2×1 = 2 2×2 = 4 
    
    # 3×1 = 3 3×2 = 6 3×3 = 9 
    
    # 4×1 = 4 4×2 = 8 4×3 = 12 4×4 = 16 
    
    # 5×1 = 5 5×2 = 10 5×3 = 15 5×4 = 20 5×5 = 25 
    
    # 6×1 = 6 6×2 = 12 6×3 = 18 6×4 = 24 6×5 = 30 6×6 = 36 
    
    # 7×1 = 7 7×2 = 14 7×3 = 21 7×4 = 28 7×5 = 35 7×6 = 42 7×7 = 49 
    
    # 8×1 = 8 8×2 = 16 8×3 = 24 8×4 = 32 8×5 = 40 8×6 = 48 8×7 = 56 8×8 = 64 
    
    # 9×1 = 9 9×2 = 18 9×3 = 27 9×4 = 36 9×5 = 45 9×6 = 54 9×7 = 63 9×8 = 72 9×9 = 81 
    
    
  5. 这是经典的"百马百担"问题,有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?(可以直接使用穷举法)

    for x in range(1, 34):
        for y in range(1, 51):
            for z in range(1, 100):
                if x + y + z == 100 and 3 * x + 2 * y + z // 2 == 100:
                    print(f'大马:{x}, 中马:{y}, 小马:{z}')
    
    for x in range(1, 34):
        for y in range(1, 51):
            z = 100 - x - y
            if 3 * x + 2 * y + z // 2 == 100:
                print(f'大马:{x}, 中马:{y}, 小马:{z}')
    
    # 1 32 67
    # 2 30 68
    # 4 27 69
    # 5 25 70
    # 7 22 71
    # 8 20 72
    # 10 17 73
    # 11 15 74
    # 13 12 75
    # 14 10 76
    # 16 7 77
    # 17 5 78
    # 19 2 79
    # 20 0 80
    
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值