python折叠次数计算珠穆朗玛峰_2019-07-26python作业2

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-1 12:21   758   0

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

n = 0

while True:

thk = 0.08 * 2 ** n

if thk >= 8848130:

break

n += 1

print(n)

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

pre_1 = 1

pre_2 = 1

n = int(input('请输入月份(n>2):'))

for _ in range(n-2):

pre_n = pre_1 + pre_2

pre_1 = pre_2

pre_2 = pre_n

print(pre_n)

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

num = int(input('请输入一个正整数;'))

a = []

for x in range(2, num):

while num % x == 0:

a.append(x)

num /= x

len1 = len(a)

for y in range(len1):

p_f = a[y]

print('%d * ' % p_f, end='')

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

m = int(input('请输入两个正整数: '))

n = int(input('请输入两个正整数: '))

if m > n:

m, n = n, m

max = n

for x in range(m, 0, -1):

if m % x == 0 == n % x == 0:

print('最大公约数是%d' % x)

break

while True:

if max % m == max % n ==0:

break

max += 1

print('最小公倍数是%d' % max)

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

for num in range(1, 1000):

sum1 = 0

for num1 in range(1, num):

if num % num1 == 0:

sum1 += num1

if num == sum1:

print(num, end=' ')

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

year = int(input('输入年:'))

month = int(input('输入月:'))

day = int(input('输入日:'))

num = [1, -1, 0, 0, 1, 1, 2, 3, 3, 4, 4, 5]

days = day + num[month - 2] + (month - 1) * 30

if (not year % 4 and year % 100) or not year % 400:

print('这是%d年的%d天' % (year, days + 1))

else:

print('这是%d年的%d天' % (year, days))

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

phon = 1234

new_p = 0

for i in range(4, 0, -1):

new_p += (phon % 10 + 5) % 10 * 10**(i-1)

phon //= 10

print('加密后:', new_p)

8. 获取第n个丑数。 什么是丑数: 因子只包含2,3,5的数

6 =1* 2*3 -> 丑数

2 = 1*2 -> 丑数

7 = 1*7 -> 不是丑数

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

num = 1

m = 0

nums = []

n = int(input('获取第几个丑数:'))

while len(nums) < n:

m = num

while not m & 1:

m //= 2

else:

while not m % 5:

m //= 5

else:

while not m % 3:

m //= 3

if m == 1:

nums.append(num)

num += 1

else:

print('第%d个丑数是:' % n, nums[n-1])

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP