一、數
1.1 整數類型( 十、二、八、十六進制 )
python中整數類型與數學中的整數概念一致,有正有負,取值任意。
整數的表示形式:
整數類型表示形式舉例十進制34,163,210
二進制0b1101 或 0B1101
八進制0o357 或 0O357
十六進制0x45ac 或 0X45ac
1.2 浮點數類型( round()、科學計數法表示 )
python中浮點數即指帶有小數點和小數的數字,浮點數取值范圍(-10308至10308)和小數精度(10-16)都存在限制(這些限制對于常規運算可以忽略)。
浮點數間運算存在不確定尾數,這不是bug。
原因在于計算機中是以有限位數的二進制表示小數的,二者可以無限接近但不完全相同,這就使得計算機以二進制形式計算小數運算時存在了誤差,在輸出時計算機再截取一定的小數位數輸出,就可能產生尾數。python中不確定尾數一般發生在10-16左右。
例如:
圖1-1 浮點數間運算的不確定尾數
圖1-1中,(0.1 + 0.2) 和 (0.11 + 1.32) 的結果不等于正確結果的情況即為出現不確定尾數。
rang()函數輔助解決不確定尾數問題 round(x, d)對x四舍五入,d是小數截取位數
圖1-2 round()函數四舍五入
浮點數的科學計數法表示形式
科學計數法表示使用字母e或E作為冪的符號,以10為基數,格式如下:
浮點數科學計數法表示形式0.6356.35e-1
51.064155.106415E1
-0.413-4.13E-1
-165.333-1.65333e2
1.3 復數類型( 多用于空間變換或復變函數相關,虛實部的獲取 )
在數學中,a + bj被稱為復數,其中a是實部,b是虛部,j是復數單位。
在python中,復數與數學中的復數相同。
.real獲得復數的實部
.imag獲得復數的虛部
例如:
圖1-3 python中的復數即獲取虛實部
二、數值運算操作符( 加、減、乘、除、模、冪、整數除、取相反數 )
2.1 常用操作符
操作符及使用說明x + y加,求x與y的和
x - y減,求x與y的差
x * y乘,求x與y的積
x / y除,求x與y的商(浮點數結果)。10 / 3 結果為3.3333333333333335
x // y整數除,求x與y的商(整數結果)。10 // 3 結果為3
+ x表示x本身
- x取x的相反數
x % y模運算,求x除y的余數。10 % 3 結果為1
x ** y冪運算,求 xy。9 ** 0.5 結果為3.0
2.2 增強賦值操作符
增強賦值操作符及使用說明x += y與 x = x + y 等價
x -= y與 x = x - y 等價
x *= y與 x = x * y 等價
x /=y與 x = x / y 等價
x //= y與 x = x // y 等價
x %= y與 x = x % y 等價
x **= y與 x = x ** y 等價
三、數值運算函數( abs()、divmod()、pow()、round()、max()、min()、int()、float()、complex() )
數值運算函數及使用說明abs(x)絕對值函數,求x的絕對值
divmod(x, y)商余函數,同時求 x // y 和 x % y 。divmod(10, 3) 結果為(3, 1)
pow(x, y[, z])冪余函數,求 (x ** y)%z 。z省略則代表求 xy
round(x[, d])四舍五入函數,對 x 四舍五入,d 是保留的小數位數。d 省略則代表對 x 四舍五入取整
max(x1, x2, x3, …, xn)最大值函數,求 x1, x2, x3, …, xn 中的最大值,n 不限
min(x1, x2, x3, …, xn)最小值函數,求 x1, x2, x3, …, xn 中的最小值,n 不限
int(x)取整函數,直接舍棄x的小數部分。int(123.123) 結果為123,int(“123”) 結果為123
float(x)取浮點函數,為x添加小數部分。float(123) 結果為123.0,float(“1.23”) 結果為1.23
complex(x)取復數函數,為x添加虛數部分。complex(123) 結果為 123 + 0j
四、天天向上實例
1.1 實例1
# 每天進步1%。
dayup = pow(1.001, 365)
# 每天退步1%。
daydown = pow(0.999, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1.1 實例2
dayfactor = 0.001# 定義每天進步的參數
# 每天進步1%。
dayup = pow(1 + dayfactor, 365)
# 每天退步1%。
daydown = pow(1 - dayfactor, 365)
print("向上:{:.2f},向下:{:.2f}".format(dayup, daydown))
1.1 實例3
'''''''''''''''''''''''''''''''
一年365天中,工作日每天進步1%
周六日每天退步1%
'''''''''''''''''''''''''''''''
dayup = 1.0# 定義初始進步
dayfactor = 0.01# 定義每天進步的參數
# 進行365天循環,i = 0, 1, 2, ..., 364
for i in range(365):
if i % 7 in [6, 0]:# 周六日退步1%
dayup *= (1 - dayfactor)
else:# 工作日進步1%
dayup *= (1 + dayfactor)
print("工作日的力量:{:.2f}".format(dayup))
1.1 實例4
小明:一年365天,每天進步1%,不停歇
玲玲:一年365天,每周工作5天休息2天,休息日每日退步1%,那玲玲在工作日平均每天要進步多少,最后才能和小明的進步相當呢?
流程圖如下:
Created with Rapha?l 2.2.0
開始
計算小明365天進步結果M
假設玲玲工作日平均每天進步1%
計算玲玲365天進步結果N
N≥M嗎?
輸出x
結束
x增加千分之一
yes
no
# 計算小明365天的進步量
Ming_dayup = pow(1.01, 365)
''' @brief 用于計算玲玲365天的進步量
'' @param df: 玲玲工作日平均每天進步的參數
'' @retval 玲玲365天的進步量
'''
def Ling_dayup(df):
dayup = 1# 定義玲玲的初始進步
# 進行365天循環,i = 0, 1, 2, ..., 364
for i in range(365):
if i % 7 in [6, 0]:# 玲玲一周內2天退步1%
dayup *= (1 - 0.01)
else:# 玲玲一周內5天進步df
dayup *= (1 + df)
return dayup# 函數返回玲玲365天的進步量
'''''''''''' 主程序 ''''''''''''
Ling_dayfactor = 0.01# 假設玲玲工作日平均每天進步1%
while Ling_dayup(Ling_dayfactor) < Ming_dayup:# while循環判斷,直到玲玲最后的進步量不小于小明的進步的時候,結束循環
Ling_dayfactor += 0.001
print("玲玲工作日每天應平均進步{:.3f}".format(Ling_dayfactor))