Python 100例(上)


如果你已經把基礎看完,可以嘗試一下看看以下例子了,如果不會做也不要緊,你要嘗試手動把所有的代碼都敲一邊。別嫌麻煩,因為都是從麻煩到簡單的。

實例1:

題目:有1、2、3、4個數字,能組成多少個相互不同且無重復的三位數?都是多少? 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列后再去 掉不滿足條件的排列。
'''
for i  in range(1,5):
     for j  in range(1,5):
         for k  in range(1,5):
             if (i != j)  and (i != k)  and (k != j):
                 print i, j, k
實例1

輸出結果:

1 2 3
1 2 4
1 3 2
1 3 4
1 4 2
1 4 3
2 1 3
2 1 4
2 3 1
2 3 4
2 4 1
2 4 3
3 1 2
3 1 4
3 2 1
3 2 4
3 4 1
3 4 2
4 1 2
4 1 3
4 2 1
4 2 3
4 3 1
4 3 2
View Code

 實例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%提成,從鍵盤輸入當月利潤,求應發放獎金總數?

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:
0-10萬提成10%
10-20萬提成7.5%
20-40萬提成5%
40-60萬提成3%
60-100萬提成1.5%
100萬以上1%
思路:
請利用數軸來分界,定位。注意定義時需把獎金定義成長整型。
'''
'''
注:如果列表的順序相反,計算結果不一樣
'''
i = int(raw_input( ' input: '))
m = [1000000,600000,400000,200000,100000,0]
t = [0.01,0.015,0.03,0.05,0.075,0.1]
r = 0
for s  in range(0,6): # 循環列表元素數
     if i>m[s]: # 判斷輸入的元素
        r+=(i-m[s])*t[s]
         print (i-m[s])*t[s]
        i=m[s]
print r
View Code

 輸出結果:

輸入您的利潤:300000
5000.0
7500.0
10000.0
22500.0
View Code

 實例3:

 題目:一個整數,它加上100后是一個完全平方數,再加上168又是一個完全平方數,請問該書是多少?

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:判斷一個數加100是一個數的完全平方數,加168是另一個數的完全平方數。
思路:在10萬以內判斷,先將該數加上100后再開方,再將該數加上268后再開方,如果開方后的結果滿足如下條件,即是結果。請看具體分析:
'''
import math
for i  in range(10000):
    x = int(math.sqrt(i + 100))
    y = int(math.sqrt(i + 168))
     if (x * x == i + 100)  and (y * y == i + 168):
         print i
View Code

 輸出結果:

156
View Code

 實例4:

題目:輸入某年某年某月某日,判斷這一天是這一年的第幾天?

!/usr/bin/env  python
#  --*--coding:utf-8 --*--
'''
需求:判斷輸入的日期是本年的第幾天
思路:以3月5日為例,應該先把前兩個月的加起來,然后再加上5天即本年的第幾天,特殊       情況,閏年且輸入月份大於3時需考慮多加一天:
'''
year = int(raw_input( ' year:\n '))
month = int(raw_input( ' month:\n '))
day = int(raw_input( ' day:\n '))

months = [0,31,59,90,120,151,181,212,243,273,304,334]
if 0 <= month <= 12: # 判斷輸入的月份
    sum = months[month - 1]
else:
     print  ' data error '
sum += day
leap = 0
if (year % 400 == 0)  or ((year % 4 == 0)  and (year % 100 != 0)): # 判斷是平年還是潤年
    leap = 1
if (leap == 1)  and (month > 2):
    sum += 1
print  ' it is the %dth day. ' % sum
View Code

輸出結果:

year:
2015
month:
12
day:
13
it  is the 347th day.
View Code

 實例5:

題目:輸入三個整數x,y,z,請把這三個數由小到大輸出。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:輸入三個整數,有小到大進行排序
思路:我們想辦法把最小的數放到x上,先將x與y進行比較,如果x>y則將x與y的值進行交換,然后再用x與z進行比較,如果x>z則將x與z的值進行交換,這樣能使x最小。
'''
m = []
for i  in range(0,3):
    n = int(raw_input( ' input: '))
    m.append(n)
m.sort() # 從小到大排序
#
m.sort(reverse = True)#從大到小排序
print m
View Code

 輸出結果:

input:3
input:7
input:1
[1, 3, 7]
View Code

 實例6:

題目:斐波那契數列。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:斐波那契數列:0、1、1、2、3、5、8、13、21、34、……。輸出第100個斐波數
思路:根據數列規律可以得出下一個數值都是前兩個數值的和
'''
'''
方法一:
'''
def fib(n):
    a,b = 1,1
     for i  in range(n-1):
        a,b = b,a+b
     return a # 返回第100個斐波那契數列
print fib(100)
'''
方法二:
'''
def fib(n):
     if n == 1  or n == 2:
         return 1
     return fib(n-1)+fib(n-2)
print fib(100) # 如果輸出的結果太大的話會消耗cpu建議小點
'''
方法三:
'''
def fib(n):
     if n == 1:
         return [1]
     if n == 2:
         return [1, 1]
    fibs = [1, 1]
     for i  in range(2, n):
        fibs.append(fibs[-1] + fibs[-2])
     return fibs

#  輸出前 10 個斐波那契數列
print fib(100)
View Code

 輸出結果:

354224848179261915075
View Code

 實例7:

題目:將一個列表的數據復制到另一個列表中。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
將一個列表的數據復制到另一個列表里
'''
a = [1,2,3,4,5,6,7,8,9,0]
b = a[:]
print b
View Code

 輸出結果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
View Code

 實例8:

題目:輸出9*9乘法口訣表。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:99乘法口訣表
思路:分行與列考慮,共9行9列,i控制行,j控制列。
'''
for i  in range(1,10):
     for j  in range(1,10):
        result = i * j
         print  ' %d * %d = % - 3d '% (i,j,result) # 循環的兩個數相乘
         print  '' # 兩個循環的間隔
View Code

 輸出結果:

1 * 1 =  1 

1 * 2 =  2 

1 * 3 =  3 

1 * 4 =  4 

1 * 5 =  5 

1 * 6 =  6 

1 * 7 =  7 

1 * 8 =  8 

1 * 9 =  9 

2 * 1 =  2 

2 * 2 =  4 

2 * 3 =  6 

2 * 4 =  8 

2 * 5 =  10

2 * 6 =  12

2 * 7 =  14

2 * 8 =  16

2 * 9 =  18

3 * 1 =  3 

3 * 2 =  6 

3 * 3 =  9 

3 * 4 =  12

3 * 5 =  15

3 * 6 =  18

3 * 7 =  21

3 * 8 =  24

3 * 9 =  27

4 * 1 =  4 

4 * 2 =  8 

4 * 3 =  12

4 * 4 =  16

4 * 5 =  20

4 * 6 =  24

4 * 7 =  28

4 * 8 =  32

4 * 9 =  36

5 * 1 =  5 

5 * 2 =  10

5 * 3 =  15

5 * 4 =  20

5 * 5 =  25

5 * 6 =  30

5 * 7 =  35

5 * 8 =  40

5 * 9 =  45

6 * 1 =  6 

6 * 2 =  12

6 * 3 =  18

6 * 4 =  24

6 * 5 =  30

6 * 6 =  36

6 * 7 =  42

6 * 8 =  48

6 * 9 =  54

7 * 1 =  7 

7 * 2 =  14

7 * 3 =  21

7 * 4 =  28

7 * 5 =  35

7 * 6 =  42

7 * 7 =  49

7 * 8 =  56

7 * 9 =  63

8 * 1 =  8 

8 * 2 =  16

8 * 3 =  24

8 * 4 =  32

8 * 5 =  40

8 * 6 =  48

8 * 7 =  56

8 * 8 =  64

8 * 9 =  72

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:

題目:暫停一秒輸出。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
暫停以秒輸入
'''
import time
myD = {1: ' a ', 2: ' b ', 3: ' c ', 4: ' d ', 5: ' e ', 6: ' f ', 7: ' g '}
for key,value  in dict.items(myD):
     print key,value
    time.sleep(1) # 暫停一秒
View Code

 輸出結果:

1 a
2 b
3 c
4 d
5 e
6 f
7 g
View Code

 實例10:

