1.一張紙的厚度大約是0.08mm,對(duì)折多少次之后能達(dá)到珠穆朗瑪峰的高度(8848.13米)?
paper_thi = 0.08
times = 0 # 折疊次數(shù)
while True:
times += 1
paper_thi *= 2
if paper_thi > 8848130:
break
print(times)
- 古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
n = int(input('請(qǐng)輸入n個(gè)月:'))
a = 0
b = 1
for _ in range(n):
a, b = b, a + b
print('第%d個(gè)月后兔字總數(shù)為%d個(gè)' % (n, 2 * a))
- 將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2x3x3x5。
n = int(input('輸入整數(shù):'))
all_pri = [] # n以內(nèi)全部質(zhì)數(shù)
prime_factor = [] #質(zhì)因數(shù)
for i in range(2, n + 1):
for j in range(2, i):
if i % j == 0:
break
else:
all_pri.append(i) #將n以內(nèi)全部質(zhì)數(shù)找出來(lái)
e = n
while True:
if e in all_pri: # 判斷商是否在全部質(zhì)數(shù)內(nèi)
prime_factor.append(e)
break
for index in all_pri: #商被質(zhì)數(shù)整除
if e % index == 0:
e = int(e / index)
prime_factor.append(index)
break
print('%d='% n, end='') # 輸出全部質(zhì)因數(shù)
for i in range(len(prime_factor) - 1):
print(prime_factor[i], end='*')
print(prime_factor[-1])
- 輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 程序分析:利用輾除法。
m = int(input('m='))
n = int(input('n='))
if m > n:
m, n = n, m
for x in range(m, 0, -1):
if m % x == 0 and n % x == 0: # 判斷是否是最大公約數(shù)
print('最大公約數(shù)是:%d' % x)
break
for x in range(n, n * m + 1):
if x % m == 0 and x % n == 0: #判斷是否是最小公倍數(shù)
print('最小公倍數(shù)是:%d' % x)
break
- 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱(chēng)為 "完數(shù) "。例如6=1+2+3. 編程 找出1000以內(nèi)的所有完數(shù)
for x in range(1, 1001):
sum1 = 0
for j in range(1, x):
if x % j == 0: # 判斷是否是因子
sum1 += j
if x == sum1:
print(x,end=' ')
6.輸入某年某月某日,判斷這一天是這一年的第幾天? 程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來(lái),然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。
year = int(input('輸入年份:'))
month = int(input('輸入月份:'))
day = int(input('輸入幾日:'))
days = 0
# 非瑞年每個(gè)月天數(shù)
month_days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0: # 判斷是否是閏年
if month > 2: # 閏年月份大于2月的天數(shù)
for x in range(month - 1):
days += month_days[x]
print('這是%d年第%d天'%(year, days + day + 1))
else: # 閏年月份小于3月份的天數(shù)
for x in range(month - 1):
days += month_days[x]
print('這是%d年第%d天' % (year, days + day))
else: # 非閏年的天數(shù)
for x in range(month - 1):
days += month_days[x]
print('這是%d年第%d天' % (year, days + day))
- 某個(gè)公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過(guò)程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,再將第一位和第四位交換,第二位和第三位交換。求輸入的四位整數(shù)加密后的值
password = int(input('請(qǐng)輸入四位整數(shù)'))
q = (password // 1000 + 5) % 10
b = (password // 100 % 10 + 5) % 10
s = (password % 100 // 10 + 5) % 10
g = (password % 10 + 5) % 10
print('%d%d%d%d' % (g, s, b, q))
- 獲取第n個(gè)丑數(shù)。 什么是丑數(shù): 因子只包含2,3,5的數(shù)
6 =1* 23 -> 丑數(shù)
2 = 12 -> 丑數(shù)
7 = 1*7 -> 不是丑數(shù)
1, 2, 3, 4, 5, 6, 8,9,10, 12 ….
n = int(input('請(qǐng)輸入第幾個(gè)數(shù):'))
count = 0 # 第幾個(gè)
i = 0 # 自然數(shù)
while True:
if count == n: # 輸出第n個(gè)丑數(shù)
print('第%d個(gè)數(shù)是%d' % (n, i))
break
i += 1
for x in range(i // 2 + 1):
for y in range(i // 3 + 1):
for z in range(i // 5 + 1):
if 2 ** x * 3 ** y * 5 ** z == i: # 判斷自然數(shù)i是否只有2,3,5質(zhì)因子
count += 1