一邑闺、前言
學(xué)習(xí)就是一個(gè)不斷的自下而上,自上而下的過(guò)程棕兼。
前段時(shí)間陡舅,學(xué)著用python實(shí)現(xiàn)網(wǎng)站的數(shù)據(jù)爬取,隱約get到python的一些語(yǔ)法和用法伴挚,感覺(jué)就是語(yǔ)法不難靶衍,關(guān)鍵在于解決問(wèn)題的思維茎芋。
這是需求驅(qū)動(dòng)后的學(xué)習(xí)。接下來(lái)田弥,就需要對(duì)python進(jìn)行系統(tǒng)地了解涛酗。
很早之前搜知乎的時(shí)候,就搜到MOOC上的一門《python語(yǔ)言程序設(shè)計(jì)》課程偷厦,講得很好商叹,而且,我還下載了課件只泼,溜了一遍剖笙,感覺(jué)就挺有趣的。
趁著有了實(shí)戰(zhàn)經(jīng)驗(yàn)辜妓,就把這門入門課刷了一遍。果然是門好課!很適合小白入門籍滴,并系統(tǒng)學(xué)習(xí)酪夷,整個(gè)教學(xué)過(guò)程循序漸進(jìn),深入淺出孽惰,提綱挈領(lǐng)晚岭,很有意思!
課程是北京理工大學(xué)嵩天老師的《python語(yǔ)言程序設(shè)計(jì)》課程勋功,現(xiàn)在已經(jīng)開(kāi)了11次課了坦报。課程每個(gè)小視頻短則幾分鐘,最長(zhǎng)也不超過(guò)20分鐘狂鞋,不容易勸退片择。每章講解有復(fù)習(xí)回顧及小結(jié),在平臺(tái)python123上有每章的練習(xí)和測(cè)試骚揍,直接反饋結(jié)果字管,激發(fā)繼續(xù)學(xué)下去的興趣。
個(gè)人感覺(jué)信不,老師說(shuō)話速度慢了些嘲叔,調(diào)成了2倍速播放,然后抽活,花了大約3天的時(shí)間硫戈,把所有的視頻,課件下硕,練習(xí)和測(cè)試都刷了一遍丁逝,感覺(jué)對(duì)python的了解更系統(tǒng)了!
趁熱打鐵卵牍,把每章的知識(shí)點(diǎn)和練習(xí)果港、測(cè)試再進(jìn)行整理回顧一下。
以下內(nèi)容均來(lái)自課程:《python語(yǔ)言程序設(shè)計(jì)》 及平臺(tái)python123糊昙,感興趣的看課程視頻辛掠,親自練習(xí),效果更好~
二释牺、知識(shí)點(diǎn)
1. 數(shù)字類型及操作
-
整數(shù)類型:
①可正可負(fù)萝衩,沒(méi)有取值范圍限制;
②
pow(x,y)
函數(shù):計(jì)算Xy没咙,想算多大算多大猩谊;③4種進(jìn)制表示形式:十進(jìn)制;二進(jìn)制(以0b或0B開(kāi)頭)祭刚;八進(jìn)制(以0o或0O開(kāi)頭)牌捷;十六進(jìn)制(以0x或0X開(kāi)頭)墙牌;
-
浮點(diǎn)數(shù)類型:
①帶有小數(shù)點(diǎn)及小數(shù)的數(shù)字;
②浮點(diǎn)數(shù)取值范圍和小數(shù)精度都存在限制暗甥,但常規(guī)計(jì)算可忽略喜滨;
③取值范圍數(shù)量級(jí)-10307至10308,精度數(shù)量級(jí)10-16撤防;
④浮點(diǎn)數(shù)間運(yùn)算存在不確定尾數(shù)虽风,不是bug;
⑤
round(x,y)
:對(duì)x四舍五入寄月,d是小數(shù)截取位數(shù)辜膝;浮點(diǎn)數(shù)間運(yùn)算與比較用round()
函數(shù)輔助;不確定尾數(shù)一般發(fā)生在10-16左右漾肮,round()
十分有效厂抖;⑥浮點(diǎn)數(shù)可以用科學(xué)計(jì)數(shù)法表示:使用字母
e
或E
作為冪的符號(hào),以10為基數(shù)初橘。例如验游,4.3e-3
值為0.0043;9.6E5
值為960000.0保檐; -
復(fù)數(shù)類型:
①
a+bj
被稱為復(fù)數(shù)耕蝉,其中,a
為實(shí)部夜只,b
為虛部垒在;②例如,
z=1.23e-4+5.6e+89j
扔亥,z.real
獲得實(shí)部场躯;z.imag
獲得虛部; -
數(shù)值運(yùn)算操作符:
①操作符是完成運(yùn)算的一種符號(hào)體系
操作符及使用 描述 x+y
x與y之和 x-y
x與y之差 x*y
x與y之積 x/y
x與y之商旅挤, 10/3
結(jié)果是3.3333333333333335x//y
x與y的整數(shù)商踢关, 10//3
結(jié)果是3+x
x本身 -y
y的負(fù)值 x%y
余數(shù),模運(yùn)算粘茄, 10%3
結(jié)果是1x**y
冪函數(shù)签舞,x的y次冪;當(dāng)y是小數(shù)時(shí)柒瓣,開(kāi)方運(yùn)算 10**0.5
結(jié)果是10的平方根x op =y
增強(qiáng)賦值操作符儒搭; x+=y
,x-=y
,x*=y
,x/=y
,x//=y
,x%=y
,x**=y
②類型間可以進(jìn)行混合運(yùn)算,生成結(jié)果為“最寬”類型芙贫;整數(shù)→浮點(diǎn)數(shù)→復(fù)數(shù)搂鲫;例如,
123+4.0=127.0
-
數(shù)值運(yùn)算函數(shù):
①一些以函數(shù)形式提供的數(shù)值運(yùn)算功能
函數(shù)及使用 描述 abs(x)
絕對(duì)值磺平, abs(-10.01)
結(jié)果為10.01divmod(x,y)
商余魂仍,同時(shí)輸出商和余數(shù)拐辽, divmod(10,3)
結(jié)果為(3,1)pow(x,y[,z])
冪余, (x**y)%z
擦酌,[..]
表示參數(shù)z可省略round(x[,d])
四舍五入薛训,d是保留小數(shù)位數(shù),默認(rèn)值為0仑氛, round(-10.123,2)
結(jié)果為-10.12max(x1,x2,…,xn)
最大值,n不限 min(x1,x2,…,xn)
最小值闸英,n不限 int(x)
將x變成整數(shù)锯岖,舍棄小數(shù)部分, int(123.45)
和int(‘123’)
結(jié)果分別為123.45和123float(x)
將x變成浮點(diǎn)數(shù)甫何,增加小數(shù)部分出吹, float(12)
和float(‘1.23’)
結(jié)果分別為12和1.23complex(x)
將x變成復(fù)數(shù),增加虛數(shù)部分辙喂; complex(4)
和complex(‘4’)
結(jié)果為4+0j
2. 實(shí)例3:天天向上的力量
描述:工作日模式要努力到什么水平捶牢,才能與每天努力1%一樣?
A君:一年365天巍耗,每天進(jìn)步1%秋麸,不停歇
B君:一年365天,每周工作5天休息2天炬太,休息日下降1%灸蟆,要多努力?
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)<pow((1+0.01),365):
dayfactor+=0.001
print('工作日的努力參數(shù)是:{:.3f}'.format(dayfactor))
3. 字符串類型及操作
-
字符串的表示:
①由0個(gè)或多個(gè)字符組成的有序字符序列:字符串由一對(duì)單引號(hào)或一對(duì)雙引號(hào)表示亲族;字符串是字符的有序序列炒考,可以對(duì)其中的字符進(jìn)行索引;
②字符串有2類共4種表示方法:由1對(duì)單引號(hào)或雙引號(hào)表示,僅表示單行字符串;由1對(duì)三單引號(hào)或三雙引號(hào)表示,克表示多行字符串;
③字符串中包含雙引號(hào):
'這里有個(gè)雙引號(hào)"'
④字符串中包含單引號(hào):
"這里有個(gè)單引號(hào)'"
⑤字符串中既有單引號(hào)又有雙引號(hào):
'''這里既有單引號(hào)'又有雙引號(hào)"'''
⑥字符串的序號(hào):正向遞增序號(hào)和反向遞件序號(hào)霎迫;
⑦字符串的使用:使用
[]
獲取字符串中一個(gè)或多個(gè)字符斋枢。索引:<字符串>[M]
;切片:<字符串>[M:N]
(M缺失表至開(kāi)頭知给,N缺失表至結(jié)尾)瓤帚;<字符串>[M:N:K]
,根據(jù)步長(zhǎng)K對(duì)字符串進(jìn)行切片炼鞠;"零一二三四五六七八九十"[1:8:2]
結(jié)果是“一三五七”缘滥;"零一二三四五六七八九十"[::-1]
結(jié)果是“十九八七六五四三二一零”⑧字符串的特殊字符:使用轉(zhuǎn)義符
\
,\b
表示回退谒主;\n
表?yè)Q行(光標(biāo)移動(dòng)到下行首朝扼;\r
表示回車(光標(biāo)移動(dòng)到本行首) -
字符串操作符
操作符及使用 描述 x+y
連接兩個(gè)字符串x和y n*x
或x*n
復(fù)制n次字符串x x in s
如果x是s的子串,返回True霎肯,否則返回False -
字符串處理函數(shù)
函數(shù)及使用 描述 len(x)
返回字符串的長(zhǎng)度 str(x)
任意類型x所對(duì)應(yīng)的字符串形式 hex(x)
或oct(x)
整數(shù)x的十六進(jìn)制或八進(jìn)制小寫形式字符串 chr(x)
x為Unicode編碼擎颖,返回其對(duì)應(yīng)的字符 ord(x)
x為字符榛斯,返回其對(duì)應(yīng)的Unicode編碼 -
字符串處理方法
方法及使用 描述 str.lower()
或str.upper()
返回字符串的副本,全部字符小寫或大寫 str.split(sep=None)
返回一個(gè)列表搂捧,由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變量除最后元素外每個(gè)元素后增加一個(gè)str -
字符串類型的格式化
①槽
②格式控制
4.time庫(kù)的使用
-
time庫(kù)基本介紹:Python中處理時(shí)間的標(biāo)準(zhǔn)庫(kù)
①計(jì)算機(jī)時(shí)間的表達(dá)
②提供獲取系統(tǒng)時(shí)間并格式化輸出功能
③提供系統(tǒng)級(jí)精確計(jì)時(shí)功能允跑,用于程序性能分析
-
時(shí)間獲取
函數(shù) 描述 time()
獲取當(dāng)前時(shí)間戳王凑,即計(jì)算機(jī)內(nèi)部時(shí)間值,浮點(diǎn)數(shù) ctime()
獲取當(dāng)前時(shí)間并以易讀方式表示聋丝,返回字符串 gmtime()
獲取當(dāng)前時(shí)間索烹,表示為計(jì)算機(jī)可處理的時(shí)間格式 -
時(shí)間格式化
①格式化函數(shù)
函數(shù) 描述 strftime(tpl,ts)
tpl是格式化模板字符串,用來(lái)定義輸出效果弱睦;<br />ts是計(jì)算機(jī)內(nèi)部時(shí)間類型變量<br />變成字符串百姓; strptime(str,tpl)
str是字符串形式的時(shí)間值;<br />tpl是格式化模板字符串况木,用來(lái)定義輸入效果<br />變成計(jì)算機(jī)可處理的時(shí)間格式 ②格式化控制符
格式化字符串 | 日期/時(shí)間說(shuō)明 | 值范圍和實(shí)例 |
---|---|---|
%Y |
年份 | 0000~9999,例如:1900 |
%m |
月份 | 01-12垒拢,例如:10 |
%B |
月份名稱 | January-December,例如:April |
%b |
月份名稱縮寫 | Jan-Dec,例如:Apr |
%d |
日期 | 01-31火惊,例如:25 |
%A |
星期 | Monday-Sunday求类,例如:Wednesday |
%a |
星期縮寫 | Mon-Sun,例如屹耐,Wed |
%H |
小時(shí)(24h制) | 00-23仑嗅,例如:12 |
%I |
小時(shí)(12h制) | 01-12,例如:7 |
&p |
上/下午 | AM张症,PM仓技,例如:PM |
%M |
分鐘 | 00-59,例如:26 |
%S |
秒 | 00-59俗他,例如脖捻,26 |
-
程序計(jì)時(shí)
函數(shù) 描述 perf_counter()
返回一個(gè)CPU級(jí)別的精確使勁計(jì)數(shù)值,單位為秒兆衅;<br />由于這個(gè)計(jì)數(shù)值起點(diǎn)不確定地沮,連續(xù)調(diào)用差值才有意義 sleep(s)
s是擬休眠的時(shí)間,單位是秒羡亩,可以是浮點(diǎn)數(shù)
5. 實(shí)例4:文本進(jìn)度條
描述:采用字符串方式打印可以動(dòng)態(tài)變化的文本進(jìn)度條摩疑,進(jìn)度條需要能在一行中逐漸變化
import time
scale=50
print('執(zhí)行開(kāi)始'.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('執(zhí)行結(jié)束'.center(scale//2,'-'))
三、練習(xí)
1. 實(shí)例3:天天向上的力量
同上
2.實(shí)例4:文本進(jìn)度條
同上
3.三次方格式化
描述:獲得用戶輸入的一個(gè)數(shù)字畏铆,可能是整數(shù)或浮點(diǎn)數(shù)雷袋,a,計(jì)算a的三次方值辞居,并打印輸出楷怒。
輸出結(jié)果采用寬度20個(gè)字符蛋勺、居中輸出、多余字符采用減號(hào)(-)填充鸠删。
如果結(jié)果超過(guò)20個(gè)字符抱完,則以結(jié)果寬度為準(zhǔn)。
num=input()
print(str(pow(eval(num),3)).center(20,'-'))
4. 星號(hào)三角形
描述:讀入一個(gè)整數(shù)N刃泡,N是奇數(shù)巧娱,輸出由星號(hào)字符組成的等邊三角形,要求:
第1行1個(gè)星號(hào)烘贴,第2行3個(gè)星號(hào)家卖,第3行5個(gè)星號(hào),依次類推庙楚,最后一行共N的星號(hào)。
n=eval(input())
for i in range((n+1)//2):
star='*'*i*2+'*'
print(star.center(n,' '))
5. 愷撒密碼
描述:愷撒密碼是古羅馬愷撒大帝用來(lái)對(duì)軍事情報(bào)進(jìn)行加解密的算法趴樱,它采用了替換方法對(duì)信息中的每一個(gè)英文字符循環(huán)替換為字母表序列中該字符后面的第三個(gè)字符馒闷,即,字母表的對(duì)應(yīng)關(guān)系如下:
原文:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
密文:D E F G H I J K L M N O P Q R S T U V W X Y Z A B C
對(duì)于原文字符P叁征,其密文字符C滿足如下條件:C=(P+3) mod 26
上述是凱撒密碼的加密方法纳账,解密方法反之,即:P=(C-3) mod 26
假設(shè)用戶可能使用的輸入包含大小寫字母azAZ捺疼、空格和特殊符號(hào)疏虫,請(qǐng)編寫一個(gè)程序,對(duì)輸入字符串進(jìn)行愷撒密碼加密啤呼,直接輸出結(jié)果卧秘,其中空格不用進(jìn)行加密處理。使用input()獲得輸入官扣。
w=input()
c=''
for i in w:
o=ord(i)
if (o>=65)&(o<=90):
c=c+chr((o-62)%26+65)
elif (o>=97)&(o<=122):
c=c+chr((o-94)%26+97)
else:
c=c+i
print(c)
四翅敌、測(cè)試
1.選擇題
-
pow(x, 0.5)能夠計(jì)算x的平方根,計(jì)算負(fù)數(shù)的平方根將產(chǎn)生:
A 無(wú)輸出
B ValueError錯(cuò)誤
C 程序崩潰
D 復(fù)數(shù)
>>> pow(-1, 0.5)
(6.123233995736766e-17+1j)
-
以下關(guān)于字符串.strip()方法功能說(shuō)明正確的是:
A 連接兩個(gè)字符串序列
B 去掉字符串兩側(cè)指定字符
C 替換字符串中特定字符
D 按照指定字符分割字符串為數(shù)組
"去掉字符串兩側(cè)指定字符"對(duì)應(yīng)功能是.strip()
"按照指定字符分割字符串為數(shù)組"對(duì)應(yīng)功能是.split()
"替換字符串中特定字符"對(duì)應(yīng)功能是.replace()
"連接兩個(gè)字符串序列"對(duì)應(yīng)功能是+操作符
-
字符串是一個(gè)連續(xù)的字符序列惕蹄,哪個(gè)選項(xiàng)可以實(shí)現(xiàn)打印字符信息的換行蚯涮?
A 使用\n B 使用空格 C 使用“\換行” D 使用轉(zhuǎn)義符\\
換行符\n,與C語(yǔ)言中一致卖陵。
-
val=pow(2,1000)遭顶,請(qǐng)用一行代碼返回val結(jié)果的長(zhǎng)度值。
A 以后均不正確
B len(str(val))
C len(val)
D len(pow(2,1000))
len(str(val))首先通過(guò)str(val)將數(shù)字類型val變成字符串泪蔫,再通過(guò)len()獲得字符串長(zhǎng)度棒旗,即val的數(shù)字個(gè)數(shù)。
-
下面關(guān)于time庫(kù)引用不正確的是撩荣?
A from * import time
B from time import strftime
C from time import *
D import time
from * import time 應(yīng)該是: from time import *嗦哆。
-
哪個(gè)選項(xiàng)不是Python語(yǔ)言的整數(shù)類型谤祖?
A 88 B 0x9a C 0E99 D 0B1010
十進(jìn)制:一般表示
二進(jìn)制:0b 或 0B 開(kāi)頭
八進(jìn)制:0o 或 0O 開(kāi)頭
十六進(jìn)制:0x 或 0X 開(kāi)頭
沒(méi)有0E開(kāi)頭
-
關(guān)于整數(shù)類型的4種進(jìn)制表示,哪個(gè)選項(xiàng)的描述是正確的老速?
A 二進(jìn)制粥喜、八進(jìn)制、十進(jìn)制橘券、十六進(jìn)制
B 二進(jìn)制额湘、四進(jìn)制、八進(jìn)制旁舰、十六進(jìn)制
C 二進(jìn)制锋华、四進(jìn)制、八進(jìn)制箭窜、十進(jìn)制
D 二進(jìn)制毯焕、四進(jìn)制、十進(jìn)制磺樱、十六進(jìn)制
Python不支持四進(jìn)制整數(shù)纳猫。
-
哪個(gè)選項(xiàng)是Python語(yǔ)言%運(yùn)算符的含義?
A x的y次冪
B x與y之商
C x與y之商的余數(shù)
D x與y的整數(shù)商
%是取余數(shù)竹捉,與C語(yǔ)言相同芜辕。
-
哪個(gè)選項(xiàng)是下面代碼的執(zhí)行結(jié)果?
name="Python語(yǔ)言程序設(shè)計(jì)課程" print(name[0],name[2:-2],name[-1])
A P thon語(yǔ)言程序設(shè)計(jì) 課
B P thon語(yǔ)言程序設(shè)計(jì) 程
C P thon語(yǔ)言程序設(shè)計(jì)課 程
D P thon語(yǔ)言程序設(shè)計(jì)課 課
s[N:M]表示對(duì)字符串s的切片操作块差,從N到M侵续,但不包含M。
-
哪個(gè)選項(xiàng)是下面代碼的執(zhí)行結(jié)果憨闰?
s='PYTHON' print("{0:3}".format(s))
A PYTHON
B PYTHON
C PYTH
D PYT
{0:3}表示輸出的寬度是3状蜗,但如果字符串超過(guò)長(zhǎng)度3,則以字符串長(zhǎng)度顯示鹉动。
2.程序設(shè)計(jì)題
- 平方根格式化
描述:獲得用戶輸入的一個(gè)整數(shù)a诗舰,計(jì)算a的平方根,保留小數(shù)點(diǎn)后3位训裆,并打印輸出眶根。
輸出結(jié)果采用寬度30個(gè)字符、右對(duì)齊輸出边琉、多余字符采用加號(hào)(+)填充属百。
如果結(jié)果超過(guò)30個(gè)字符,則以結(jié)果寬度為準(zhǔn)变姨。
a=pow(eval(input()),0.5)
print('{:+>30}'.format('{:.3f}'.format(a)))
- 字符串分段組合
描述:獲得輸入的一個(gè)字符串s族扰,以字符減號(hào)(-)分割s,將其中首尾兩段用加號(hào)(+)組合后輸出
s=input()
print(s.split('-')[0]+'+'+s.split('-')[-1])
【筆記】《python語(yǔ)言程序設(shè)計(jì)》—Python基本語(yǔ)法元素
【筆記】《python語(yǔ)言程序設(shè)計(jì)》—Python基本圖形繪制
【筆記】《python語(yǔ)言程序設(shè)計(jì)》——基本數(shù)據(jù)類型
【筆記】《python語(yǔ)言程序設(shè)計(jì)》——程序的控制結(jié)構(gòu)
【筆記】《python語(yǔ)言程序設(shè)計(jì)》——函數(shù)和代碼復(fù)用
【筆記】《python語(yǔ)言程序設(shè)計(jì)》——組合數(shù)據(jù)類型
【筆記】《python語(yǔ)言程序設(shè)計(jì)》——文件和數(shù)據(jù)格式化