題目:暫停一秒輸入。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
暫停一秒輸出
'''
import time
print time.strftime( ' %Y-%m-%d %H:%M:%S ',time.localtime(time.time()))
time.sleep(1)
print time.strftime( ' %Y-%m-%d %H:%M:%S ',time.localtime(time.time()))
View Code

 輸出結果:

2016-01-10 23:43:17
2016-01-10 23:43:18
View Code

 實例11:

 題目:古典問題,有一對兔子,從出生后第3個月起每個月都生一對兔子,小兔子長到第三個月后每個月又生一對兔子,假如兔子都不死,問每個月的兔子總數為多少?

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:一對兔子,從出生后第三個月起每個月都會生出一對兔子,小兔子長到三個月又生一對小兔子。假如兔子不死,問每個月兔子總數。
思路:兔子的規律為數列1,1,2,3,5,8,13,21....
'''
f1 = 1
f2 =2
for i  in range(1,21):
     print  ' %12d %12d ' % (f1,f2)
     if (i % 2) == 0:
         print  ''
    f1 = f1 + f2
    f2 = f1 + f2
View Code

 輸出結果:

           1            2
           3            5

           8           13
          21           34

          55           89
         144          233

         377          610
         987         1597

        2584         4181
        6765        10946

       17711        28657
       46368        75025

      121393       196418
      317811       514229

      832040      1346269
     2178309      3524578

     5702887      9227465
    14930352     24157817

    39088169     63245986
   102334155    165580141
View Code

 實例12:

題目:判斷101-200之間有多少個素數,並輸出所有素數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:判斷101-200之間的所有素數,並輸出
思路:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
'''
h = 0
leap = 1
from math  import sqrt
from sys  import stdout
for m  in range(0,201):
    k = int(sqrt(m + 1))
     for i  in range(2,k + 1):
         if m % i == 0:
            leap = 0
             break
     if leap == 1:
         print  ' %-4d ' % m
        h += 1
         if h % 10 == 0:
             print  ''
    leap = 1
print  ' The total is %d ' % h
View Code

 輸出結果:

0   
1   
2   
3   
5   
7   
11  
13  
17  
19  

23  
29  
31  
37  
41  
43  
47  
53  
59  
61  

67  
71  
73  
79  
83  
89  
97  
101 
103 
107 

109 
113 
127 
131 
137 
139 
149 
151 
157 
163 

167 
173 
179 
181 
191 
193 
197 
199 
The total  is 48
View Code

 實例13:

題目:打印出所有的“水印花數”,所謂“水印花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個“水印花數”,因為153=1的三次方+5的三次方+3的三次方。 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:打印所有“水印數”,例如:153是一個"水仙花數",因為153=1的三次方+5的三次方+3的三次方
思路:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
'''
for n  in range(100,1000):
    i = n / 100  # 百位數
    j = n / 10 % 10  # 十位數
    k = n % 10   # 個位數
     if n == i ** 3 + j ** 3 + k ** 3:
         print n
View Code

 輸出結果:

153
370
371
407
View Code

 實例14:

題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5.

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:將一個正整數分解質因數。例如:輸入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的值,重復執行第一步。
'''
from sys  import stdout
n = int(raw_input( " input number: "))
print  " n = %d " % n
for i  in range(2,n + 1):
     while n != i:
         if n % i == 0:
            stdout.write(str(i))
            stdout.write( " * ")
            n = n / i
         else:
             break
print  " %d " % n
View Code

 輸出結果:

input number:100
n = 100
2*2*5*5
View Code

 實例15:

題目:利用條件運算符的嵌套來完成此題:學習成績>=90分的同學用A表示,60-80分之間的用B表示,60分以下的用C表示。 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:利用條件運算符的嵌套來完成成績表。
思路:(a>b)?a:b這是條件運算符的基本例子。
'''
score = int(raw_input( ' input score: '))
if score >= 90:
    grade =  ' A '
elif score >= 80:
    grade =  ' D '
elif score >= 70:
    grade =  ' C '
elif score >= 60:
    grade =  ' D '
else:
    grade =  ' E '
print  ' %d belongs to %s ' % (score,grade)
View Code

 輸出結果:

input score:26
26 belongs to E
View Code

實例16:

