美文网首页
python学习1

python学习1

作者: cry15 | 来源:发表于2020-02-27 16:06 被阅读0次

    菜鸟教程例题

    在其中我有些算了一下运行时间,方法如下:

    import time
    start =time.clock()
    # 程序
    end = time.clock()
    # 其中end-start就是程序运行的时间,单位是秒。
    print('Running time: %s Seconds'%(end-start))
    
    • 题目:1、2、3、4组成不重复的三位数
    def mo_1(): 
        a = []
        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 k != i:
                        a.append(i * 100 + j *10 +k)
        print(a)
    
    • 题目:企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?
      这道题我最先想到的是if语句,用分支计算。但是答案给出了更加简洁的方法,很棒,可以参考一下这种方法,类似的都可以用这种方法解。
    def mo_2():
        i = int(input())
        a = (1000000,600000,400000,200000,100000,0)                    
        b = (0.01,0.015,0.03,0.05,0.075,0.1)
        r = 0
        for idx in range(0,6):
            if i>a[idx]:
                r+=(i-a[idx])*b[idx]
                i=a[idx]
        print(r)
    
    • 题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
      程序分析:
      假设该数为 x。
      1、则:x + 100 = n^2, x + 100 + 168 = m^2
      2、计算等式:m^2 - n^2 = (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。
      7、接下来将 i 的所有数字循环计算即可。
      这道题其实我最先用的是穷举,因为比较简单,我比较了一下1和2两种方法的时间,发现2时间更短
    def mo_3(ans = 1):
        if ans == 1:
            # Running time: 0.015090500000000118 Seconds
            for i in range(-100,10000):
                if (i + 100) ** 0.5 == int((i + 100) ** 0.5) and (i + 100 + 168) ** 0.5 == int((i + 100 + 168) ** 0.5):
                    print(i,end='')
        elif ans == 2:
            # Running time: 0.0014683999999998143 Seconds
           for i in range(1,85):
                if 168 % i == 0:
                    j = 168 / i
                    if  i > j and (i + j) % 2 == 0 and (i - j) % 2 == 0 :
                        m = (i + j) / 2
                        n = (i - j) / 2
                        x = n * n - 100
                        print(x,end='')
    
    
    • 题目:输入某年某月某日,判断这一天是这一年的第几天?
      用split()方法只用一个input就可以解决多个输入
    import datetime
    def mo_4(ans):
        if ans == 2:
            year, month, day = [int(i) for i in input().split()]
            print("-" * 20)
            result = datetime.datetime(year, month, day)
            # 用来格式化时间,%j 用来表示天数
            print(result.strftime("%j"))
    
    • 题目:输入三个整数x,y,z,请把这三个数由小到大输出。
    def mo_5(ans):
        print(sorted([int(i) for i in input().split()]))
    
    • 斐波那契数列
      斐波那契数列(Fibonacci sequence),又称黄金分割数列,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……。
    def mo_6(n,ans):
        if ans == 1:
            # 当n=1000时Running time: 0.32044379999999983 Seconds
            start =time.clock()
            a = [0,1]
            for i in range(2,n):
                a.append(a[i-1] + a[i-2])
            print(a)
            end = time.clock()
            print('Running time: %s Seconds'%(end-start))
        elif ans == 2:
            # 当n=1000时Running time: 0.02545049999999982 Seconds
            start =time.clock()
            a,b = 1,1
            for i in range(n-1):
                a,b = b,a+b
            print(a)
            end = time.clock()
            print('Running time: %s Seconds'%(end-start))
        elif ans == 3:
            if n ==1 or n ==2:
                return 1
            else :
                return mo_6(n-1,ans = 3) + mo_6(n-2,ans = 3) 
    
    • 输出 9*9 乘法口诀表。
    def mo_7():
        for i in range(1,10):
            print()
            for j in range(1,i+1):
                print('%d * %d = %d'%(j,i,i*j),end='    ')
    
    • 倒计时
    def mo_8():
        for x in range ( 5,-1,-1 ) :               #  生成倒计时秒数
            mystr = '倒计时' + str( x ) + '秒'       #  str()函数强制转化字符型      
            print ( mystr, end = '' )               #  end='' 不换行
            print ( "\b"*(len(mystr)*2), end = '' , flush = True )     
            time.sleep ( 1 )
    
    • 暂停一秒输出,并格式化当前时间。
    def mo_9():
        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())))
    

    相关文章

      网友评论

          本文标题:python学习1

          本文链接:https://www.haomeiwen.com/subject/gexxhhtx.html