從小知識開始練習

 

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
View

 

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]
View Code

 

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
View Code

 

7題目:將一個列表的數據複製到另外一個列表中。

程序分析:使用列表[:]。

1 a=[1,2,3]
2 b=a[:]
3 print(b)
4 
5 
6 
7 #執行結果
8 [1, 2, 3]
View Code

 

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  
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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
View Code

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的值,重複執行第一步。

View Code

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
View Code
相關文章
相關標籤/搜索