題目:輸出指定格式的日期。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
輸入指定格式的日期
'''
import datetime
if  __name__ ==  ' __main__ ': # 輸出今日日期,格式為dd/mm/yyyy.更改選項可以查看strftime()方法。
     print(datetime.date.today().strftime( ' %d/%m/%Y '))
     # 創建日期對象
    miyazakiBirthDate = datetime.date(1941, 1, 5)
     print(miyazakiBirthDate.strftime( ' %d/%m/%Y '))
     # 日期算術運算
    miyazakiBirthDextDate = miyazakiBirthDate + datetime.timedelta(days=1) # 加一天
     print(miyazakiBirthDextDate.strftime( ' %d/%m/%Y '))
     # 日期替換
    miyazakiFirstBirthday = miyazakiBirthDate.replace(year=miyazakiBirthDate.year + 1) # 加一年
     print(miyazakiFirstBirthday.strftime( ' %d/%m/%Y '))
View Code

 輸出結果:

11/01/2016
05/01/1941
06/01/1941
05/01/1942
View Code

 實例17:

題目:輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:輸入一行字符,分別統計出其中英文字母、空格,數字和其他字符的個數。
思路:利用while語句,條件為輸入的字符
'''
import string
s = raw_input( ' input a string: ')
letters = 0
space = 0
digit = 0
others = 0
for c  in s:
     if c.isalpha():
        letters += 1
     elif c.isspace():
        space += 1
     elif c.isdigit():
        digit += 1
     else:
        others += 1
print( ' char = %d, space = %d,digit = %d,others = %d ' % (letters,space,digit,others))
View Code

 輸出結果:

input a string:sffq265233!!0aff  dd g
char = 10, space = 3,digit = 7,others = 2
View Code

 實例18:

題目:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。例如2+22+222+222...2(此時共有5個數相加),幾個數相加有鍵盤控制。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:求s=a+aa+aaa+aaaa+aa...a的值,其中a是一個數字。
思路:先計算出每一項的值。
'''
Tn = 0
Sn = []
n = int(raw_input( ' n = : '))
a = int(raw_input( ' a = : '))
for count  in range(n): # 先循環計算每一項的值
    Tn = Tn + a
    a = a * 10
    Sn.append(Tn)
     print Tn
Sn = reduce( lambda x,y : x + y,Sn) # 在計算和
print Sn
View Code

 輸出結果:

n = :9
a = :6
6
66
666
6666
66666
666666
6666666
66666666
666666666
740740734
View Code

 實例19:

 題目:一個數如果恰好等於它的因子之和,這個數就稱為“殼數”。例如6=1+2+3,編程找出1000以內的所有完數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:找出1000以內的完數,完數就是一個數如果恰好等於它的因子之和,例如:6=1+2+3
思路:對n進行分解質因數,應先找到一個最小的質數k,然后按下述步驟完成:
    (1)如果這個質數各個位之和恰等於n,則說明分解質因數的過程已經結束,打印出即可。
'''
from sys  import stdout
for j  in range(2,1001):
    k = []
    n = -1
    s = j
     for i  in range(1,j):
         if j % i == 0:
            n += 1
            s -= i
            k.append(i)
     if s == 0:
         print j
         for i  in range(n):
            stdout.write(str(k[i]))
         print k[n]
View Code

 輸出結果:

6
123
28
124714
496
1248163162124248
View Code

 實例20:

題目:一個球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高? 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:一球從100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
'''
Sn = 100.0
Hn = Sn / 2
for n  in range(2,11):
    Sn += 2 * Hn
    Hn /= 2
print  ' Total of road is %f ' % Sn
print  ' The tenth is %f meter ' % Hn
View Code

 輸出結果:

Total of road  is 299.609375
The tenth  is 0.097656 meter
View Code

 實例21:

 題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,有吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前天剩下的一半零一個。到第十天早上再想吃時,見剩下一個桃子了。求一天共摘了多少。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
思路:采用逆向思維的方法,從后在往前推斷
'''
x2 = 1
for day  in range(9,0,-1):
    x1 = (x2 + 1) * 2
    x2 = x1
print x1
View Code

 輸出結果:

1534
View Code

 實例22:

題目:打印出如下圖案(菱形) :

*

      ***

    ******

      ***

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:打印出如下圖案(菱形):
   *
  ********************
  ***
   *
