python3.0練習100題——001


自學python3中,現在開始每天在python2.71 100例中做一道題,用python3實現,並寫下一些思考~加油(ง •̀灬•́)ง

題目網站(http://www.runoob.com/python/python-100-examples.html)

 

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

我的答案:

def fun():
    n=0
    for x in range(1,5):
        for y in range(1,5):
            for z in range(1,5):
                if (x!=y) and (x!=z) and (y!=z):
                    print("%d%d%d"%(x,y,z))
                    n=n+1
    print("tatal:%d"%n)

fun()

 

思考:

1.用三個循環嵌套可以遍歷所有可能的數值,再用if條件篩選出來。但是在數據量大的時候遍歷,可能會延長時間。所以可以改進一下代碼:

def fun():
    n=0
    for x in range(1,5):
        for y in range(1,5) :
            if y!=x:            #增加if條件語句,讓循環要產生的數字減少,更省運行時間
                for z in range(1,5):
                    if  (x!=z) and (y!=z):
                        print("%d%d%d"%(x,y,z))
                        n=n+1
    print("tatal%d"%n)

fun()

 

2.用permutations的方法

 from itertools import permutations
 for i in permutations([1,2,3,4],3):
     print("%d%d%d" %(i[0],i[1],i[2]))

 itertools.permutations(iterable,r)

創建了一個迭代器,返回iterable中所有長度為r的項目序列,如果省略了r,那么序列的長度與iterable中的項目數量相同: 返回p中任意取r個元素做排列的元組的迭代器。

等於說是從列表[1,2,3,4]任意取三個元素,各種排列后,返回含有三個元素的tuple。最后輸出的時候格式化一下就好了~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM