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

leixue0906發表於2015-03-25

原文地址:http://www.cnblogs.com/CheeseZH/archive/2012/11/05/2755107.html
參考地址:http://www.cnblogs.com/BeginMan/p/3220256.html

【程式1】

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

  1. cnt=0
  2. for i in range(1,5):
  3.     for j in range(1,5):
  4.         for k in range(1,5):
  5.             if i!=j and i!=k and j!=k:
  6.                 print i*100+j*10+k
  7.                 cnt+=1
  8. 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. i=int(raw_input('Enter the profit:'))
  2. arr=[1000000,600000,400000,200000,100000,0]
  3. rat=[0.01,0.015,0.03,0.05,0.075,0.1]
  4. r=0
  5. for idx in range(0,6):
  6.     if i>arr[idx]:
  7.         r+=(i-arr[idx])*rat[idx]
  8.         print (i-arr[idx])*rat[idx]
  9.         i=arr[idx]
  10. print r


【程式3】

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

  1. import math
  2. for i in range(2,1000):
  3.     if (int(math.sqrt(i+100))*int(math.sqrt(i+100)) == i+100 )and(int(math.sqrt(i+168))*int(math.sqrt(i+168)) == i+168):
  4.         print math.sqrt(i+100)
  5.         print math.sqrt(i+168)
  6.         break
  7. print i


【程式4】

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

  1. #coding=utf-8
    year=int(raw_input('請輸入年份:'))
    month=raw_input('請輸入月份:')
    day=int(raw_input('請輸入日期:'))
    dic={'1':31,'2':28,'3':31,'4':30,'5':31,'6':30,'7':31,'8':31,'9':30,'10':31,'11':30,'12':31}
    days=0
    if ((year%4 == 0) and (year%100 != 0)) or (year%400 == 0):  #如果是閏年。則二月29天
        dic['2']=29


    if int (month)>1:
        for obj in dic:
            if month == obj:
                for i in range(1,int(obj)):
                    days += dic[str(i)]
        days += day
    else:
        days=day
    print '%s年%s月%s日是該年的第%s天' %(year,month,day,days)


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

  1. #coding=utf-8
    lis = []
    for obj in range(3):
        x = int(raw_input(u'請輸入整數:'))
        lis.append(x)
        
    lis.sort()
    print lis

【程式6】

題目:程式隨機給出數字,然後最大值
  1. import random
    x = random.randint(1,100)
    y = random.randint(1,100)
    z = random.randint(1,100)
    print 'x:%s;y:%s,z:%s' %(x,y,z)
    max = 0
    if x>y:
        max = x
    else:
        max = y
    if z>max:
        max = z
        
    print 'max:%s' %max


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

for i in range(1,10):
    for j in range(1,i+1):
        print '%s*%s=%s' %(j,i,i*j),
    print '\n'


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

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


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

from math import sqrt
def main():
    for i in range (101,201):
        flag = 1
        k = int(sqrt(i))
        for j in range (2,k+1):
            if i%j == 0:
                flag = 0
                break
        if flag == 1:
            print '%5d' %(i),
if __name__ == "__main__":
    main()


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

def main():
    for i in range(100,1000):
        a=i%10
        b=i/100
        c=(int(i/10))%10
        if i==a**3+b**3+c**3:
            print '%5d'%(i),
if __name__=='__main__':
    main()


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

  1. #!/usr/bin/python
    #-*- coding:utf-8 -*-
    def main():
        n = int(raw_input('Enter a number:'))
        print n,'=',
        while(n!=1):
            for i in range(2,n+1):
                if (n%i)==0:
                    n/=i
                    if(n == 1):
                        print '%d'%(i)
                    else:
                        print '%d *'%(i),
                    break
    if __name__ == "__main__":
        main()


【程式12】

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

#!/usr/bin/python
#-*- coding:utf-8 -*-
def main():
    s = int(raw_input('Enter a number:'))
    if s>=90:
        grade = 'A'
    elif s>=60:
        grade = 'B'
    else:
        grade = 'C'
    print grade,
if __name__ == '__main__':
    main()


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

#!/usr/bin/python
#-*- coding:utf-8 -*-
#there is no ++ operator in Python
import string
def main():
    s = raw_input('input a string:')
    letter = 0
    space = 0
    digit = 0
    other = 0
    for c in s:
        if c.isalpha():
            letter+=1
        elif c.isspace():
            space+=1
        elif c.isdigit():
            digit+=1
        else:
            other+=1
    print 'There are %d letters,%d spaces,%d digits and %d other characters in your string.'%(letter,space,digit,other)
if __name__ == '__main__':
    main()


【程式14】

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

#!/usr/bin/python
#-*- coding:utf-8 -*-
def main():
    basis = int(raw_input("Input the basis number:"))
    n = int(raw_input("Input the longest length of number:"))
    b = basis
    sum = 0
    for i in range(0,n):
        if i==n-1:
            print "%d "%(basis),
        else:
            print "%d +"%(basis),
        sum+=basis
        basis = basis*10+b
    print '= %d'%(sum),