思路:先把圖形分成兩部分來看待,前四行一個規律,后三行一個規律,利用雙重for循環,第一層控制行,第二層控制列。
'''
from sys  import stdout
for i  in range(4):
     for j  in range(2 - i + 1):
        stdout.write( '   ')
     for k  in range(2 * i + 1):
        stdout.write( ' * ')
     print
for i  in range(3):
     for j  in range(i + 1):
        stdout.write( '   ')
     for k  in range(4 - 2 * i + 1):
        stdout.write( ' * ')
     print
View Code

輸出結果:

   *
  ***
 *****
*******
 *****
  ***
   *
View Code

 實例23:

 題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
思路:根據分子和分母的變化可以發現一些規律。(第三個數的分子和分母,是前兩個分子和分母之和)
'''
'''
方法一:
'''
a = 2.0
b = 1.0
s = 0
for n  in range(1,21):
    s += a / b
    t = a
    a = a + b
    b = t
print s
'''
方法二:
'''
a = 2.0
b = 1.0
s = 0.0
for n  in range(1,21):
    s += a / b
    b,a = a , a + b
print s

s = 0.0
for n  in range(1,21):
    s += a / b
    b,a = a , a + b
print s
'''
方法三:
'''
a = 2.0
b = 1.0
l = []
for n  in range(1,21):
    b,a = a,a + b
    l.append(a / b)
print reduce( lambda x,y: x + y,l)
View Code

 輸出結果:

32.6602607986
32.6602607986
32.360679776
32.2782947888
View Code

 實例24:

 題目:兩個兵乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙對為x,y,z三人。以抽簽決定比賽名單。有向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程找到三隊賽手的名單。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
思路:判斷素數的方法:用一個數分別去除2到sqrt(這個數),如果能被整除,則表明此數不是素數,反之是素數。
'''
for i  in range(ord( ' x '),ord( ' z ') + 1):
     for j  in range(ord( ' x '),ord( ' z ') + 1):
         if i != j:
             for k  in range(ord( ' x '),ord( ' z ') + 1):
                 if (i != k)  and (j != k):
                     if (i != ord( ' x '))  and (k != ord( ' x '))  and (k != ord( ' z ')):
                         print  ' order is a -- %s\t b -- %s\tc -- %s ' % (chr(i),chr(j),chr(k))
View Code

 輸出結果:

order  is a -- z     b -- x    c -- y
View Code

 實例25:

題目:求1+2!+3!+...+20!的和。 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:求1+2!+3!+...+20!的和。
思路:此程序只是把累加變成了累乘。
'''
'''
方法一:
'''
n = 0
s = 0
t = 1
for n  in range(1,21):
    t *= n
    s += t
print  ' 1! + 2! + 3! + ... + 20! = %d ' % s
''' '
方法二:
'''
s = 0
l = range(1,21)
def op(x):
    r = 1
     for i  in range(1,x + 1):
        r *= i
     return r
s = sum(map(op,l))
print  ' 1! + 2! + 3! + ... + 20! = %d ' % s
View Code

輸出結果:

1! + 2! + 3! + ... + 20! = 2561327494111820313
1! + 2! + 3! + ... + 20! = 2561327494111820313
View Code

 實例26:

題目:利用遞歸方法求5!。 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:利用遞歸方法求5!。
思路:遞歸公式:fn = fn_1*4!
'''
def fact(j):
    sum = 0
     if j == 0:
        sum = 1
     else:
        sum = j * fact(j - 1)
     return sum
for i  in range(5):
     print  ' %d! = %d ' % (i,fact(i))
View Code

 輸出結果:

0! = 1
1! = 1
2! = 2
3! = 6
4! = 24
View Code

 實例27:

題目:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:利用遞歸函數調用方式,將所輸入的5個字符,以相反順序打印出來。
'''
def output(s,l):
     if l == 0:
         return
     print (s[l-1])
    output(s,l-1)
s = raw_input( ' Input a string: ')
l = len(s)
output(s,l)
View Code

 輸出結果:

Input a string:123544
4
4
5
3
2
1
View Code

 實例28:

 題目:有5個人坐在一起,問第五個人多少歲?他說比第四個人大兩歲。問第四個人歲數,他說比第三個人大兩歲。問第三個人,又說比第二個人大兩歲。問第二個人,說比第二個人大兩歲。最后問第一個,他說是十歲。請問第五個人多大?

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最后問第一個人,他說是10歲。請問第五個人多大?
思路:利用遞歸的方法,遞歸分為回推和遞推兩個階段。要想知道第五個人歲數,需知道第四人的歲數,依次類推,推到第一人(10歲),再往回推。
'''
def age(n):
     if n == 1:
        c = 10
     else:
        c = age(n-1) + 2
     return c
print age(5)
View Code

 輸出結果:

18
View Code

 實例29:

題目:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:給一個不多於5位的正整數,要求:一、求它是幾位數,二、逆序打印出各位數字。
思路:學會分解出每一位數。
'''
x = int(raw_input( " input a number: "))
a = x / 10000
b = x % 10000 / 1000
c = x % 1000 / 100
d = x % 100 / 10
e = x % 10

