【第三周】基本數(shù)據(jù)類型筆記(2020.1.27)

3.1數(shù)字類型及操作

(一)整數(shù)類型

  • 可正可負预鬓,沒有取值范圍限制
  • pow(x,y)函數(shù):計算X的y次方赊颠,想算多大算多大

四種進制表現(xiàn)形式

  • 十進制:1010格二,99,-217
  • 二進制:以0b或0B開頭:0b010竣蹦,-0B101
  • 八進制:以0o或0O開頭:0o123顶猜,-0O456
  • 十六進制:以0x或0X開頭:0x9a,-0X89

(二)浮點類型

與數(shù)學(xué)中實數(shù)的概念一致

  • 帶有小數(shù)點及小數(shù)的數(shù)字
  • 浮點數(shù)取值范圍和小數(shù)精度都存在限制痘括,但常規(guī)計算可忽略
  • 取值范圍數(shù)量級約-10的308次方至10的308次方长窄,精度數(shù)量級10的負16次方滔吠。

注意:浮點數(shù)間運算存在不確定尾數(shù),不是bug

>>>0.1+0.3
0.4
>>>0.1+0.2
0.3000000000000004

原因:計算機中十進制小數(shù)0.1是由53位二進制表示的小數(shù)部分挠日,約10^(-16)
二進制表示小數(shù)疮绷,可以無限接近,但不完全相同

修改:

>>>0.1+0.2==0.3
False

>>>round(0.1+0.2,1)==0.3
True
  • round(x嚣潜,d):對x四舍五入冬骚,d是小數(shù)截取位數(shù)
  • 浮點數(shù)間運算及比較用round()函數(shù)輔助
  • 不確定尾數(shù)一般發(fā)生在10^(-16)左右,round()十分有效

浮點數(shù)可以采用科學(xué)計數(shù)法表示

  • 使用字母e或者E作為冪的符號懂算,以10為基數(shù)唉韭,格式如下:
    <a>e<b> 表示a*10^(b)

(三)復(fù)數(shù)類型

出現(xiàn)頻率較少

(四)數(shù)字運算操作符

操作符及使用 描述
x+y 加,x與y之和
x-y 減犯犁,x與y之差
x*y 乘,x與y之積
x/y 除女器,x與y之商
x//y 整數(shù)除酸役,x與y之整數(shù)商 10//3結(jié)果是3
+x x本身
-y y的負值
x%y 余數(shù),模運算 10%3結(jié)果是1
x**y 冪運算驾胆,x的y次冪涣澡,x^y

二元操作符有對應(yīng)的增強賦值操作符

  • xop=y 即x=xopy,其中丧诺,op為二元操作符

類型間可進行混合運算入桂,生成結(jié)果為“最寬”類型

  • 三種類型存在一種逐漸“擴展”或“變寬”的關(guān)系
    整數(shù) ->浮點數(shù) ->復(fù)數(shù)

數(shù)字運算函數(shù)

