1 , 有四個數字:一、二、三、4,能組成多少個互不相同且無重複數字的三位數?各是多少?python
程序分析:可填在百位、十位、個位的數字都是一、二、三、4。組成全部的排列後再去 掉不知足條件的排列。app
1 for i in range(1,5): 2 for j in range(1,5): 3 for k in range(1,5): 4 if(i != k)and(i!=j)and(j!=k): 5 print(i,j,k) 6 7 8 9 10 11 12 13 #執行結果 14 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 15 1 2 3 16 1 2 4 17 1 3 2 18 1 3 4 19 1 4 2 20 1 4 3 21 2 1 3 22 2 1 4 23 2 3 1 24 2 3 4 25 2 4 1 26 2 4 3 27 3 1 2 28 3 1 4 29 3 2 1 30 3 2 4 31 3 4 1 32 3 4 2 33 4 1 2 34 4 1 3 35 4 2 1 36 4 2 3 37 4 3 1 38 4 3 2 39 40 Process finished with exit code 0
2 :企業發放的獎金根據利潤提成。利潤(I)低於或等於10萬元時,獎金可提10%;利潤高於10萬元,低於20萬元時,低於10萬元的部分按10%提成,高於10萬元的部分,可提成7.5%;20萬到40萬之間時,高於20萬元的部分,可提成5%;40萬到60萬之間時高於40萬元的部分,可提成3%;60萬到100萬之間時,高於60萬元的部分,可提成1.5%,高於100萬元時,超過100萬元的部分按1%提成,從鍵盤輸入當月利潤I,求應發放獎金總數?編輯器
程序分析:請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。ide
1 i=input('淨利潤:') 2 i=int(i) 3 arr=[1000000,600000,400000,2000000,100000,0] 4 rat=[0.01,0.015,0.03,0.05,0.075,0.1] 5 r=0 6 for idx in range(0,6): 7 if i >arr[idx]: 8 r+=(i-arr[idx])*rat[idx] 9 print((i-arr[idx])*rat[idx]) 10 i=arr[idx] 11 print(r) 12 13 14 15 16 #執行結果 17 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 18 淨利潤:120000 19 1500.0 20 10000.0 21 11500.0
3 一個整數,它加上100後是一個徹底平方數,再加上168又是一個徹底平方數,請問該數是多少?函數
程序分析:學習
假設該數爲 x。spa
一、則:x + 100 = n2, x + 100 + 168 = m23d
二、計算等式:m2 - n2 = (m + n)(m - n) = 168code
三、設置: m + n = i,m - n = j,i * j =168,i 和 j 至少一個是偶數blog
四、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要麼都是偶數,要麼都是奇數。
五、從 3 和 4 推導可知道,i 與 j 均是大於等於 2 的偶數。
六、因爲 i * j = 168, j>=2,則 1 < i < 168 / 2 + 1。
七、接下來將 i 的全部數字循環計算便可。
程序源代碼:
1 for i in range(1,85): 2 if 168 % i ==0: 3 j=168/i; 4 if i >j and (i+j) %2==0 and (i-j) % 2 ==0: 5 m=(i+j) / 2 6 n=(i-j) / 2 7 x=n * n -100 8 print(x) 9 10 11 12 13 #執行結果 14 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 15 -99.0 16 21.0 17 261.0 18 1581.0
4 :輸入某年某月某日,判斷這一天是這一年的第幾天?
程序分析:以3月5日爲例,應該先把前兩個月的加起來,而後再加上5天即本年的第幾天,特殊狀況,閏年且輸入月份大於2時需考慮多加一天:
1 year=raw=int(input('year:\n')) 2 month=raw=int(input('month:\n')) 3 day=raw=int(input('day:\n')) 4 months=(0,31,59,90,120,151,181,212,243,273,304,334) 5 if month>0 and month<=12: 6 sum = months[month -1] 7 else: 8 print('data error') 9 sum+=day 10 leap=0 11 if (year % 400 == 0) or ((year % 4 == 0) and (year % 100 != 0)): 12 ieap=1 13 if (leap == 1)and (month >2): 14 sum+=1 15 print('it is the %dth day'% sum) 16 17 18 19 #執行結果 20 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 21 year: 22 2015 23 month: 24 6 25 day: 26 7 27 it is the 158th day
5題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。
程序分析:咱們想辦法把最小的數放到x上,先將x與y進行比較,若是x>y則將x與y的值進行交換,而後再用x與z進行比較,若是x>z則將x與z的值進行交換,這樣能使x最小。
1 l=[] 2 for i in range(3): 3 x=raw=int(input('integer:\n')) 4 l.append(x) 5 l.sort() 6 print(l) 7 8 9 10 11 #執行結果 12 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 13 integer: 14 8 15 integer: 16 5 17 integer: 18 6 19 [5, 6, 8]
6題目:斐波那契數列。
程序分析:斐波那契數列(Fibonacci sequence),又稱黃金分割數列,指的是這樣一個數列:0、一、一、二、三、五、八、1三、2一、3四、……。
1 def fun(x): 2 if x==0: 3 return 0 4 elif x==1: 5 return 1 6 else: 7 return fun(x-2)+fun(x-1) 8 print(fun(10)) 9 10 11 12 13 #執行結果 14 55
7題目:將一個列表的數據複製到另外一個列表中。
程序分析:使用列表[:]。
1 a=[1,2,3] 2 b=a[:] 3 print(b) 4 5 6 7 #執行結果 8 [1, 2, 3]
8題目:輸出 9*9 乘法口訣表。
程序分析:分行與列考慮,共9行9列,i控制行,j控制列。
1 for i in range(10): 2 print() 3 for j in range(1,i+1) : 4 print('%d*%d= %d '%(i,j,i*j),end=' ') 5 6 7 8 9 10 #執行結果 11 1*1= 1 12 2*1= 2 2*2= 4 13 3*1= 3 3*2= 6 3*3= 9 14 4*1= 4 4*2= 8 4*3= 12 4*4= 16 15 5*1= 5 5*2= 10 5*3= 15 5*4= 20 5*5= 25 16 6*1= 6 6*2= 12 6*3= 18 6*4= 24 6*5= 30 6*6= 36 17 7*1= 7 7*2= 14 7*3= 21 7*4= 28 7*5= 35 7*6= 42 7*7= 49 18 8*1= 8 8*2= 16 8*3= 24 8*4= 32 8*5= 40 8*6= 48 8*7= 56 8*8= 64 19 9*1= 9 9*2= 18 9*3= 27 9*4= 36 9*5= 45 9*6= 54 9*7= 63 9*8= 72 9*9= 81
9題目:暫停一秒輸出。
程序分析:使用 time 模塊的 sleep() 函數。
1 import time 2 myD={1:'a',2:'b'} 3 for key,value in dict.items(myD): 4 print(key,value) 5 time.sleep(1) 6 7 8 9 10 #執行結果 11 1 a 12 2 b
10題目:暫停一秒輸出,並格式化當前時間。
1 import time 2 3 print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 4 5 # 暫停一秒 6 time.sleep(1) 7 8 print (time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))) 9 10 11 12 #執行結果 13 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 14 2017-06-21 02:15:37 15 2017-06-21 02:15:38
11題目:古典問題:有一對兔子,從出生後第3個月起每月都生一對兔子,小兔子長到第三個月後每月又生一對兔子,假如兔子都不死,問每月的兔子總數爲多少?
程序分析:兔子的規律爲數列1,1,2,3,5,8,13,21....
1 f1=1 2 f2=1 3 for i in range(1,22): 4 print('%121d %121d'% (f1,f2)) 5 if (i%3)==0: 6 print(f1,f2,f3,f4,f5,f6) 7 f1=f1+f2 8 f2=f1+f2 9 f3=f1+f2 10 f4=f2+f3 11 f5=f3+f4 12 f6=f4+f5 13 14 15 16 #執行的結果是 17 5 8 18 5 8 13 21 34 55 19 13 21 20 34 55 21 89 144 22 89 144 233 377 610 987 23 233 377 24 610 987 25 1597 2584 26 1597 2584 4181 6765 10946 17711 27 4181 6765 28 10946 17711 29 28657 46368 30 28657 46368 75025 121393 196418 317811 31 75025 121393 32 196418 317811 33 514229 832040 34 514229 832040 1346269 2178309 3524578 5702887 35 1346269 2178309 36 3524578 5702887 37 9227465 14930352 38 9227465 14930352 24157817 39088169 63245986 102334155 39 24157817 39088169 40 63245986 102334155 41 165580141 267914296 42 165580141 267914296 433494437 701408733 1134903170 1836311903
12題目:判斷101-200之間有多少個素數,並輸出全部素數。
程序分析:判斷素數的方法:用一個數分別去除2到sqrt(這個數),若是能被整除,則代表此數不是素數,反之是素數。
1 h=0 2 leap=1 3 from math import sqrt 4 from sys import stdout 5 for m in range(101,201): 6 k=int(sqrt(m)) 7 for i in range(2,k+1): 8 if m % i ==0: 9 leap =0 10 break 11 if leap==1: 12 h+=1 13 print(m) 14 leap=1 15 print('The total is %d'% h) 16 17 18 19 #執行結果 20 101 21 103 22 107 23 109 24 113 25 127 26 131 27 137 28 139 29 149 30 151 31 157 32 163 33 167 34 173 35 179 36 181 37 191 38 193 39 197 40 199 41 The total is 21
13題目:打印出全部的"水仙花數",所謂"水仙花數"是指一個三位數,其各位數字立方和等於該數自己。例如:153是一個"水仙花數",由於153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循環控制100-999個數,每一個數分解出個位,十位,百位。
1 for i in range(100, 1000): 2 s = str(i) 3 if int(s[0]) ** 3 + int(s[1]) ** 3 + int(s[2]) ** 3 == i: 4 print(i) 5 6 7 8 #執行結果 9 153 10 370 11 371 12 407
14題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
程序分析:對n進行分解質因數,應先找到一個最小的質數k,而後按下述步驟完成:
(1)若是這個質數恰等於n,則說明分解質因數的過程已經結束,打印出便可。
(2)若是n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,做爲新的正整數你n,重複執行第一步。
(3)若是n不能被k整除,則用k+1做爲k的值,重複執行第一步。
15題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同窗用A表示,60-89分之間的用B表示,60分如下的用C表示。
程序分析:程序分析:(a>b)?a:b這是條件運算符的基本例子。
1 def a(x): 2 if x in range(60): 3 print('C') 4 elif x in range(60,90): 5 print('B') 6 else: 7 print('A') 8 score=int(input('請輸入分數:\n')) 9 a(score) 10 11 12 13 14 #執行結果 15 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 16 請輸入分數: 17 90 18 A 19 20 21 22 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 23 請輸入分數: 24 87 25 B 26 27 28 E:\python3.5\python.exe E:/文本編輯器/pycharm/方傑/小知識練習.py 29 請輸入分數: 30 57 31 C