





# 1.算數運算子:+ / // % **
print(10 + 3.1)
print(10 + 3)
print(10 / 3) # 結果帶小數
print(10 // 3) # 只保留整數部分
print(10 % 3) # 取模、取余數
print(10 ** 3) # 取模、取余數
# 2.比較運算子:> >= < <= == !=
print(10 > 3)
print(10 == 10)
print(10 >= 10)
print(10 >= 3)
# name = input('your name: ')
# print(name == 'ly')
# 3.賦值運算子
# 3.1 變數賦值
# 3.2增量復制
age = 18
age += 1 # age=age+1
print(age)
age *= 3
age /= 3
age %= 3
age **= 3
# 3.3.鏈式賦值
x = 10
y = x
z = y
z = y = x = 10
print(x, y, z)
print(id(x), id(y), id(z))
# 3.4.交叉賦值
m = 10
n = 20
print(m, n)
# 交換值
# temp = m
# m = n
# n = temp
# print(m,n)
m, n = n, m
print(m, n)
# 3.5解壓賦值
salaries = [111, 222, 333, 444, 555]
# # 把五個月的工資取出來分別賦值給不同的變數名
# mon0 = salaries[0]
# mon1 = salaries[1]
# mon2 = salaries[2]
# mon3 = salaries[3]
# mon4 = salaries[4]
# # 解壓賦值
# mon0, mon1, mon2, mon3, mon4 = salaries
# print(mon0)
# print(mon1)
# print(mon2)
# print(mon3)
# print(mon4)
# mon0,mon1,mon2,mon3=salaries # 對應的變數名少一個不行
# mon0,mon1,mon2,mon3,mon4,mon5=salaries # 對應的變數名多一個也不行
# 引入*,可以幫助我們取兩頭的值,無法取中間的值
# 取前三個值
x, y, z, *_ = salaries[111, 222, 333, 444, 555] # *會將沒有對應關系的值存成串列然后賦值給緊跟其后的那個變數名,此處為_
print(x, y, z)
print(_)
# 取后三個值
# *_,x,y,z=salaries=[111,222,333,444,555]
# print(x,y,z)
# x,*_,y,z=salaries=[111,222,333,444,555]
# print(x,y,z)
# salaries=[111,222,333,444,555]
# _,*middle,_=salaries
# print(middle)
# 解壓字典默認解壓出來的是字典的key
x, y, z = dic = {'a': 1, 'b': 2, 'c': 3}
print(x, y, z)
# 邏輯運算子
# 1. not、and、or的基本使用
# 1.1 not:就是把緊跟其后的那個條件結果取反
# ps:not與緊跟其后的那個條件是一個不可分割的整體
print(not 16 > 13) # False
print(not True) # False
print(not False) # True
print(not 10) # False
print(not 0) # True
print(not None) # True
print(not '') # True
# 1.2 and:邏輯與,用于連接兩個條件,兩個條件同時成立時才回傳True,但凡有一個條件為False則回傳False
print(True and 10 > 3) # True
# ps:可以用and連接多個條件,會按照從左到右的順序一次判斷,一旦某一個條件為False,則無需再往右判斷,可以立即判定最終結果為False,只有在所有條件的結果都為True的情況下,最終結果才為True,
print(2 > 1 and 1 != 1 and True and 3 > 2) # False
# 1.3 or:邏輯或,用于連接兩個條件,兩個條件但凡有一個條件成立時就回傳True,只有在兩個條件同時為Fasle時才回傳False
print(3 > 2 or 0) # True
# ps:可以用or連接多個條件,會按照從左到右的順序依次判斷,一旦某一個條件為True,則無需再往右判斷,可以立即判定最終結果為True,只有在所有條件的結果都為Fasle的情況下,最終結果才為False
print(2 > 1 or 1 != 1 or True or 3 > 2) # True
# 2.優先級not>and>or,同一優先級默認從左往右計算,
# 原理:
# (1) not的優先級最高,就是把緊跟其后的那個條件結果取反,所以not緊跟其后的條件都不可分割
# (2) 如果陳述句中全部是用and連接,或者全部用or連接,那么按照從左到右的順序一次計算即可
# (3) 如果陳述句中既有and也有or,那么先用括號把and的左右兩個條件給括起來,然后在進行運算
print(3>4 and 4>3 or 1==3 and 'x' == 'x' or 3 >3) # False
print((3>4 and 4>3) or (1==3 and 'x' == 'x') or 3 >3) # False
# 1.成員運算子 in、(not in)
# 1.1 in:某一個物件包含于另外一個物件則回傳True
print("egon" in "hello egon") # 判斷一個字串是否存在于一個大字串中
print("e" in "hello egon") # 判斷一個字串是否存在于一個大字串中
print(111 in [111, 222, 33]) # 判斷元素是否存在于串列
print(111 in {"k1": 111, 'k2': 222}) # False
print("k1" in {"k1": 111, 'k2': 222}) # True
# 1.2 not in:某一個物件沒有包含于另外一個物件則回傳True
print("egon" not in "hello egon") # False
# 2.身份運算子 is、(is not)
# 2.1 is:比較的是id,兩個物件的id相同則回傳True
x = 10
y = x
print(id(x), id(y))
print(x is y) # x與y的id相同(1709662720 1709662720)
# 2.2 is not:在兩個物件的id不同時is not會回傳True
m = 'xx'
n = 'yyy'
print(id(m), id(n)) # m與n的id不同(2470609030032 2470609029976)
print(m is not n) # True
# 2.3 補充 == 與 is
# ==雙等號比較的是value是否相等,而is比較的是id是否相等
# 2.3.1 id相同,記憶體地址必定相同,意味著type和value必定相同
# 2.3.2 value相同,type肯定相同,但id可能不同
x = 'Info Tony:18'
y = 'Info Tony:18'
print(id(x), id(y)) # x與y的id不同,但是二者的值相同 (2850804534832, 2850803860400)
print(x == y) # 等號比較的是value
print(type(x), type(y)) # 值相同type肯定相同
print(x is y) # is比較的是id,x與y的值相等但id可以不同
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/241221.html
標籤:Python
上一篇:05-用戶互動