if a != 0:
     print  " there are 5  ",e,d,c,b,a
elif b != 0:
     print  " there are 4  ",d,c,b,a
elif c != 0:
     print  " there are 3  ",e,d,c
elif d != 0:
     print  " there are 2  ",e,d
else:
     print  " there are 1 ",e
View Code

 輸出結果:

input a number:56819
there are 5  9 1 8 6 5
View Code

 實例30:

 題目:一個五位數,判斷他是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:一個5位數,判斷它是不是回文數。即12321是回文數,個位與萬位相同,十位與千位相同。
'''
#  x = int(raw_input('input a number:'))
#
 x = str(x)
#
 for i in range(len(x)/2):
#
     if x[i] != x[-i - 1]:
#
         print '這不是一個回數'
#
         break
#
 print '這是一個回數'
x = int(raw_input( " input a number:\n "))
x = str(x)
for i  in range(len(x)/2):
     if x[i] != x[-i - 1]:
         print  ' 這不是一個回文數 '
         break
     print  ' 這是一個回文數 '
View Code

 輸出結果:

input a number:
12321
這是一個回文數
View Code

 實例31:

題目:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:請輸入星期幾的第一個字母來判斷一下是星期幾,如果第一個字母一樣,則繼續判斷第二個字母。
思路:用情況語句比較好,如果第一個字母一樣,則判斷用情況語句或if語句判斷第二個字母。。
'''
letter = raw_input( " please input: ")
# while letter  != 'Y':
if letter ==  ' S ':
     print ( ' please input second letter: ')
    letter = raw_input( " please input: ")
     if letter ==  ' a ':
         print ( ' Saturday ')
     elif letter  ==  ' u ':
         print ( ' Sunday ')
     else:
         print ( ' data error ')

elif letter ==  ' F ':
     print ( ' Friday ')

elif letter ==  ' M ':
     print ( ' Monday ')

elif letter ==  ' T ':
     print ( ' please input second letter ')
    letter = raw_input( " please input: ")

     if letter  ==  ' u ':
         print ( ' Tuesday ')
     elif letter  ==  ' h ':
         print ( ' Thursday ')
     else:
         print ( ' data error ')

elif letter ==  ' W ':
     print ( ' Wednesday ')
else:
     print ( ' data error ')
View Code

 輸出結果:

please input:S
please input second letter:
please input:a
Saturday
View Code

 實例32:

 題目:按相反的順序輸出列表的值。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:按相反的順序輸出列表的值。
'''
a = [ ' one '' two '' three ']
for i  in a[::-1]:
     print i
View Code

 輸出結果:

three
two
one
View Code

 實例33:

題目:按逗號分隔列表。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:按逗號分隔列表。
'''
L = [1,2,3,4,5]
s1 =  ' , '.join(str(n)  for n  in L)
print s1
View Code

 輸出結果:

1,2,3,4,5
View Code

 實例34:

題目:練習函數調用。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:練習函數調用。
'''
def hello_world():
     print  ' hello world '

def three_hellos():
     for i  in range(3):
        hello_world()
if  __name__ ==  ' __main__ ':
    three_hellos()
View Code

 輸出結果:

hello world
hello world
hello world
View Code

 實例35:

題目:文本顏色設置。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:文本顏色設置。
'''
class bcolors:
    HEADER =  ' \033[95m '
    OKBLUE =  ' \033[94m '
    OKGREEN =  ' \033[92m '
    WARNING =  ' \033[93m '
    FAIL =  ' \033[91m '
    ENDC =  ' \033[0m '
    BOLD =  ' \033[1m '
    UNDERLINE =  ' \033[4m '
print bcolors.WARNING +  " 警告的顏色字體? " + bcolors.ENDC
View Code

 輸出結果:

