1.一張紙的厚度大約是0.08mm,對(duì)折多少次之后能達(dá)到珠穆朗瑪峰的高度(8848.13米)?
conut = 1
while True:
num =(0.08 /1000) * (2**conut)
if num >= 8848.13:
print('第1題: 需要對(duì)折的次數(shù):',conut)
break
conut += 1
2. 古典問(wèn)題:有一對(duì)兔子,從出生后第3個(gè)月起每個(gè)月都生一對(duì)兔子,小兔子長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)兔子,假如兔子都不死,問(wèn)每個(gè)月的兔子總數(shù)為多少?
t1 = 2 #一個(gè)月內(nèi)的兔子
t2 = 0 #二個(gè)月內(nèi)的兔子
t3 = 0 #三個(gè)月內(nèi)的兔子
t4 = 0 #可以下崽的兔子
print('第2題: ',end='')
for x in range(1,13):
t4,t3,t2,t1 = t4+t3,t2,t1,t4
num = t1+t2+t3+t4
print(x,'月', num ,'只 ',sep = '',end='')
print()
3. 將一個(gè)正整數(shù)分解質(zhì)因數(shù)。例如:輸入90,打印出90=2x3x3x5。
num = 90
num = int(input('將一個(gè)正整數(shù)分解質(zhì)因數(shù),請(qǐng)輸入一個(gè)大于1的數(shù):'))
print('第3題: ',num,'=',sep = '',end='')
while num != 0 :
for x in range(2,num+1):
if num / x == num // x:
print(x,sep='',end='')
break
num //= x
if num == 1:
break
print('x',end='')
print()
4. 輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。 程序分析:利用輾除法。
#兩個(gè)數(shù)的乘積等于這兩個(gè)數(shù)的最大公約數(shù)與最小公倍數(shù)的乘積。
a = 6
b = 15
# a = int(input('第4題:輸入1個(gè)正整數(shù)m:'))
# b = int(input('第4題:輸入1個(gè)正整數(shù)n:'))
c = a * b
print('第4題:',a,'和',b,'的最大公約數(shù)是:',end ='')
while True:
if a < b :
a,b = b,a
if a % b == 0:
print(b,'最小公倍數(shù)是:',c // b)
break
a,b = b , a % b
5. 一個(gè)數(shù)如果恰好等于它的因子之和,這個(gè)數(shù)就稱為 "完數(shù) "。例如6=1+2+3. 編程 找出1000以內(nèi)的所有完數(shù)
print('第5題: 1000以內(nèi)的所有完數(shù):',end='')
for num in range(2,1000):
sum1 = 0
for x in range(1,num):
if num / x == num // x:
sum1 += x
if num == sum1:
print(num,end=' ')
print()
6.輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:以3月5日為例,應(yīng)該先把前兩個(gè)月的加起來(lái),然后再加上5天即本年的第幾天,
特殊情況,閏年且輸入月份大于3時(shí)需考慮多加一天。
# 1 3 5 7 8 10 12 = 31
# 4 6 9 11 = 30
# 2 = 28
# year = int(input('第6題:請(qǐng)輸入年:'))
# mon = int(input('第6題:請(qǐng)輸入月:'))
# day = int(input('第6題:請(qǐng)輸入日:'))
year = 2000
mon = 12
day = 31
date = day
for x in range(1,mon):
if x == 1 or x == 3 or x == 5 or x == 7 or x == 8 or x == 10 :
date += 31
elif x == 4 or x == 6 or x == 9 or x == 11:
date += 30
else:
if year % 400 == 0 or (year % 4 == 0 and year % 100 != 0):
date += 29
else:
date += 28
print('第6題:',year,'年',mon,'月',day,'日是',year,'的第',date,'天')
7. 某個(gè)公司采用公用電話傳遞數(shù)據(jù),數(shù)據(jù)是四位的整數(shù),在傳遞過(guò)程中是加密的,
加密規(guī)則如下:每位數(shù)字都加上5,然后用和除以10的余數(shù)代替該數(shù)字,
再將第一位和第四位交換,第二位和第三位交換。求輸入的四位整數(shù)加密后的值
n1 = 9
n2 = 8
n3 = 7
n4 = 6
# n1 = int(input('第7題:請(qǐng)輸入數(shù)據(jù)第一位(0-9):'))
# n2 = int(input('第7題:請(qǐng)輸入數(shù)據(jù)第二位(0-9):'))
# n3 = int(input('第7題:請(qǐng)輸入數(shù)據(jù)第三位(0-9):'))
# n4 = int(input('第7題:請(qǐng)輸入數(shù)據(jù)第四位(0-9):'))
print('第7題:',n1,n2,n3,n4,'加密后的數(shù)是:',end = '')
print((n4 + 5) % 10,(n3 + 5) % 10,(n2 + 5) % 10,(n1 + 5) % 10)
s = '0123' #input('第7題: 一個(gè)4位數(shù):')
n1,n2,n3,n4 = int( s[0]), int( s[1]), int( s[2]),int( s[3])
n1,n2,n3,n4 = (n4 + 5) % 10 , (n3 + 5) % 10 , (n2 + 5) % 10 , (n1 + 5) % 10
print('第7題:',s,'加密后的數(shù)是:',str(n1)+str(n2)+str(n3)+str(n4))
運(yùn)行結(jié)果
第1題: 需要對(duì)折的次數(shù): 27
第2題: 1月2只 2月2只 3月2只 4月4只 5月6只 6月8只 7月10只 8月14只 9月20只 10月28
只 11月38只 12月52只
第3題: 90=2x3x3x5
第4題: 6 和 15 的最大公約數(shù)是:3 最小公倍數(shù)是: 30
第5題: 1000以內(nèi)的所有完數(shù):6 28 496
第6題: 2000 年 12 月 31 日是 2000 的第 366 天
第7題: 9 8 7 6 加密后的數(shù)是:1 2 3 4
第7題: 0123 加密后的數(shù)是: 8765