天天看點

Python程式結構2

2018年6月28日筆記

上午上課前分享

高等數學求解及作圖軟體:mathmatica

5.循環嵌套

Python程式結構2

循環嵌套1.png-38.7kB

Python程式結構2

循環嵌套2.png-50.2kB

Python程式結構2

循環嵌套3.png-46.8kB

Python程式結構2

循環嵌套4.png-55.6kB

左上九九乘法表

if __name__ == '__main__':
    for i in range(1,10):
        for j in range(1,11-i):
            print("%d*%d=%2d" %(i,j,i*j),end=' ')
        print()
           

上面一段代碼的運作結果如下:

Python程式結構2

左上99乘法表.png-15.1kB

左下九九乘法表

if __name__ == '__main__':
    for i in range(1,10):
        for j in range(1,i+1):
            print("%d*%d=%d" %(i,j,i*j),end=' ')
        print()
           

上面一段代碼的運作結果如下:

Python程式結構2

左下99乘法表.png-15.1kB

右上九九乘法表

if __name__ == '__main__':
    for i in range(1,10):
        for j in range(1,i):
            print(' '*7,end='')
        for j in range(i,10):
            print("%d*%d=%-2d" %(i,j,i*j),end=' ')
        print()
           
Python程式結構2

右上99乘法表.png-16.7kB

右下九九乘法表

if __name__ == '__main__':
    for i in range(1,10):
        for j in range(1,10-i):
            print(' '*7,end='')
        for j in range(10-i,10):
            print("%d*%d=%-2d" %(i,j,i*j),end=' ')
        print()
           
Python程式結構2

右下九九乘法表.png-16.7kB

6.推導式

下面兩段代碼的作用相同,但是推導式對資料處理更加簡單、高效。

items = []
for i in range(1,11):
    items.append(i)
           
items = [i for i in range(1,11)]
           

用代碼驗證推導式的高效性

import time
if __name__ == '__main__':
    startTime = time.time()
    list1 = []
    for i in range(1,10000000):
        list1.append(i)
    print(time.time()-startTime)

    startTime = time.time()
    list2 = [k for k in range(1,10000000)]
    print(time.time()-startTime)
           

上面一段代碼的運作結果如下,從下面的結果可以看出速度差距為2、3倍左右,當資料量更大時,可能差距更大。:

2.5785739421844482

0.9168956279754639

多個推導式示例:

if __name__ == '__main__':
    a = [i**2 for i in range(1,10)]
    b = [j+1 for j in range(1,10)]
    c = [n for n in range(1,10) if n % 2 == 0]
    d = [letter.lower() for letter in 'ABCDEFGHIJK']
    print(a,b,c,d,sep='\n')
           

[1, 4, 9, 16, 25, 36, 49, 64, 81]

[2, 3, 4, 5, 6, 7, 8, 9, 10]

[2, 4, 6, 8]

['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k']

7.循環控制

示例1:如果某字母在字元串中存在,則直接跳出循環

if __name__ == '__main__':
    for letter in 'Python':
        if letter == 'h':
            break
    print(letter)
           
h

在python中,for...else結構的作用,else後面接的執行語句在for循環正常執行完,即不是通過break跳出的情況下才會執行。代碼示例如下:

if __name__ == '__main__':
    for i in range(10):
        if i == 5:
            print("found it! i = %d"%i)
            break
    else:
        print("No found it....")
           
found it! i = 5

for循環練習

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

if __name__ == '__main__':
    result = set()
    for i in range(1,5):
        for j in range(1,5):
            for k in range(1,5):
                if len(set([i,j,k])) == 3:
                    result.add(i*100+j*10+k)
    print(result)
    print(len(result))
           

{132, 134, 142, 143, 412, 413, 421, 423, 431, 432, 312, 314, 321, 324, 213, 214, 341, 342, 231, 234, 241, 243, 123, 124}

24