1.一張紙的厚度大約是0.08mm,對折多少次之后能達到珠穆朗瑪峰的高度(8848.13米)?
thickness = 8 * 10 ** -5
num = 0
while True:
thickness *= 2
num += 1
if thickness >= 8848.13:
break
print(num)
- 古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數(shù)為多少?
n = int(input('n的數(shù)值是:'))
num1 = 1
num2 = 1
num3 = 0
while True:
x = num1 + num2
num1 = num2
num2 = x
num3 += 1
if num3 == n - 2:
break
print('值:', x)
- 將一個正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2x3x3x5。
num = int(input('請輸入正整數(shù):'))
print(num, '=', end=' ')
i = 2
list1 = []
while True:
if num % i == 0:
num //= i
list1.append(i)
else:
if i <= num:
i += 1
else:
break
for index in range(len(list1)):
if index != len(list1) - 1:
print(list1[index], end='*')
else:
print(list1[index])
- 輸入兩個正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 程序分析:利用輾除法。
m = int(input('m:'))
n = int(input('n:'))
list1 = []
i = 2
max_num = 1
min_num = 1
while True:
if m % i == 0 and n % i == 0:
m //= i
n //= i
list1.append(i)
else:
if i <= n and i <= m:
i += 1
else:
break
for i in list1:
max_num *= i
min_num *= i
print('最大公約數(shù)', max_num)
print('最小公倍數(shù)', min_num * m * n)
- 一個數(shù)如果恰好等于它的因子之和,這個數(shù)就稱為 "完數(shù) "。例如6=1+2+3. 編程 找出1000以內(nèi)的所有完數(shù)
num = 1
list1 = []
list2 = []
while num < 1000:
i = 1
while True:
if num % i == 0 and i != num:
list1.append(i)
if i >= num:
break
i += 1
if num == sum(list1):
list2.append(num)
del list1
list1 = []
else:
del list1
list1 = []
num += 1
print(list2)
6.輸入某年某月某日,判斷這一天是這一年的第幾天? 程序分析:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
datetime_y = int(input('年:'))
datetime_m = int(input('月:'))
datetime_d = int(input('日:'))
i = 1
sum1 = 0
while i < datetime_m:
if 1 == datetime_m:
sum1 += 0
elif 1 < datetime_m < 8:
if datetime_m - i & 1:
sum1 += 31
elif datetime_m - i == 2 and ((datetime_y % 100 == 0 and datetime_y % 400 == 0) or (datetime_y % 100 != 0 and datetime_y % 4 == 0)):
sum1 += 29
elif datetime_m - i == 2 and ((datetime_y % 100 == 0 and datetime_y % 400 == 0) or (datetime_y % 100 != 0 and datetime_y % 4 == 0)):
sum1 += 28
else:
sum1 += 30
else:
if not datetime_m - i & 1:
sum1 += 31
else:
sum1 = 30
i += 1
print(datetime_d + sum1)
- 某個公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。求輸入的四位整數(shù)加密后的值
num = int(input('四位數(shù)字:'))
num1 = num // 1000
num2 = num // 100 % 10
num3 = num % 100 // 10
num4 = num % 100 // 10
num1 = (num1 + 5) % 10
num2 = (num2 + 5) % 10
num3 = (num3 + 5) % 10
num4 = (num4 + 5) % 10
print(num4, num3, num2, num1)
-
獲取第n個丑數(shù)。 什么是丑數(shù): 因子只包含2,3,5的數(shù)
6 =1* 2*3 -> 丑數(shù)
2 = 1*2 -> 丑數(shù)
7 = 1*7 -> 不是丑數(shù)
1, 2, 3, 4, 5, 6, 8,9,10, 12 ….
num = int(input('輸入n:'))
list1 = []
j = 0
i = 1
while j < num:
x = i
while i % 2 == 0:
i //= 2
while i % 3 == 0:
i //= 3
while i % 5 == 0:
i //= 5
if i == 1:
list1.append(x)
j += 1
i = x + 1
print(list1)