- 1.一張紙的厚度大約是0.08mm,對折多少次之后能達到珠穆朗瑪峰的高度(8848.13米)?
thickness = 0.08/1000
times = 0
while thickness < 8848:
thickness *= 2
times += 1
# print(thickness,times)
print(times)
- 古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子剔桨,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死徙融,問每個月的兔子總數(shù)為多少洒缀?
分析:
初始繁殖期的兔子0對, 2月齡0對欺冀, 1月齡0對帝洪,幼兔1對,
每過1個月脚猾,上月 2月齡兔子變?yōu)榉敝称谕茫?月齡變?yōu)?月齡, 幼兔變?yōu)?月齡砚哗,繁殖期兔生下同等數(shù)量幼兔
n = 10 #第n個月
birthRabbt = 0
born2Monago = 0
born1Monago = 0
newRabbit = 1
for i in range(1, n+1):
birthRabbt += born2Monago
born2Monago, born1Monago = born1Monago, newRabbit
newRabbit = birthRabbt
rabbitPair = birthRabbt + born1Monago + born2Monago + newRabbit
# print(rabbitPair)
print(rabbitPair)
- 將一個正整數(shù)分解質(zhì)因數(shù)龙助。例如:輸入90,打印出90=2x3x3x5。
n = 18
print(n, '=', end=' ')
while True:
#依次求出遍歷比2到n-1的所有數(shù)蛛芥,如果是因數(shù)則打印提鸟,且將整除該數(shù),for循環(huán)結(jié)束仅淑,n值更新
for x in range(2, n):
if n % x == 0:
# (用 / 除時 結(jié)果為float型)無法進入range()使用
n = n // x
print(x, end='x')
break
#當n本身是質(zhì)數(shù)或 上一步倒除為質(zhì)數(shù)時称勋,循環(huán)完整運行結(jié)束。
else:
print(n)
break
- 輸入兩個正整數(shù)m和n涯竟,求其最大公約數(shù)和最小公倍數(shù)赡鲜。 程序分析:利用輾除法空厌。
碾除法:設(shè)兩數(shù)為a、b(b<a)银酬,用b除a嘲更,得a=bq......r 1(0≤r)。若r1=0揩瞪,則(a赋朦,b)=b;
若r1≠0李破,則再用r1除b宠哄,得b=r1q......r2 (0≤r2).若r2=0,則(a嗤攻,b)=r1毛嫉,若r2≠0,則繼續(xù)用r2除r1,……如此下去屯曹,直到能整除為止狱庇。最后一個非零余數(shù)即為(a,b)恶耽。
m = 8
n = 6
a, b = m, n
# 比較大小密任,并使a>b
if b > a:
a, b = b, a
r = 1
# 根據(jù)碾除法定義 使用a除以b 如不整除,則用除數(shù) 除以 余數(shù)偷俭,直至整除 浪讳,
# 則整除時的除數(shù)為最大公約數(shù)
while r :
r = a % b
a, b = b, r
# 最后一次整除時已將除數(shù)賦值給a,此時輸出a最大公倍數(shù)
print(a)
# 最小公倍數(shù)為 a*b/最大公約數(shù),(用 / 除時 結(jié)果為float型)
print(m * n // a)
- 一個數(shù)如果恰好等于它的因子之和涌萤,這個數(shù)就稱為 "完數(shù) "淹遵。例如6=1+2+3. 編程 找出1000以內(nèi)的所有完數(shù)
for num in range(1, 1001):
sum_factors = 0
for i in range(1, num):
if num % i == 0:
sum_factors += i
if sum_factors == num:
print(sum_factors)
- 6.輸入某年某月某日,判斷這一天是這一年的第幾天负溪? 程序分析:以3月5日為例透揣,應(yīng)該先把前兩個月的加起來,然后再加上5天即本年的第幾天川抡,特殊情況辐真,閏年且輸入月份大于3時需考慮多加一天。
year = 2013
month = 1
day = 2
#2,6,7月
if (month - 1) in [1, 5, 6]:
days = (month - 1) * 30 + 1 + day
#3月
elif month == 3:
days = 59 + day
#4,5月
elif month - 1 == 3 or month - 1 == 4:
days = (month - 1) * 30 + day
#9,10月
elif month - 1 == 8 or month - 1 == 9:
days = (month - 1) * 30 + 3 + day
#11,12月
elif month - 1 == 10 or month - 1 == 11:
days = (month - 1) * 30 + 4 + day
#1月
elif month == 1:
days = day
#9月
elif month == 8:
days = (month - 1) * 30 + 2 + day
#閏年3月以后加1天
if (year % 4 == 0 and year % 100 != 0) or year % 400 == 0:
if month >= 3:
days += 1
- 某個公司采用公用電話傳遞數(shù)據(jù)崖堤,數(shù)據(jù)是四位的整數(shù)侍咱,在傳遞過程中是加密的,加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字密幔,再將第一位和第四位交換楔脯,第二位和第三位交換。求輸入的四位整數(shù)加密后的值
num = 3324
strNum = str(num)
newList = []
for i in range(4):
newList.append((int(strNum[i]) + 5) % 10)
print(newList)
newList[0], newList[3] = newList[3], newList[0]
newList[1], newList[2] = newList[2], newList[1]
print(newList)