Python3入门经典100例

发布时间:2019-07-29 10:28:41编辑:auto阅读(1388)

    最近由于人工智能和编译原理实验,决定要学python3。不为别的,就是因为自己语言基础太差,现学现卖只能用python了。网上看了一圈python的例题,都只有python2的,于是自己决定把python2的例题,手写成python3。希望通过这100道例题,自己能对python3的基础代码能力有一定的掌握。

    例1:题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?

    sum=0
    for i in range(1,5):
        for j in range(1,5):
            for k in range(1,5):
                if i!=j and j!=k and i!=k:
                    print(i,j,k)
                    sum+=1
    print("共",sum,"种")

    思考与分析:for的嵌套循环使用,看一遍,仿写一遍之后,自己就可以手写了。

    例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,求应发放奖金总数?

    # coding=utf-8
    i=int(input("输入你的净利润:"))
    a=[100,60,40,20,10,0]
    b=[0.01,0.015,0.03,0.05,0.075,0.1]
    r=0
    for c in range(0,6):
        if i>a[c]:
            r+=(i-a[c])*b[c]
            print('区间提成:',(i-a[c])*b[c])
            i=a[c]
    print("您的总提成为",r,"万元")

    例3:

    题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?

    程序分析:

    假设该数为 x。

    1、则:x + 100 = n2, x + 100 + 168 = m2

    2、计算等式:m2 - n2 = (m + n)(m - n) = 168

    3、设置: m + n = i,m - n = j,i * j =168,i 和 j 至少一个是偶数

    4、可得: m = (i + j) / 2, n = (i - j) / 2,i 和 j 要么都是偶数,要么都是奇数。

    5、从 3 和 4 推导可知道,i 与 j 均是大于等于 2 的偶数。

    6、由于 i * j = 168, j>=2,则 1 < i < 168 / 2 + 1

    for i in range(1,85):
        if 168%i==0:
            j=168/i
            if i>j and (i+j)%2==0:#有的地方会把(i-j)%2==0写上,是可以省略的。
                n=(i-j)/2
                x=n*n-100
                print(x)

    思考与分析:这里就用到了数学思维,需要去分析怎样求解并求得最优解,当然也可以思考把代码更简单化。

    例4:输入某月某日,判断这一天是一年的第几天?

    分析过程:

    将小于当月的月份日期累加再加上当月的日期即可得到结果。

    思路:一种方法是写一个字典,通过字典来获取每个月的天数。

    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}#用字典的方式来对应月份和天数最合适不过了,不用考虑位置的问题。
    x = int(input('请输入月份:',))
    y = int(input('请输入日期:',))
    r=0
    if  x in range(1,13) and y in range(1,dic[x]):
        for i in range(1, 13):
            if i<x:
                r+=dic[i]
        print("这是年度第",r+y,"天")
    else:
        print("error")

    例5:

    题目:任意输入三个整数x,y,z,请把这三个数由小到大输出。

    分析:将输入的数字放置到列表或者元组中,执行排序即可。

    代码方法1:


    a=[]
    for i in range(3):
        x=int(input("请输入数字:"))
        a.append(x)
    a.sort()
    print(a[0],a[1],a[-1])

    分析思路:既然是给三个数排序,那么肯定要用到sort方法,用append和for循环结合,追加列表中的元素。

    代码二:

    x=int(input('请输入第一个数字:',))  
    y=int(input('请输入第二个数字:',))  
    z=int(input('请输入第三个数字:',))  
    a=[x,y,z]  
    a.sort()  
    print (a[0],a[1],a[2])  

    分析思路:当多个元素排序的话,需要写的代码量就多了,所以这就体现了for循环的作用。

    倒序循环:

    r=[ ]  
    for i  in range(3):  
        x=int(input('请输入整数:\n'),)  
        r.append(x)  
        r.sort(reverse=1)  
    print ('\n',r[0],'\n',r[1],'\n',r[2])  

    例6:

    斐波那契数列指的是从0,1开始,第三项为前两项之和。即:F0=0,F1=1,Fn=F[n-1]+F[n-2] (n>=2)

    def fib(n):
        if n == 1 or n == 2:
            return 1
        elif n==0:
            return 0
        return fib(n - 1) + fib(n - 2)
    print (fib(10))

    或:

    def fib(n):
        a, b = 0, 1
        for i in range(n):
            a, b = b, a + b
        return a
    print(fib(10))

    或:

    def fib(n):
        if n<1:
            return None
        if n==1:
            return [1]
        if n==2:
            return [1,1]
        else:
            fibs=[1,1]
            for i in range(2,n):
                fibs.append(fibs[-1]+fibs[-2])
        return fibs
    print(fib(0))

    例7:

    把列表a种的元素复制到b

    a = [1,2,3,4,5,6,7,8,9]
    b = a[:]
    print(b)
    a=[1,2,3]
    b=a.copy()
    print(b)
    l = [1,2,3,4,5]
    p = []
    for i in range(len(l)):    
        p.append(l[i])
    print (p)

    开拓思维:还有好多种方法

    例8:输出99乘法表

    for i in range(1,10):
        for j in range(1,10):
            print(j, "x", i, "=", i * j,"\t",end="")
            if i==j:
                print("")
                break

    例9:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

    a = 1
    b = 1
    for i in range(1,21,2):  #步长为2,直接输出a和b的值。
        print '%d %d'%(a,b),
        a += b
        b += a

    例10:求1000以内水仙花数, 即一个三位数等于各位的三次方之和。

    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)











































关键字