1.一张纸的厚度大约是0.08mm,对折多少次之后能达到珠穆朗玛峰的高度(8848.13米)?
conut = 1
while True:
num =(0.08 /1000) * (2**conut)
if num >= 8848.13:
print('第1题: 需要对折的次数:',conut)
break
conut += 1
2. 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
t1 = 2 #一个月内的兔子
t2 = 0 #二个月内的兔子
t3 = 0 #三个月内的兔子
t4 = 0 #可以下崽的兔子
print('第2题: ',end='')
for x in range(1,13):
t4,t3,t2,t1 = t4+t3,t2,t1,t4
num = t1+t2+t3+t4
print(x,'月', num ,'只 ',sep = '',end='')
print()
3. 将一个正整数分解质因数。例如:输入90,打印出90=2x3x3x5。
num = 90
num = int(input('将一个正整数分解质因数,请输入一个大于1的数:'))
print('第3题: ',num,'=',sep = '',end='')
while num != 0 :
for x in range(2,num+1):
if num / x == num // x:
print(x,sep='',end='')
break
num //= x
if num == 1:
break
print('x',end='')
print()
4. 输入两个正整数m和n,求其最大公约数和最小公倍数。 程序分析:利用辗除法。
#两个数的乘积等于这两个数的最大公约数与最小公倍数的乘积。
a = 6
b = 15
# a = int(input('第4题:输入1个正整数m:'))
# b = int(input('第4题:输入1个正整数n:'))
c = a * b
print('第4题:',a,'和',b,'的最大公约数是:',end ='')
while True:
if a < b :
a,b = b,a
if a % b == 0:
print(b,'最小公倍数是:',c // b)
break
a,b = b , a % b
5. 一个数如果恰好等于它的因子之和,这个数就称为 "完数 "。例如6=1+2+3. 编程 找出1000以内的所有完数
print('第5题: 1000以内的所有完数:',end='')
for num in range(2,1000):
sum1 = 0
for x in range(1,num):
if num / x == num // x:
sum1 += x
if num == sum1:
print(num,end=' ')
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)
s = '0123' #input('第7题: 一个4位数:')
n1,n2,n3,n4 = int( s[0]), int( s[1]), int( s[2]),int( s[3])
n1,n2,n3,n4 = (n4 + 5) % 10 , (n3 + 5) % 10 , (n2 + 5) % 10 , (n1 + 5) % 10
print('第7题:',s,'加密后的数是:',str(n1)+str(n2)+str(n3)+str(n4))
运行结果
第1题: 需要对折的次数: 27
第2题: 1月2只 2月2只 3月2只 4月4只 5月6只 6月8只 7月10只 8月14只 9月20只 10月28
只 11月38只 12月52只
第3题: 90=2x3x3x5
第4题: 6 和 15 的最大公约数是:3 最小公倍数是: 30
第5题: 1000以内的所有完数:6 28 496
第6题: 2000 年 12 月 31 日是 2000 的第 366 天
第7题: 9 8 7 6 加密后的数是:1 2 3 4
第7题: 0123 加密后的数是: 8765