day5作业

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


a = 0.08   #原来的厚度
c = 0  #循环次数
while a < (8848.13*1000):  #a小于循环就继续循环,直到大于珠穆朗玛峰的高度
    if a < (8848.13*1000):   #如果a 小于这个高度就继续x2
        a*=2  #每循环一次厚度就x2倍
    c += 1  #循环一次就加一次 次数
print(c)

2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,

小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

2,4 6

m = 6   #自己输入第几个月
a = 0  #假如第一个月0只  第2个月  2只  第三个月4只
b = 2  #  原来兔子2只,从2
z = 0   #先建一个变量来保存   每个月总数
s = 1  #原来一月份还是两只
for _ in range(2, m+1):#循环到多少月份m 输入多少就是多少
   # 根据前两个数的值,计算出当前值
    z = a + b  #z 是总数   从2开始循环 就是从2开始,循环多少次就是前面2个月相加等于现在
    a = b    #把 b 的 2赋值给a  
    b = z    # 把当前的总数赋值给前一个月b
    s = s+1    #每个循环的月份   从1开始  每次循环加1
print(s,'月份',z,'只')

3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。

n =  int(input('这输入:'))

while n%2==1:
    n = int(input('这个数字没有质因数,请重新输入:'))
while n == 2:
    n = int(input('这个数字没有质因数,请重新输入:'))
while n == 3:
    n = int(input('这个数字没有质因数,请重新输入:'))
print('在这',n,'=',end='') #要先打印出这个数  后面会变
for i in range(2,n):   #循环从2开始到比这个数小个的数
    while n % i == 0:   #如果取余数==0 就说明i是他的质因数
        n = n / i     #就把n / i  再取除他取余数 然后打印出来 
        print(i,end='*')        
print()
print(31%2)

4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。

5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数

6.输入某年某月某日,判断这一天是这一年的第几天? 程序分析:以3月5日为例,应该先把前两个月的加起来,

然后再加上5天即本年的第几天,特殊情况,闰年且输入月份大于3时需考虑多加一天。

7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:

每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值


mm = 9876  #要传递的要加密的4位数数据
d = ((mm%10)+5)%10#  取个位的数 然后加5  再取除10的余数
c = ((mm//10%10)+5)%10#  取十位的数 然后加5  再取除10的余数
b = ((mm//100%10)+5)%10#  取百位的数 然后加5  再取除10的余数
a = ((mm//1000%10)+5)%10#  取千位的数 然后加5  再取除10的余数
a,d = d,a #第一位数 和第四位数换位置,a,d 互换赋于值,相当于换位置
b,c = c,b  #第二位数 和第三位数换位置,b,c 互换赋于值,相当于换位置
print('加密后的结果:',a,b,c,d) # 完成加密 打印

你可能感兴趣的:(day5作业)