- #標識符,以字母或下劃線開頭,不與關鍵字重複
- #不使用系統內置標識符、函數名、異常名
- #不使用開頭和結尾都是下劃線作爲自定義標識符名
- #以免與系統定義的特殊方法或變量衝突
- #當循環不影響實際變量的時候,可以在for..in中使用單個_
- for _ in (0, 1, 2, 3, 4, 5):
- print("Hello")
- #關鍵字列表
- and continue except global
- lambda pass while as
- def False if None
- raise with assert del
- finally import nonlocal return
- yield break elif for
- in not True class
- else from is or
- try
- #整數
- x = 14600926 #10進制
- print(x) #14600926
- x = 0b110111101100101011011110 #二進制
- print(x) #14600926
- x = 0o67545336 #8進制
- print(x) #14600926
- x = 0xDECADE #16進制
- print(x) #14600926
- a = 5
- b = 7
- print(a + b) #12
- print(b - a) #2
- print(a * b) #35
- print(a / b) #0.7142857142857143
- print(b // a) #1
- #相當於round(b / a)
- print(b % a) #2
- #求模(取餘數)
- print(a ** b) #78125
- #a的b次方,相當於power(a, b)
- x = -13
- print(abs(x)) #13
- #絕對值
- print(divmod(b, a)) #(1, 2)
- #b除以a的商和餘數
- print(pow(a, b)) #78125
- #同a ** b
- print(pow(a, b, 3)) #2
- #相當於(a ** b) % 3
- print(round(3.1534324)) #3
- print(round(3.1534324, 4)) #3.1534
- #四捨五入,當指定第二個參數
- #返回包含指定個數小數位的數
- #對象的創建可以通過給變量賦字面意義上的值如:
- i = 15
- print(i) #15
- #或將相關的類型做函數調用
- x = int(17)
- print(x) #17
- #有些對象如decimal.Decimal只能通過數據類型創建
- #1.當不使用參數調用數據類型函數時,會被賦值一個默認值
- x = int()
- print(x) #0
- import decimal
- y = decimal.Decimal()
- print(y) #0
- #2.使用一個參數調用數據類型函數
- # 當參數是同樣的數據類型時候,會創建一個新對象
- # 新對象是原始對象的淺拷貝
- # 當參數不是同樣類型就會嘗試進行轉換
- a = bin(1985)
- print(a) #0b11111000001
- a = hex(1985)
- print(a) #0x7c1
- a = oct(1985)
- print(a) #0o3701
- #3.使用兩個參數調用數據類型函數
- #int(s, base)參數s爲欲轉換的字符串,參數base是轉換時的進制
- #base一般可選2、8、10、16...
- #long(s, base)用法與同上
- a = int('1985', 10)
- print(a) #1985
- a = int('0x7c1', 16)
- print(a) #1985
- print(int('A4',16)) #164
- #整數位邏輯操作符
- i|j #邏輯OR
- i&j #邏輯AND
- i^j #邏輯XOR
- i<<j #i左移j位
- i>>j #i右移j位
- ~i #反轉i的每一位
- #布爾型
- #有兩個內置的布爾型對象True/False
- a = (1 == 2)
- print(a) #False
- print(not a) #True
- print(a and True) #False
- print(a or True) #True
- #浮點類型
- #float
- #Python3.x對於float類型使用David Gay(?)算法,但仍然不能保證準確
- print(0.0, 5.4, -2.5, 8.9e-4) #0.0 5.4 -2.5 0.00089
- #對於需要使用高精度的時候,應該選擇decimal.Decimal
- #它在進行計算的時候可以達到我們指定的精度,默認小數點後28位
- #且可以準確表示循環小數
- #decimal運算速度慢,但準確性好,適合財務計算
- #浮點數
- #所有數值型運算與函數都可以與浮點數一起使用
- def equal_float(a, b):
- return abs(a - b)
- print(equal_float(1.1, 2.2)) #1.1
- import sys
- print(sys.float_info.epsilon) #2.220446049250313e-16
- #sys.float_info.epsilon是表示特定機器上兩個浮點數的最小區別
- #使用int函數可以轉換浮點數爲整數-返回整數捨棄小數
- #用round()可以對小數部分四捨五入
- #用math.floor()和math.ceil()向上或向下轉爲最鄰近的整數
- x = 1.35
- print(int(x)) #1
- print(round(x)) #1
- import math
- print(math.floor(x)) #1
- print(math.ceil(x)) #2
- #如果浮點數小數部分爲0,float.is_integer()返回True
- x = 3.0
- print(x.is_integer()) #True
- #foat.hex()可將浮點數以十六進制表示爲字符串
- #相反操作是float.fromhex()
- x = 1.35.hex()
- print(x) #0x1.599999999999ap+0
- x = float.fromhex('0x1.599999999999ap+0')
- print(x) #1.35
- print(x.hex()) #0x1.599999999999ap+0
- #math模塊的函數與常量
- #math.acos(x) #返回弧度x的反餘弦值
- #math.acosh(x) #返回弧度x的反正切值
- #math.asin(x) #返回弧度x的反正弦值
- #math.asinh(x) #返回弧度x的反雙曲正弦
- #math.atan(x) #返回弧度x的反正切
- #math.atan2(y, x) #返回弧度y / x的反正切
- #math.atanh(x) #返回弧度x的雙曲正切
- #math.ceil(x) #返回大於或等於x的最小整數
- #math.copysign(x, y)#將x的符號設置爲y的符號
- #math.cos(x) #返回弧度x的餘弦
- #math.cosh(x) #返回弧度x的餘弦值(角度)
- #math.degrees(x) #將浮點數x從弧度轉換爲度數
- #math.e #常數e,約等於2.718281828459045
- #math.exp(x) #返回e的x次方,即math.e ** x
- #math.fabs(x) #返回|x|,即x的絕對值
- #math.factorial(x) #返回x!
- #math.floor(x) #返回小於等於x的最大整數
- #math.fmod(x, y) #生成x除以y後的模(餘數)比%更好
- #math.frexp(x) #返回一個二元組,分別是x的指數部分與假數部分
- #math.fsum(i) #對iterable i中的值進行求和?
- #math.hypot(x, y) #(x平方+y平方)的平方根
- #math.isinf(x) #如果浮點數x是±inf(±∞)則返回True
- #math.isnan(x) #如果x不是一個數字則返回True
- #math.ldexp(m, e) #返回m * (2 ** e)是math.frexp(x)的反轉
- #math.log(x, b) #log x以b爲底,b可選,默認爲math.e
- #math.log10(x) #log x以10爲底
- #math.log1p(x) #log(1+x)以e爲底,x近似於0時更準確
- #math.modf(x) #以floatS形式返回x的小數與整數部分的元組
- #math.pi #常量π,約爲3.141592653589793
- #math.pow(x, y) #返回x ** y(浮點數)
- #math.radians(x) #角度x轉換爲弧度
- #math.sin(x) #返回弧度x的正弦
- #math.sinh(x) #返回弧度x的雙曲正弦值
- #math.sqrt(x) #返回x的平方根
- #math.sum(i) #對iterable i中的值進行求和?
- #math.tan(x) #返回弧度x的正切值
- #math.tanh(x) #返回弧度x的雙曲正切值
- #math.trunc(x) #返回x的整數部份與int(x)相同
- #math.hypot(x, y)計算原點到point(x, y)的距離,
- #與函數math.sqrt((x ** 2) + (y ** 2))
- #math依賴於編譯Python時使用的底層數學模塊,一些錯誤條件與邊界
- #情況在不同平臺下會有不同的表現
- #複數
- #複數是一對浮點數,一個表示實數部分,一個表示虛數部分(其後跟一個字母j)
- #複數的部分都以屬性名形式存在,分別是:real和imag
- z = -1.892 + 5.742j
- print(z.real) #-1.892
- print(z.imag) #5.742
- #除//、%、divmod()從及三個參數的pow()之外,
- #所有數值型操作符及函數都可用於複數運算,
- #math模塊中的函數不能處理複數
- #cmath模塊中的函數用來處理複數
- #除math中的函數外 ,還包括cmath.phase()/cmath.polar()/cmath.rect()
- #此外複數有一個conjugate()方法用於改變虛數部分的符號
- z += 1
- print(z) #(-0.8919999999999999+5.742j)
- z -= 1
- print(z) #(-1.892+5.742j)
- print(z.conjugate())#(-1.892-5.742j)
- #十進制數字
- #創建十進制數字用decimal模塊裏面的decimal.Decimal()
- #參數可以爲整數或字符串,不能用浮點數
- #浮點數用decimal.Decimal.from_float()函數
- a = decimal.Decimal(5)
- b = decimal.Decimal("5.34")
- print(a + b) #10.34
- #所有數值型操作符及函數都可用於decimal.Decimal
- #但**操作符左側爲decimal.Decimal時右側必須爲整數pow()函數同樣
- #math/cmath裏面的函數不適合於處理decimal.Decimal
- print(a.exp()) #148.4131591025766034211155800
- print(a.ln()) #1.609437912434100374600759333