Day5 循环练习题

Day5 循环作业题

  1. 使用for循环计算50~150中所有能被3整除但是不能被5整除的数的和

    s = 0
    for i in range(51,151,3):
        if i % 5 != 0:
            s += i
    print(s)
    
  2. 统计100以内个位数是2并且能够被3整除的数的个数

    s = 0
    for i in range(100):
        if i % 3 == 0:
            s += 1
    print(s)
    

3.写程序计算 n 的阶乘 n! 的结果

m = 1
n = float(input('请输入一个数字:'))
while n > 1:
    m = m * n
    n -= 1
print(m)

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

注意: 这儿不能使用字符串,只能用循环 (会用到while循环)

n = int(input('请输入一个正整数:'))
s = 1
while True:
    if n / 10 >= 1:
        s = s + 1
    n = n / 10
    if n / 10 < 1:
        break
print(s)

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

注意:会用break

n = int(input('请输入一个整数:'))
for i in range(2, n):
    if n % i == 0:
        print(n, '不是素数')
        break
else:
    print(n, '是素数')

6.判断101-200之间有多少个素数,并输出所有素数。

for i in range(101,201):
    for j in range(2,i//2):
        if i % j == 0:
            break
    else:
        print(i,end=' ')
        n += 1
print(f'共有{n}个素数')
  1. 有⼀分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的第20个分数

    m = 2
    n = 1
    for i in range(19):
        m, n = m + n, m
    print('第20个分数是:', m , '/', n)
    
  2. 求1+2!+3!+…+20!的和

    t = 1
    for i in range(20, 0, -1):
        if i >= 1:
            s = i * (i-1)
        t = t + s
    print(t)
    
  3. 控制台输出三角形

       a.根据n的值的不同,输出相应的形状
       n = 5时             n = 4
       *****               ****
       ****                ***
       ***                 **
       **                  *
       *
       
       b.根据n的值的不同,输出相应的形状(n为奇数)
       n = 5               n = 7
         *                    *
        ***                  ***
       *****                *****
                           *******
       
       c. 根据n的值的不同,输出相应的形状
       n = 4
          1
         121
        12321
       1234321
        n = 5
           1
          121
         12321
        1234321
       123454321
       
    
    # a .
    n = int(input('请输入一个正整数:'))
    for i in range(n, 0 ,-1):
        print('*' * i)
    # b.
    for i in range(1,n+1,2):
        k = (7-i)//2
        star = i
        for x in range(k):
            print(' ',end='')
        for z in range(star):
            print('*',end='')
        print()
    # b.
    for i in range(n+1):
        for n in range(n):
            print(' ',end='')
        for m in range(1,i+1):
            print(m,end='')
        for t in range(i-1,0,-1):
            print(t,end='')
        print()
    
  4. 输入一个整数,计算它各位上数字的和。(注意:输入的整数可以是任意位)

    num = 276721
    sum1 = 0
    while True:
        sum1 += num % 10
        num //= 10
        if num == 0:
            break
    print('和为:', sum1)
    
  5. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

    n = 90
    num = 2
    while True:
        if n % num == 0:
            n //= num
            if n == 1:
                print(num, end=' ')
            else:
                print(num, '*', end=' ')
        else:
            num += 1
        if n == 1:
            break
    print()
    
  6. 输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。

    n = 1
    while n <= 9:
        m = 1
        while m <= n:
            print(m, '*', n, '=', m * n, end='\t')
            m += 1
        print()
        n += 1
    
  7. 本金10000元存入银行,年利率是千分之三。每过1年,将本金和利息相加作为新的本金。计算5年后,获得的本金是多少。

    year = 5
    capital = 10000
    current_year = 1
    while True:
        capital *= 1+0.003
        current_year += 1
        if current_year > 5:
            break
    print(capital)
    
  8. 求两个数的最大公约数和最小公倍数。(提示:公约数一定小于等于两数中的小的那个数,且能同时被两个数整除;公倍数一定大于等于两数中的大数,且是大数的倍数又能被两数中的小数整除)

max_common_divisor = num1
while True:
    if num1 % max_common_divisor == 0 and num2 % max_common_divisor == 0:
        break
    else:
        max_common_divisor -= 1
print('最大公约数:', max_common_divisor)
min_common_multiple = num2
multiple = 1    # 倍数
while True:
    if min_common_multiple % num1 == 0:
        break
    multiple += 1
    min_common_multiple = num2 * multiple
print('最小公倍数:', min_common_multiple)

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿酱不秃

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值