day5-homework

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

ply = 0.08
h = 8848.13*1000
n=0
while 1 :
    n += 1
    ply *= 2
    if ply >= h:
        break
print('需要对折', n, '次')

2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

n = int(input('请输入时间'))
a = 1 
b = 0
i = 1
while True:  #死循环
    a, b = a + b, a  #交叉赋值
    i += 1           #i = i+1
    if i == n:       #如果 i==n
        break        #结束循环
print(2*a,'只')  

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

print('<-------------->')
n = int(input('请一个正整数'))
m = 1
print(n,'=',sep='',end='')
while 1:                  #死循环
    m += 1                # m = 2
    if n%m == 0:          #如果n / m能除尽,则m是n的质因数
        print(m,sep='',end='') #
        n /= m            #将 n / 质因数 的值赋给 n 
        m = 1             # m从1开始重新循环
        if n != 1:         #如果n != 1
            print('*',sep='',end='') #打印  *
        else:          
            break             #不符合条件循环结束
print()

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

a = m * n             #变量3,把n,m的初始值赋给a,
if  m < n :           #判断 m,n的大小
    m,n = n,m         #,符合条件m,n换值
while 1:  #循环1
    m = int(input('输入正整数n:'))
    if m<=0:        #如果 m<=0
        print('-----请重新输入n------')
        continue   #结束本次循环
    else:         
        n = int(input('输入正整数m:'))
        if n<0:
            print('-----请从n重新输入------')
            continue
        else:       
            m = m%n           #算出m%n的余数
            if m ==0:         #如果余数=0
                print('最大公约数:',n)  #输出n
                break         #符合条件循环结束
            n = n%m
            if n == 0:
                print('最大公约数:',m)
                break
print('最小公倍数:',int(a / (m+n)))

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

print('=====================')
n = 1  # 变量1,控制 循环1 次数
while n < 1000:  # 循环1
    n += 1     #变量1,每次循环+1
    sum1 = 1   #计算一个数因数和的变量
    m = 1      #变量2,每次循环2结束,重新赋值为 1 ,寻找因数
    while 1:   #循环2
        m += 1 #每次循环2,循环一次, m+1
        if m == n: # 如果 条件m==n
            break  #符合条件结束循环
        elif n % m ==0:  #如果 n%m == 0,则m是n的因数,并且由于上个if语句,m永远!=n
            sum1 += m    #计算符合条件的m的和
    if sum1 == n:        #sum1(因数和) == n 就是完数
        print(sum1, end=' ')# 符合条件输出sum1
print()

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

# 1 3 5 7 8 10 12  = 31
# 4 6 9 11 = 30
# 2 = 28

# year = int(input('第6题:请输入年:'))
# mon = int(input('第6题:请输入月:'))
# day = int(input('第6题:请输入日:'))
year = 2000
mon = 12
day = 31
date = day 
for x in range(1,mon):
    if x == 1 or x == 3 or x == 5 or x == 7 or x == 8 or x == 10  :
        date += 31
    elif x == 4 or x == 6 or x == 9 or x == 11:
        date += 30
    else:
        if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
            date += 29
        else:
            date += 28  
print('第6题:',year,'年',mon,'月',day,'日是',year,'的第',date,'天')

7. 某个公司采用公用电话传递数据,数据是四位的整数,在传递过程中是加密的,加密规则如下:每位数字都加上5,然后用和除以10的余数代替该数字,再将第一位和第四位交换,第二位和第三位交换。求输入的四位整数加密后的值

n1 = 9
n2 = 8
n3 = 7
n4 = 6
# n1 = int(input('第7题:请输入数据第一位(0-9):'))
# n2 = int(input('第7题:请输入数据第二位(0-9):'))
# n3 = int(input('第7题:请输入数据第三位(0-9):'))
# n4 = int(input('第7题:请输入数据第四位(0-9):'))
print('第7题:',n1,n2,n3,n4,'加密后的数是:',end = '')
print((n4 + 5) % 10,(n3 + 5) % 10,(n2 + 5) % 10,(n1 + 5) % 10)
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)? 2. 古典问题:有...
    ham731阅读 618评论 0赞 2
  • 基础 读程序,总结程序的功能: 1. numbers=1 for i in range(0,20): number...
    Voyaserfuerte阅读 266评论 0赞 0
  • 1.程序功能:得出2的20次方2.程序功能:统计100以内的数是3或者7倍数又不是21倍数的数的个数 ======...
    芽菜包66阅读 122评论 0赞 0
  • Vocabulary: 1.explicitly:very clear and complete, leaving...
    花落南山_阅读 227评论 0赞 0
  • 機緣巧合的情況下 , 看到《漢樂府》的其中一篇 : 〝 上邪 !我欲與君相知 ,長命無絕衰 ! 山無陵 ,江水為竭...
    李傑生阅读 370评论 0赞 0

友情链接更多精彩内容