1. 程式人生 > >程式語言入門經典100例【Python版】

程式語言入門經典100例【Python版】

無論學習哪門計算機語言,只要把100例中絕大部分題目都做一遍,就基本掌握該語言的語法了。

【程式1】

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

複製程式碼
#Filename:001.py
cnt = 0#count the sum of result
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 j!=k:
                print i*100+j*10+k
                cnt
+=1 print cnt
複製程式碼

【程式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,求應發放獎金總數?

複製程式碼
 1 #Filename:002.py
 2 i = int(raw_input('Enter the profit:'))
 3 arr = [1000000,600000,400000,200000,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
複製程式碼

【程式3】

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

【程式碼有誤哦~~~】

複製程式碼
1 #Filename:003.py
2 import math
3 for
i in range(2,1000): 4 if (math.sqrt(i+100)*math.sqrt(i+100) == i+100 )and(math.sqrt(i+168)*math.sqrt(i+168) == i+168): 5 print math.sqrt(i+100) 6 print math.sqrt(i+168) 7 break 8 print i
複製程式碼

【程式4】

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

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

【程式8】
題目:輸出9*9口訣。

1 for i in range(1,10):
2     for j in range(1,i+1):
3         print i,'*',j,'=',i*j,
4     print ''

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

1 a = 1
2 b = 1
3 for i in range(1,21,2):
4     print '%d %d'%(a,b),
5     a += b
6     b += a

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

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 from math import sqrt 
 4 def main():
 5     for i in range(101,201):
 6         flag = 1
 7         k = int(sqrt(i))
 8         for j in range(2,k+1):
 9             if i%j == 0:
10                 flag = 0
11                 break
12         if flag == 1:
13             print '%5d'%(i),
14     
15 if __name__ == "__main__":
16     main()
複製程式碼

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

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 def main():
 4     for i in range(100,1000):
 5         a = i%10
 6         b = i/100
 7         c = (int(i/10))%10
 8         if i == a**3+b**3+c**3:
 9             print "%5d"%(i),
10 
11 if __name__ == "__main__":
12     main()
複製程式碼

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

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 
 4 def main():
 5     n = int(raw_input('Enter a number:'))
 6     print n,'=',
 7     while(n!=1):
 8         for i in range(2,n+1):
 9             if (n%i)==0:
10                 n/=i
11                 if(n == 1):
12                     print '%d'%(i)
13                 else:
14                     print '%d *'%(i),
15                 break
16             
17         
18 if __name__ == "__main__":
19     main()
複製程式碼

【程式15】
題目:利用條件運算子的巢狀來完成此題:學習成績>=90分的同學用A表示,60-89分之間的用B表示,60分以下的用C表示。

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 def main():
 4     s = int(raw_input('Enter a number:'))
 5     if s>=90:
 6         grade = 'A'
 7     elif s>=60:
 8         grade = 'B'
 9     else:
10         grade = 'C'
11     print grade,
12 
13 if __name__ == '__main__':
14     main()
複製程式碼

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

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 #there is no ++ operator in Python
 4 import string
 5 def main():
 6     s = raw_input('input a string:')
 7     letter = 0
 8     space = 0
 9     digit = 0
10     other = 0
11     for c in s:
12         if c.isalpha():
13             letter+=1
14         elif c.isspace():
15             space+=1
16         elif c.isdigit():
17             digit+=1
18         else:
19             other+=1
20     print 'There are %d letters,%d spaces,%d digits and %d other characters in your string.'%(letter,space,digit,other)
21 
22 if __name__ == '__main__':
23     main()
複製程式碼

【程式18】

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

複製程式碼
 1 #!/usr/bin/python
 2 #-*- coding:utf-8 -*-
 3 def main():
 4     basis = int(raw_input("Input the basis number:"))
 5     n = int(raw_input("Input the longest length of number:"))
 6     b = basis
 7     sum = 0
 8     for i in range(0,n):
 9         if i==n-1:
10             print "%d "%(basis),
11         else:
12             print "%d +"%(basis),
13         sum+=basis
14         basis = basis*10+b
15     print '= %d'%(sum),
16     
17 
18 if __name__ == '__main__':
19     main()
複製程式碼

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

複製程式碼
 1 from math import sqrt
 2 n = int(raw_input('input a number:'))
 3 sum = n*-1
 4 k = int(sqrt(n))
 5 for i in range(1,k+1):
 6     if n%i == 0:
 7         sum += n/i
 8         sum += i
 9 if sum == n:
10     print 'YES'
11 else:
12     print 'NO'
複製程式碼 複製程式碼
 1 '''
 2 【程式20】
 3 題目:一球從100米高度自由落下,每次落地後反跳回原高度的一半;再落下,求它在
 4    第10次落地時,共經過多少米?第10次反彈多高?
 5 '''
 6 s = 100.
 7 h = 50.0
 8 for i in range(2,11):
 9     s += h
10     h /= 2
11 print "the sum length of path:%f"%s
12 print "the last height is:%f"%h
複製程式碼 複製程式碼
 1 '''
 2  【程式21】
 3 題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個
 4    第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下
 5    的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
 6 '''
 7 n = 1
 8 for i in range(9,0,-1):
 9     n = (n+1)<<1
10 print n
複製程式碼 複製程式碼
 1 '''
 2  3 【程式22】
 4 題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定
 5    比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出
 6    三隊賽手的名單。 
 7 '''
 8 for i in range(ord('x'),ord('z') + 1):
 9     for j in range(ord('x'),ord('z') + 1):
10         if i != j:
11             for k in range(ord('x'),ord('z') + 1):
12                 if (i != k) and (j != k):
13                     if (i != ord('x')) and (k != ord('x')) and (k != ord('z')):
14                         print 'order is a -- %s\t b -- %s\tc--%s' % (chr(i),chr(j),chr(k))
複製程式碼 複製程式碼
 1 '''
 2 【程式23】 
 3 題目:打印出如下圖案(菱形)
 4 
 5    *
 6   ***
 7  *****
 8 *******
 9  *****
10   ***
11    *
12 '''
13 for i in range(1,8,2):
14     print ' '*(4-(i+1)/2)+'*'*i
15 for i in range(5,0,-2):
16     print ' '*(4-(i+1)/2)+'*'*i
複製程式碼 複製程式碼
 1 '''
 2 【程式24】 
 3 題目:有一分數序列:2/1,3