警告的顏色字體?
View Code

 實例36:

 題目:求100之內的素數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:求100之內的素數。
'''
from math  import sqrt
if  __name__ ==  ' __main__ ':
    N = 100
    a = range(0,N)
     for i  in range(2,int(sqrt(N))):
         for j  in range(i + 1,N):
             if (a[i] != 0)  and (a[j] != 0):
                 if a[j] % a[i] == 0:
                    a[j] = 0
     print
     for i  in range(2,N):
         if a[i] != 0:
             print  " %5d " % a[i]
             if (i - 2) % 10 == 0:
                 print
View Code

 輸出結果:

    2

    3
    5
    7
   11
   13
   17
   19
   23
   29
   31
   37
   41
   43
   47
   53
   59
   61
   67
   71
   73
   79
   83
   89
   97
View Code

 實例37:

題目:對100個數進行排序。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:對10個數進行排序。
思路:可以利用選擇法,即從后9個比較過程中,選擇一個最小的與第一個元素交換,下次類推,即用第二個元素與后8個進行比較,並進行交換。
'''
if  __name__ ==  " __main__ ":
    N = 10
     #  input data
     print  ' please input ten num: '
    l = []
     for i  in range(N):
        l.append(int(raw_input( ' input a number: ')))
     print
     for i  in range(N):
         print l[i]
     print

     #  sort ten num
     for i  in range(N - 1):
        min = i
         for j  in range(i + 1,N):
             if l[min] > l[j]:min = j
        l[i],l[min] = l[min],l[i]
     print  ' after sorted '
     for i  in range(N):
         print l[i]
View Code

輸出結果:

please input ten num:
input a number:5
input a number:8
input a number:46
input a number:256
input a number:1
input a number:8
input a number:9
input a number:4
input a number:569
input a number:79

5
8
46
256
1
8
9
4
569
79

after sorted
1
4
5
8
8
9
46
79
256
569
View Code

 實例38:

 題目:求一個3*3的矩陣對角線元素之和。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:求一個3*3矩陣對角線元素之和。
思路:利用雙重for循環控制輸入二維數組,再將a[i][i]累加后輸出。
'''
if  __name__ ==  ' __main__ ':
    a = []
    sum = 0.0
     for i  in range(3):
        a.append([])
         for j  in range(3):
            a[i].append(float(raw_input( " input num:\n ")))
     for i  in range(3):
        sum += a[i][i]
     print sum
View Code

 輸出結果:

input num:
79
input num:
46
input num:
86
input num:
21
input num:
56
input num:
32
input num:
89
input num:
45
input num:
89
224.0
View Code

 實例39:

題目:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:有一個已經排好序的數組。現輸入一個數,要求按原來的規律將它插入數組中。
思路:首先判斷此數是否大於最后一個數,然后再考慮插入中間的數的情況,插入后此元素之后的數,依次后移一個位置。
'''
if  __name__ ==  ' __main__ ':
     #  方法一
    a = [1,4,6,9,13,16,19,28,40,100,0]
     print  ' original list is: '
     for i  in range(len(a)):
         print a[i]
    number = int(raw_input( " insert a new number:\n "))
    end = a[9]
     if number > end:
        a[10] = number
     else:
         for i  in range(10):
             if a[i] > number:
                temp1 = a[i]
                a[i] = number
                 for j  in range(i + 1,11):
                    temp2 = a[j]
                    a[j] = temp1
                    temp1 = temp2
                 break
     for i  in range(11):
         print a[i]
View Code

輸出結果:

1
4
6
9
13
16
19
28
40
100
0
View Code

 實例40:

題目:將一個數組逆序輸出。 

if  __name__ ==  ' __main__ ':
    a = [9,6,5,4,1]
    N = len(a)
     print a
     for i  in range(len(a) / 2):
        a[i],a[N - i - 1] = a[N - i - 1],a[i]
     print a
View Code

 輸出結果:

[9, 6, 5, 4, 1]
[1, 4, 5, 6, 9]
View Code

 實例41:

 題目:模仿靜態變量的用法。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:模仿靜態變量的用法。
