ITPub博客

首页 > 应用开发 > IT综合 > 编程语言入门经典案例【Python版】

编程语言入门经典案例【Python版】

IT综合 作者:leixue0906 时间:2015-03-25 07:57:51 0 删除 编辑

原文地址: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博客 ” ,链接:https://blog.itpub.net/26845409/viewspace-1472594/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: MongoDB初探第二篇
请登录后发表评论 登录
全部评论

注册时间:2012-07-26

  • 博文量
    90
  • 访问量
    437566