if __name__ == '__main__':
    main()

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

from math import sqrt
n = int(raw_input('input a number:'))
sum = n*-1
k = int(sqrt(n))
for i in range(1,k+1):
    if n%i == 0:
        sum += n/i
        sum += i
if sum == n:
    print 'YES'
else:
    print 'NO'


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

  1. s = 100.
  2. h = 50.0
  3. for i in range(2,11):
  4.     s += h
  5.     h /= 2
  6. print \"the sum length of path:%f\"%s
  7. print \"the last height is:%f\"%h

【程式17】
題目:猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。
  1. n = 1
  2. for i in range(9,0,-1):
  3.     n = (n+1)<<1
  4. print n

【程式18】
 題目:兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單。 
  1. for i in range(ord(\'x\'),ord(\'z\') + 1):
  2.     for j in range(ord(\'x\'),ord(\'z\') + 1):
  3.         if i != j:
  4.             for k in range(ord(\'x\'),ord(\'z\') + 1):
  5.                 if (i != k) and (j != k):
  6.                     if (i != ord(\'x\')) and (k != ord(\'x\')) and (k != ord(\'z\')):
  7.                         print \'order is a -- %s\\t b -- %s\\tc--%s\' % (chr(i),chr(j),chr(k))

【程式19】 
題目:列印出如下圖案(菱形)
  1. '''
  2.    *
      ***
     *****
    *******
     *****
      ***
       *
    '''
  3. for i in range(1,8,2):
        print ' '*(4-(i+1)/2)+'*'*i
    for i in range(5,0,-2):
        print ' '*(4-(i+1)/2)+'*'*i

【程式20】 
題目:有一分數序列:2/1,3/2,5/3,8/5,13/8,21/13...求出這個數列的前20項之和。
  1. u = 2.0
    d = 1.0
    s = 0.0
    for i in range(0,20):
        s = s+u/d
        u = u+d
        d = u-d
    print '%f'%s

【程式21】 
題目:求1+2!+3!+...+20!的和

  1. s = 0
  2. t = 1
  3. for i in range(1,21):
  4.     t*=i
  5.     s+=t
  6. print s

【程式22】 
題目:利用遞迴方法求5!。

  1. def fun(i):
  2.     if i==1:
  3.         return 1
  4.     return i*fun(i-1)
  5. print fun(5)

【程式23】 
題目:利用遞迴函式呼叫方式,將所輸入的5個字元,以相反順序列印出來。

  1. 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)

【程式24】 
題目:有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大?

  1. def fun(i):
  2.     if i==1:
  3.         return 10
  4.     return fun(i-1)+2
  5. print fun(5)

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

  1. def fun(i,cnt):
        if i==0:
            print 'There are %d digit in the number.'%cnt
            return
        print i%10,
        i/=10
        cnt+=1
        fun(i,cnt)
    i = int(raw_input('Input a number:'))
    fun(i,0)

【程式26】
題目:一個5位數,判斷它是不是迴文數。即12321是迴文數,個位與萬位相同,十位與千位相同。  

  1. ans=['Yes','No']
    i = int(raw_input('Input a number(10000~99999):'))
    if i<10000 or i>99999:
        print 'Input Error!'
    else:
        i = str(i)
        flag = 0
        for j in range(0,2):
            if i[j]!=i[4-j]:
                flag = 1
                break
        print ans[flag]

【程式27】【篩選法】
題目:求100之內的素數。

  1. a = [0]*101
    for i in range(2,11):
        for j in range(i+i,101,i):
            a[j]=-1;
    for i in range(2,101):
        if a[i]!=-1:
            print ' ',i,

【程式28】
題目:對10個數進行排序。

  1. print 'input 10 numbers please:'
    l = []
    for i in range(10):
        l.append(int(raw_input('Input a number:')))
    #可以直接使用sort函式:l.sort()
    #也可以自己寫排序程式碼(選擇排序)
    for i in range(9):
        for j in range(i+1,10):
            if l[j]             temp = l[j]
                l[j] = l[i]
                l[i] = temp    
    print l

【程式29】
題目:求一個3*3矩陣對角線元素之和。

  1. l = []
  2. for i in range(3):
  3.     for j in range(3):
  4.         l.append(int(raw_input(\'Input a number:\')))
  5. s = 0
  6. for i in range(3):
  7.     s += l[3*i+i]
  8. print s

【程式30】
題目:有一個已經排好序的陣列。現輸入一個數,要求按原來的規律將它插入陣列中。

  1. l = [0,10,20,30,40,50]
    print 'The sorted list is:',l
    cnt = len(l)
    n = int(raw_input('Input a number:'))
    l.append(n)
    for i in range(cnt):
        if n         for j in range(cnt,i,-1):
                l[j] = l[j-1]
            l[i] = n
            break
    print 'The new sorted list is:',l

【程式31】
題目:將一個陣列逆序輸出。

  1. #coding=utf-8
  2. a = [1,2,3,4,5,6,7,8,9]
  3. l = len(a)
  4. print a
  5. for i in range(l/2):
  6.     a[i],a[l-i-1] = a[l-i-1],a[i] #注意此句
  7. print a

【程式32】
演示lambda的使用。

  1. 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)

【程式33】
題目:學習使用按位與 & 。   
程式分析:0&0=0; 0&1=0; 1&0=0; 1&1=1

題目:學習使用按位或 | 。
程式分析:0|0=0; 0|1=1; 1|0=1; 1|1=1 

題目:學習使用按位異或 ^ 。   
程式分析:0^0=0; 0^1=1; 1^0=1; 1^1=0

題目:學習使用按位取反~。   
程式分析:~0=1; ~1=0

  1. #coding=utf-8
    a = 077#8進位制
    b = a&3
    print '077&3=%d'%b
    b&=7
    print '077&3&7=%d'%b

    a = 077
    b = a | 3
    print '077|3=%d' % b
    b |= 7
    print '077|3|7=%d' % b

    a = 077
    b = a ^ 3
    print '077^3=%d' % b
    b ^= 7
    print '077^3^7=%d' % b


【程式34】
題目:取一個整數a從右端開始的4~7位。

  1. a = 100
    print 100&0x00F0

【程式35】
題目:畫圓【Tkinter模組】。

  1. if __name__ == '__main__':
        from Tkinter import *
        canvas = Canvas(width=800, height=600, bg='red')  
        canvas.pack(expand=YES, fill=BOTH)                
        k = 1
        j = 1
        for i in range(0,26):
            canvas.create_oval(310 - k,250 - k,310 + k,250 + k, width=1)
            k += j
            j += 0.3
        mainloop()

【程式36】
題目:畫直線。
1.程式分析:           
2.程式原始碼:

  1. if __name__ == '__main__':
        from Tkinter import *
        canvas = Canvas(width=300, height=300, bg='green')   
        canvas.pack(expand=YES, fill=BOTH)                  
        x0 = 263
        y0 = 263
        y1 = 275
        x1 = 275
        for i in range(19):
            canvas.create_line(x0,y0,x0,y1, width=1, fill='red')
            x0 = x0 - 5
            y0 = y0 - 5
            x1 = x1 + 5
            y1 = y1 + 5
        x0 = 263
        y1 = 275
        y0 = 263
        for i in range(21):
            canvas.create_line(x0,y0,x0,y1,fill = 'red')
            x0 += 5
            y0 += 5
            y1 += 5
        mainloop()

【程式37】
題目:畫方形。

  1. if __name__ == '__main__':
        from Tkinter import *
        root = Tk()
        root.title('Canvas')
        canvas = Canvas(root,width = 400,height = 400,bg = 'yellow')
        x0 = 263
        y0 = 263
        y1 = 275
        x1 = 275
        for i in range(19):
            canvas.create_rectangle(x0,y0,x1,y1)
            x0 -= 5
            y0 -= 5
            x1 += 5
            y1 += 5      
        canvas.pack()
        root.mainloop()

【程式38】
題目:畫圖,綜合例子。
1.程式分析:
2.程式原始碼:

  1. if __name__  == '__main__':
        from Tkinter import *
        canvas = Canvas(width = 300,height = 300,bg = 'green')
        canvas.pack(expand = YES,fill = BOTH)
        x0 = 150
        y0 = 100
        canvas.create_oval(x0 - 10,y0 - 10,x0 + 10,y0 + 10)
        canvas.create_oval(x0 - 20,y0 - 20,x0 + 20,y0 + 20)
        canvas.create_oval(x0 - 50,y0 - 50,x0 + 50,y0 + 50)
        import math
        B = 0.809
        for i in range(16):
            a = 2 * math.pi / 16 * i
            x = math.ceil(x0 + 48 * math.cos(a))
            y = math.ceil(y0 + 48 * math.sin(a) * B)
            canvas.create_line(x0,y0,x,y,fill = 'red')
        canvas.create_oval(x0 - 60,y0 - 60,x0 + 60,y0 + 60)
        
        for k in range(501):
            for i in range(17):
                a = (2 * math.pi / 16) * i + (2 * math.pi / 180) * k
                x = math.ceil(x0 + 48 * math.cos(a))
                y = math.ceil(y0 + 48 + math.sin(a) * B)
                canvas.create_line(x0,y0,x,y,fill = 'red')
            for j in range(51):
                a = (2 * math.pi / 16) * i + (2* math.pi / 180) * k - 1
                x = math.ceil(x0 + 48 * math.cos(a))
                y = math.ceil(y0 + 48 * math.sin(a) * B)
                canvas.create_line(x0,y0,x,y,fill = 'red')
        mainloop()

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26845409/viewspace-1472594/,如需轉載,請註明出處,否則將追究法律責任。

相關文章