4.流程控制

jason8826發表於2024-05-10
# 條件真假情況如下:
# 布林型別:True為真,False為假
# 對於數字:0或0.0當作假,其它為真
# 對於其它型別,物件為空時為假,其它情況為真,比如:""空字串、[]空列表、()空元組、{}空字典、None空值。

# pass語句,讓直譯器跳過此處,什麼都不做
a = 10
if 10 == a:
    pass
else:
    print("a != 10")

# assert 斷言語句,表示式的值為真,則繼續往下執行,反之會報AsserttionError錯誤
# 格式:assert 表示式
'''相當於
if 表示式 == True:
    程式繼續執行
else:
    程式報AssertionError錯誤
'''
a = 10
assert 10 == a
print("表示式為真")

# for迴圈,常用於遍歷字串、列表、元組等序列
str1 = "12345"
for a in str1:
    print(a,end=' ')
print()
# 內建函式 range(start,stop[,step]) 常用於遍歷數字序列,該函式可以生成算術級數
for a in range(5):# range(5)等價於range(0,5)
    print(a,end=' ')
print()
# for迴圈遍歷字典時,遍歷的時鍵值
dict1 = {'one':1, 'two':2, 'three':3}
for a in dict1:# 相當於 for a in dict1.keys():
    print(a,end=' ')
print()

# 迴圈結構中else的使用
num = 0
while num < 5:
    print(num,end=' ')
    num+=1
else:# 當迴圈條件為False時,執行else的程式碼,然後跳出迴圈(for迴圈同樣適用)
    print("end")

# 迴圈巢狀(乘法表)
for a in range(1,10):
    for b in range(1, a+1):
        print("%2d *%2d =%2d" %(a,b,a*b),end='')
    print()

# 巢狀迴圈(冒泡)
date = [5, 8, 4, 1]
num = len(date)
for i in range(num-1):
    for j in range(i+1, num):
        if date[i] > date[j]:
            date[i], date[j] = date[j], date[i]
print(date)

# break 跳出本層迴圈
str1 = "break跳出本層迴圈,continue跳出本次迴圈"
for char in str1:
    if '' == char:
        break
    print(char,end='')
print('-結束')

# continue 跳出本次迴圈
str1 = "break跳出本層迴圈,continue跳出本次迴圈"
for char in str1:
    if '' == char:
        continue
    print(char,end='')
print("-結束")

# python推導式,快速格式化各類序列
# 列表推導式
# [表示式 for 迭代變數 in 可迭代物件 [if 條件表示式]]
list1 = [i*i for i in range(5)]
print(list1)
# 巢狀的列表推導式
list1 = [(x, y) for x in range(5) for y in range(4)]
print(list1)
'''等價於
list1 = []
for x in range(5):
    for y in range(4):
        list1.append((x, y))
'''
# 元組推導式
# (表示式 for 迭代物件 in 可迭代物件 [if 條件表示式])
ob = (i for i in range(5)) # 元組推導式生成的結果並不是一個元組,而是一個生成器物件
print(tuple(ob))
# 字典推導式
# {表示式 for 迭代物件 in 可迭代物件 [if 條件表示式]}
list1 = ['123','1234','12345']
dict1 = {key:len(key) for key in list1}
print(dict1)
# 集合推導式
# {表示式 for 迭代物件 in 可迭代物件 [if 條件表示式]}
set1 = {i for i in range(5)}
print(set1)

# zip()函式,將序列中對應的元素重新組合,生成一個新的元組
list1 = [1,2,3]
tuple1 = (4,5,6)
print([i for i in zip(list1,tuple1)])

# reversed()函式,將序列中元素逆序
print([i for i in reversed([1,2,3,4])])
print([i for i in reversed(range(5))])
print(list(reversed(range(6))))

# sorted()函式,對序列進行排序,返回排序好的列表
# list = sorted(iterable, key=None, reverse=False) 預設Flase升序,False降序
list1 = [5,4,2,1,3]
tuple1 = (5,4,2,1,3)
set1 = {5,4,2,1,3}
str1 = 'badc'
print(sorted(list1))
print(sorted(tuple1,reverse=True))
print(sorted(set1))
print(sorted(str1))