函數(shù)及使用 描述
abs(x) 絕對值,x的絕對值
divmod(x驳阎,y) 商余抗愁,(x//y,x%y)呵晚,同時輸出商和余數(shù)蜘腌。例:divmod(10,3)結(jié)果為(3饵隙,1)
pow(x,y[,z]) 冪余撮珠,(x**y)%z,[..]表示參數(shù)z可省略。例:pow(3金矛,pow(3芯急,99),10000)結(jié)果為4587
round(x[,d]) 四舍五入驶俊,d是保留小數(shù)位數(shù)娶耍,默認(rèn)值為0
max(X1,X2,,,,,Xn) 最大值
mix(X1,X2,,,,Xn) 最小值

一些以函數(shù)形式提供的數(shù)值運算功能

函數(shù)及使用 描述
int(x) 將x變成整數(shù),舍棄小數(shù)部分
float(x) 將x變成浮點數(shù)废睦,增加小數(shù)部分
complex(x) 將x變成復(fù)數(shù)伺绽,增加虛數(shù)部分

3.2實例3:天天向上的力量

基本問題:持續(xù)的價值
問題1:1‰的力量

#DayDayupQ1.py
dayup=(1.001,365)
daydown=pow(0.999,365)
print("向上:{:.2f},向下:{:.2f}".format(dayup,daydown))

問題2:5‰和1%的力量

#DayDayUpQ2.py
dayfactor=0.005
dayup=pow(1+dayfactor,365)
daydown=pow(1-dayfactor,365)
print("向上:{:.2f},向下:{:.2f})"format(dayup,daydown))

問題3:工作日的力量

  • 一年365天,一周5個工作日奈应,每天進步1%
  • 一年365天澜掩,一周2個休息日,每天退步1%
#DayDayUpQ3.py
dayup=1.0
dayfactor=0.01
 for i in range(365):
      if i % 7 in[6,0]:
           dayup=dayup*(1-dayfactor)
      else:
           dayup=dayup*(1+dayfactor)
print("工作日的力量:{:.2f}".format(dayup))

問題4:工作日的努力

  • A君:一年365天杖挣,每天進步1%肩榕,不停歇
  • B君:一年365天,每周工作5天休息2天惩妇,休息日下降1%株汉,要多努力呢?
    for...in..(計算思維)==>def..while...(“笨辦法”試錯)
#DayDayUpQ4.py
def dayup(df):
      dayup=1
      for i in range(365):
           if i % 7 in [6,0]:
                dayup=dayup*(1-0.01)
           else:
                dayup=dayup*(1+df)  
       return dayup 
dayfactor=0.01
while dayUP(dayfactor)<37.78:
       dayfactor+=0.001 
print("工作日的努力參數(shù)是:{:.3f}".format(dayfactor))

3.3字符串類型及操作

由0個或多個字符組成的有序字符序列

  • 字符串由一對單引號或一對雙引號表示
  • 字符串是字符的有序序列歌殃,可以對其乔妈;中的字符進行索引

字符串的序號
正向遞增序號和反向遞減序號

字符串切片高級用法
使用[M:N:K]根據(jù)步長對字符串切片

  • <字符串>[M:N],M缺失表示至開頭,N缺失表示至結(jié)尾
  • <字符串>[M:N:K],根據(jù)步長K對字符串切片

字符串的特殊字符
轉(zhuǎn)義符\

  • 轉(zhuǎn)義符表示特定字符的本意
  • 轉(zhuǎn)義符形成一些組合氓皱,表達一些不可打印的含義

字符串的操作符

由0個或多個字符組成的有序字符序列

操作符及使用 描述
x+y 連接兩個字符串x和y
nx或xn 復(fù)制n次字符串x
x in s 如果x是s的子串路召,返回True,否則返回False

獲取星期字符串

#weekNamePrintV1.py
weekStr="星期一星期二星期三星期四星期五星期六星期日"
weekId=eval(input("請輸入星期數(shù)字(1-7):"))
 pos=(weekId-1)*3
print(weekStr[pos:pos+3])

字符串處理函數(shù)

函數(shù)及使用|描述
len(x)|長度波材,返回字符串的長度
str(x)|任意類型x所對應(yīng)的字符串形式
hex(x)或oct(x)|整數(shù)x的十六進制或八進制小寫形式字符串

Unicode編碼
python字符串的編碼形式

  • 統(tǒng)一字符編碼股淡,即覆蓋幾乎所有字符的編碼方式
  • 從0到1114111(0*10FFFF)的空間,每個編碼對應(yīng)一個字符
  • python字符串中每個字符都是Unicode編碼字符
    12星座代表字符
for i in range(12):
     print(chr(9800+i),end="")

字符串處理方法

方法及使用 描述
str.lower或str.upper() 返回字符串的副本廷区,全部字符小寫/大寫
str.split(sep=None) 返回一個列表唯灵,由str根據(jù)sep被分隔的部分組成
str.count(sub) 返回子串sub在str中出現(xiàn)的次數(shù)
str.replace(old,new) 返回字符串str副本,所有old子串被替代為new
str.center(width[,fillchar]) 字符串str根據(jù)寬度width居中隙轻,fillchar可選
str.strip(chars) 從str中去掉在其左側(cè)和右側(cè)chars中列出的字符
str.join(iter) 在iter變量除最后元素外每個元素后增加一個str

字符串類型的格式化

格式化是對字符串進行格式表達的方式

  • 字符串格式化使用.format()方法埠帕,用法如下:
    <模板字符串>.format(<逗號分隔的參數(shù)>)
:               引導(dǎo)符號
<填充>      用于填充的單個字符
<對齊>      <左對齊 >右對齊 ^居中對齊
<寬度>      槽設(shè)定的輸出寬度
<,>        數(shù)字的千位分隔符
<.精度>     浮點數(shù)小數(shù)精度或字符串最大輸出長度
<類型>      整數(shù)類型 浮點數(shù)類型

3.4time庫的使用

time庫是python中處理時間的標(biāo)準(zhǔn)庫

  • 時間獲染谅獭:time() ctime() gmtime()
  • 時間格式化:strftime() strptime()
  • 程序計時:sleep()搞监,perf_counter()
函數(shù) 描述
time() 獲取當(dāng)前時間戳,即計算機內(nèi)部時間值镰矿,浮點數(shù)
ctime() 獲取當(dāng)前時間并以易讀方式表示琐驴,返回字符串
gmtime() 獲取當(dāng)前時間,表示為計算機可處理的時間格式

時間格式化
將時間以合理的方式展示出來

  • 格式化:類似字符串格式化秤标,需要有展示模板
  • 展示模板由特定的格式化控制符組成
  • strftime()方法
函數(shù) 描述
strftime(tpl,ts) tpl是格式化模板字符串绝淡,用來定義輸出效果。ts是計算機內(nèi)部時間類型的變量
strptime(str,tpl) str是字符串形式的時間格式化苍姜。tpl是格式化模板字符串牢酵,用來定義輸入效果

程序計時

  • 程序計時指測量起止動作所經(jīng)歷事件的過程
  • 測量時間:perf_counter()
  • 產(chǎn)生時間:sleep()
函數(shù) 描述
per_counter() 返回一個CPU級別的精確時間計數(shù)值,單位為秒衙猪。由于這個計數(shù)值起點不確定馍乙,連續(xù)調(diào)用差值才有意義
sleep s擬休眠時間布近,單位是秒,可以是浮點數(shù)

3.5文本計數(shù)條

需求分析

  • 采用字符串方式打印可以動態(tài)變化的文本進度條
  • 進度條需要能在一行中逐漸變化

問題分析

  • 采用sleep()模擬一個持續(xù)的進度
  • 似乎不那么難

“文本進度條”簡單開始

#TextProBarV1.py
import time
scale=10
print("------執(zhí)行開始------")
for i range(scale+1)
     a='*' * 1
     b='.' * (scale-i)
     c=(i/scale)*100
     print("{:^3.0f}%[{}->{}]".format(c,a,b))
     time.sleep(0.1)
print("------執(zhí)行結(jié)束------")

單行動態(tài)刷新

#TextProBarV2.py
import time
for i in range(101):
     print("\r{:3}%".format(i),end="")
     time.sleep(0.1)

完整效果

#TextProBarV3.py
import time
scale = 50
print("執(zhí)行開始".center(scale//2, "-"))
start = time.perf_counter()
for i in range(scale+1):
    a = '*' * i
    b = '.' * (scale - i)
    c = (i/scale)*100
    dur = time.perf_counter() - start
    print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='')
    time.sleep(0.1)
print("\n"+"執(zhí)行結(jié)束".center(scale//2,'-'))
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丝格,一起剝皮案震驚了整個濱河市撑瞧,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌显蝌,老刑警劉巖预伺,帶你破解...
    沈念sama閱讀 216,591評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異曼尊,居然都是意外死亡酬诀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,448評論 3 392
  • 文/潘曉璐 我一進店門骆撇,熙熙樓的掌柜王于貴愁眉苦臉地迎上來瞒御,“玉大人,你說我怎么就攤上這事神郊】梗” “怎么了?”我有些...
    開封第一講書人閱讀 162,823評論 0 353
  • 文/不壞的土叔 我叫張陵屿岂,是天一觀的道長。 經(jīng)常有香客問我鲸匿,道長爷怀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,204評論 1 292
  • 正文 為了忘掉前任带欢,我火速辦了婚禮运授,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘乔煞。我一直安慰自己吁朦,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,228評論 6 388
  • 文/花漫 我一把揭開白布渡贾。 她就那樣靜靜地躺著逗宜,像睡著了一般。 火紅的嫁衣襯著肌膚如雪空骚。 梳的紋絲不亂的頭發(fā)上纺讲,一...
    開封第一講書人閱讀 51,190評論 1 299
  • 那天,我揣著相機與錄音囤屹,去河邊找鬼熬甚。 笑死,一個胖子當(dāng)著我的面吹牛肋坚,可吹牛的內(nèi)容都是我干的乡括。 我是一名探鬼主播肃廓,決...
    沈念sama閱讀 40,078評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼诲泌!你這毒婦竟也來了盲赊?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,923評論 0 274
  • 序言:老撾萬榮一對情侶失蹤档礁,失蹤者是張志新(化名)和其女友劉穎角钩,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體呻澜,經(jīng)...
    沈念sama閱讀 45,334評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡递礼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,550評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了羹幸。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片脊髓。...
    茶點故事閱讀 39,727評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栅受,靈堂內(nèi)的尸體忽然破棺而出将硝,到底是詐尸還是另有隱情,我是刑警寧澤屏镊,帶...
    沈念sama閱讀 35,428評論 5 343
  • 正文 年R本政府宣布依疼,位于F島的核電站,受9級特大地震影響而芥,放射性物質(zhì)發(fā)生泄漏律罢。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,022評論 3 326
  • 文/蒙蒙 一棍丐、第九天 我趴在偏房一處隱蔽的房頂上張望误辑。 院中可真熱鬧,春花似錦歌逢、人聲如沸巾钉。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,672評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽砰苍。三九已至,卻和暖如春阱高,著一層夾襖步出監(jiān)牢的瞬間师骗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,826評論 1 269
  • 我被黑心中介騙來泰國打工讨惩, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留辟癌,地道東北人。 一個月前我還...
    沈念sama閱讀 47,734評論 2 368
  • 正文 我出身青樓荐捻,卻偏偏與公主長得像黍少,于是被迫代替她去往敵國和親寡夹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,619評論 2 354