while和for循环练习

1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?

paper_thickness = 0.08 / 1000
mountain = 8848.13
count = 0
while paper_thickness <= mountain:
    paper_thickness *= 2
    count += 1
print(count)
  1. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
  n = eval(input("输入第几个月:"))
  sum1 = 0
  num = 1
  for _ in range(n):
      sum2 = sum1 + num
      num = sum1
      sum1 = sum2
  print("总的对数有:", sum2)
  1. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
    number = int(input("请输入数:"))
    num = 2
    list1 = []
    str1 = ''
    print("90=", end='')
    while num <= number:
        if number % num == 0:
            number = number / num
            list1.append(str(num))
    
        else:
            num += 1
    str1 = '*'.join(list1)
    print(str1)
  1. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
    m = int(input("请输入第一个整数m:"))
    n = int(input("请输入第二个整数n:"))
    remainder = 0
    x = m * n
    while n != 0:
        remainder = m % n
        m = n
        n = remainder
    print("最大公约数是:", m)
    print("最小公倍数是:", int(x/m))
  1. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
    for x in range(2, 1000):
        sum1 = 0
        for y in range(1, x):
            if x % y == 0:
                sum1 += y
        if sum1 == x:
            print(x)

6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

    ear = int(input("年:"))
    month1 = int(input("月:"))
    day = int(input("日:"))
    list1 = [1, 3, 5, 7, 8, 10, 12]
    list2 = [4, 6, 9, 11]
    list3 = [2]
    add_day = 0
    month = 1
    while month < month1:
        if month in list1:
            day1 = 31
        elif month in list2:
            day1 = 30
        elif month in list3 and (year % 4 == 0 and year % 100 != 0) or (year % 400 == 0):
            day1 = 29
        else:
            day1 = 28
        day += day1
        month += 1
    print(day)
  1. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值
    num = int(input("请输入四位数字:"))
    list1 = []
    x = 0
    first_num = num // 1000 + 5
    second_num = num // 100 % 10 + 5
    three_num = num // 10 % 10 + 5
    four_num = num % 10 + 5
    x = first_num
    first_num = four_num
    four_num = x
    x = second_num
    second_num = three_num
    three_num = x
    list1.append(first_num)
    list1.append(second_num)
    list1.append(three_num)
    list1.append(four_num)
    a = [str(i) for i in list1]
    b = "".join(a)
    print("加密后的值为:", b)
  1. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

    6 =1* 2*3 -> 丑数

    2 = 1*2 -> 丑数

    7 = 1*7 -> 不是丑数

    1, 2, 3, 4, 5, 6, 8,9,10, 12 ….

    n = int(input("获取第几个丑数:"))
    list1 = [1]
    for x in range(1, n):
        for i in (2, 3, 5):
            if x*i not in list1:
                list1.append(x*i)
    list1 = sorted(list1)
    print("第n个丑数是:%d" % list1[n-1])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值