'''
def varfunc():
    var = 0
     print  ' var = %d ' % var
    var += 1
if  __name__ ==  ' __main__ ':
     for i  in range(3):
        varfunc()

#  類的屬性
#
 作為類的一個屬性吧
class Static:
    StaticVar = 5
     def varfunc(self):
        self.StaticVar += 1
         print self.StaticVar

print Static.StaticVar
a = Static()
for i  in range(3):
    a.varfunc()
View Code

 輸出結果:

var = 0
var = 0
var = 0
5
6
7
8
View Code

 實例42:

題目:學習使用auto定義變量的用法。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:學習使用auto定義變量的用法。
思路:沒有auto關鍵字,使用變量作用域來舉例吧。
'''
num = 2
def autofunc():
    num = 1
     print  ' internal block num = %d ' % num
    num += 1
for i  in range(3):
     print  ' The num = %d ' % num
    num += 1
    autofunc()
View Code

 輸出結果:

The num = 2
internal block num = 1
The num = 3
internal block num = 1
The num = 4
internal block num = 1
View Code

 實例43:

題目:模仿靜態變量(static)另一案例。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:模仿靜態變量(static)另一案例。
思路:演示一個python作用域使用方法
'''
class Num:
    nNum = 1
     def inc(self):
        self.nNum += 1
         print  ' nNum = %d ' % self.nNum

if  __name__ ==  ' __main__ ':
    nNum = 2
    inst = Num()
     for i  in range(3):
        nNum += 1
         print  ' The num = %d ' % nNum
        inst.inc()
View Code

 輸出結果:

The num = 3
nNum = 2
The num = 4
nNum = 3
The num = 5
nNum = 4
View Code

 實例44:

題目:統計1到100之和。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:統計 1 到 100 之和。
'''
tmp = 0
for i  in range(1,101):
    tmp += i
print  ' The sum is %d ' % tmp
View Code

 輸出結果:

The sum  is 5050
View Code

 實例45:

題目:求輸入數字的平方,如果平方運算后小於50則退出。 

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:求輸入數字的平方,如果平方運算后小於 50 則退出。
'''
TRUE = 1
FALSE = 0
def SQ(x):
     return x * x
print  ' 如果輸入的數字小於 50,程序將停止運行。 '
again = 1
while again:
    num = int(raw_input( ' Please input number '))
     print  ' 運算結果為 %d ' % (SQ(num))
     if num >= 50:
        again = TRUE
     else:
        again = FALSE
View Code

 輸出結果:

如果輸入的數字小於 50,程序將停止運行。
Please input number300
運算結果為 90000
Please input number45
運算結果為 2025
View Code

 實例46:

 題目:連個變量值互換。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:連個變量值互換。
'''
def exchange(a,b):
    a,b = b,a
     return (a,b)

if  __name__ ==  ' __main__ ':
    x = 10
    y = 20
     print  ' x = %d,y = %d ' % (x,y)
    x,y = exchange(x,y)
     print  ' x = %d,y = %d ' % (x,y)
View Code

 輸出結果:

x = 10,y = 20
x = 20,y = 10
View Code

 實例47:

 題目:數字比較。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:數字比較。
'''
if  __name__ ==  ' __main__ ':
    i = 10
    j = 20
     if i > j:
         print  ' %d 大於 %d ' % (i,j)
     elif i == j:
         print  ' %d 等於 %d ' % (i,j)
     elif i < j:
         print  ' %d 小於 %d ' % (i,j)
     else:
         print  ' 未知 '
View Code

 輸出結果:

10 小於 20
View Code

 實例48:

 題目:使用lambda來創建匿名函數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:使用lambda來創建匿名函數。
'''
MAXIMUM =  lambda x,y :  (x > y) * x + (x < y) * y
MINIMUM =  lambda x,y :  (x > y) * y + (x < y) * x

if  __name__ ==  ' __main__ ':
    a = 10
    b = 20
     print  ' The largar one is %d ' % MAXIMUM(a,b)
     print  ' The lower one is %d ' % MINIMUM(a,b)
View Code

 輸出結果:

The largar one  is 20
The lower one  is 10
View Code

 實例49:

題目:輸出一個隨機數。

# !/usr/bin/env  python
#
 --*--coding:utf-8 --*--
'''
需求:輸出一個隨機數。
思路:使用 random 模塊。
'''
import random

# 生成 10 到 20 之間的隨機數
print random.uniform(10, 20)
View Code

 輸出結果:

14.6599912675
View Code



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM