1.一張紙的厚度大約是0.08mm,對折多少次之后能達到珠穆朗瑪峰的高(8848.13米)?
time = 0 #定義次數變量
while True:
time += 1 #次數依次增加
sum = int(0.08*2**(time) / 8848130) #求比值
if sum == 1:
print(time,'次') #當比值等于1時,輸出次數
break
2. 古典問題:有一對兔子,從出生后第3個月起每個月都生一對兔子, 小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?
# 2, 2, 4, 6, 10, 16, 26, 42, 68......
n = int(input('請輸入月數:'))
month1 = 2 #第一個月兔子的數量
month2 = 2 #第二個月兔子的數量
month = 2 #當 n = 1或2 的時候,兔子的數量
for x in range(2, n): #從第3個月開始依次增加月數
month = month1 + month2 # month等于前兩個月相加
month1 = month2
month2 = month #每兩個月的往后推,一直到第n個月
print(month,'只') #輸出兔子的只數
3. 將一個正整數分解質因數。例如:輸入90,打印出90=2x3x3x5。
n = int(input('請輸入一個正整數:'))
k = 1 #k的初始值為1
print(n,'=',sep='',end='') #輸出'n='
while True:
k += 1 #k值依次加1
if n % k == 0: #判斷k是否為n的因子
print(k,sep='',end='') #如果是打印出k
n /= k #n變成n/k的值
k = 1 #k = 1 從新開始循環
if n != 1: #判斷 n 是否等于1
print('x',sep='',end='') #不等于1輸出'x'
else: #等于1 ,結束循環
break
print() #換行
4. 輸入兩個factor正整數m和n,求其最大公約數和最小公倍數。 程序分析:利用輾除法。
m = int(input('請輸入一個正整數:'))
n = int(input('請輸入第二個正整數,且小于第一個:'))
i = m % n #把m/n的余數附給i
if i == 0: #判斷 i 是否等于 0
print('最大公約數為:',n)
print('最小公倍數為:',m)
elif i != 0:
b = n #如果i不等于0,把n的值附給b
while True:
j = b % i #把b/i的余數附給j
a = i #把i值賦給a
b = i
i = j #然后b變為i的值,i變為j的值 ,繼續循環
if j == 0:
print('最大公約數為:',a) #當j等于0時結束循環,輸出a
break
print('最小公倍數為:',int(m * n / a)) #輸出m,n的最小公倍數
5. 一個數如果恰好等于它的因子之和,這個數就稱為 "完數 "。例如6=1+2+3. 編程 找出1000以內的所有完數
for x in range(2,1001): #x從2開始依次循環加1,直到x等于1000
n = 0 #n的初始值為0
for i in range(1,x): #i從1開始依次加1,直到i等于x-1
if x % i == 0: #判斷i是否為x的因子
n += i #把n+i的值賦給n
if x == n:
print(x) #如果n等于x ,打印出x
6. 輸入某年某月某日,判斷這一天是這一年的第幾天? 程序分析:以3月5日為例, 應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊情況,閏年且輸入月份大于3時需考慮多加一天。
year = int(input('請輸入年份:'))
month = int(input('請輸入月份:'))
day = int(input('請輸入幾日:'))
date = day #把day的值賦給date
for x in range(1, month): #x依次加1,直到x等于month-1
if x == 1 or x == 3 or x == 5 or x == 7 or x == 8 or x == 10:
date += 31 #將month中1,3,5,7,8,10月中的天數加起來
elif x == 4 or x == 6 or x == 9 or x == 11:
date += 30 #將month中4,6,9,11月中的天數加起來
else:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0): #判斷是否為閏年
date += 29 #如果為閏年,2月為29天
else:
date += 28 #不是閏年,2月為28天
print('本年第',date,'天')
7. 某個公司采用公用電話傳遞數據,數據是四位的整數,在傳遞過程中是加密的,加密規則如下:每位數字都加上5,然后用和除以10的余數代替該數字,再將第一位和第四位交換, 第二位和第三位交換。求輸入的四位整數加密后的值
a = int(input('請輸入第一位數:'))
b = int(input('請輸入第二位數:'))
c = int(input('請輸入第三位數:'))
d = int(input('請輸入第四位數:'))
a1 = (a + 5) % 10
b1 = (b + 5) % 10
c1 = (c + 5) % 10
d1 = (d + 5) % 10
print(d1,c1,b1,a1,end='')