最近系統學習了一遍python基礎知識,學着學着靈光一閃,想到有沒有快速掌握知識的方法。一般正常的邏輯是邊看基礎知識邊練習案例,是一個書由厚變薄的過程。
不過現在節奏這么快,尤其是互聯網公司,排除周末在家看孩子的時間,幾乎沒有時間和精力再進行深度學習,所以這篇文章就誕生了。
本文通過案例入手直接結合python知識點,可以快速掌握python基礎知識點。
案例名稱
- 計算圓形面積
- 輸入字符並倒序輸出
- 猜數字游戲
- 按照詩句格式輸出詩詞
- 統計文本中出現次數最多的10個單詞(txt)
- web頁面元素提取
- 文本進度條
計算圓形面積
知識點:print 結合format()函數實現輸出格式。
固定的公式:
print(<輸出字符串模板>.format(<變量1>,<變量2>,<變量3>))
實現代碼:
r = 25 # 圓的半徑是25
area = 3.1415 * r * r #圓的公式
print(area)
print('{:.2f}'.format(area) ) # 只輸出兩位小數
新手易錯點:
format前的字符串模板格式‘{:.2f}’ 經常會寫錯,其中一個{}對應一個format里面的參數。
輸入字符並倒序輸出
核心思想:找到最后一個元素並輸出。
知識點:
- 輸入使用input函數
- 計算長度使用len()函數
- 輸出函數結尾使用end=’‘,作用在輸出的字符后方添加空字符串
#輸入文本
s=input('請輸入一段文本:')
#計算輸入內容的長度並賦值給i i=len(s)-1
#倒序循環輸出
while i>=0:
print(s[i],end='')
i=i-1
實現效果:代碼可以執行
猜數字游戲
隨機產生一個數字,並判斷輸入的數字和這個隨機數直到猜測成功。
知識點:
- 使用random.randint()函數生成一個隨機數字
- while()循環,當未滿足條件一直執行,滿足條件break跳出循環
- 輸入數字eval函數結合input,將字符串類型轉換成整數
- if 三分支條件判斷,if elif else 格式
實現代碼:
import random
#生成隨機數
a=random.randint(0,1000)
#統計次數
count=0
while True:
number=eval(input('請輸入0到1000之間的一個數:'))
count=count+1
#判斷比較兩個數
if number>a:
print('輸大了')
elif number<a:
print('輸小了')
else:
print('猜對了')
break
print('猜了次數是:',count)
效果圖:代碼可以執行

按照詩句格式輸出詩詞
原來格式:
人生得意須盡歡,莫使金樽空對月。
天生我材必有用,千金散盡還復來。
輸出效果:
人生得意須盡歡
莫使金樽空對月
天生我材必有用
千金散盡還復來
設計思路:
- 將所有標點符號替換為\n
- 文本居中對齊顯示
知識點:
- 替換函數line.replace(變量名,要替換的值)
- 居中對齊line.center(寬度)
- 函數調用,將文本變量txt傳入替換函數linesplit中
txt = '''
人生得意須盡歡,莫使金樽空對月。
天生我材必有用,千金散盡還復來。
'''
#定義一個函數,實現將標點符號替換為\n
def linesplit(line):
plist = [',', '!', '?', ',', '。', '!', '?']
for p in plist:
line=line.replace(p,'\n')
return line.split('\n')
linewidth = 30 # 預定的輸出寬度
#定義一個函數,實現居中對齊
def lineprint(line):
global linewidth
print(line.center(linewidth))
#調用函數
newlines=linesplit(txt)
for newline in newlines:
lineprint(newline)
統計文本中出現次數最多的10個單詞
我們來看看實現效果

步驟拆分:
- 首先,將文本內容統一為小寫,使用lower()函數
- 再次,將文本中特殊字符替換為空格,replace()函數
- 按空格將文本進行切割,使用split()函數
- 統計單詞出現的次數
- 按頻率從大到小排序 sort()函數
- 按照固定格式輸出 ,使用format()函數
按照上面的步驟實現代碼。
首先,將文本內容統一為小寫,使用lower()函數:
def gettxt():
#讀取文件
txt=open('hamlet.txt','r').read()
txt=txt.lower()
再次,將文本中特殊字符替換為空格,replace()函數:
for ch in ''!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~':'
txt=txt.replace('')
return txt
按空格將文本進行切割,使用split()函數:
hmlttxt=gettxt()
words=hmlttxt.split()
統計單詞出現的次數:
counts=0
for word in words:
counts[word]=counts.get(word,0)+1
#對word出現的頻率進行統計,當word不在words時,返回值是0,當word在words中時,返回+1,以此進行累計計數
按頻率從大到小排序 items()sort()排序函數:
items=list(counts.items())
items.sort(key=lambada x:x[1],reverse=True)
上面的x可以是任意字母,reverse=True倒序排序,默認升序。
按照固定格式輸出 ,使用format()函數:
for i in range(10)
word,count=item[i]
print('{0:<10}{1:>5}'.format(word,count))
完整代碼:
# 首先,將文本內容統一為小寫,使用lower()函數
def gettxt():
txt=open('hamlet.txt','r').read()
txt=txt.lower()
# 將文本中特殊字符替換為空格,replace()函數
for ch in '!"#$%&()*+,-./:;<=>?@[\]^_‘{|}~':
txt=txt.replace(ch,'')
return txt
# 按空格將文本進行切割,使用split()函數
hamlettxt=gettxt()
words=hamlettxt.split()
# 統計字數
counts={}
for word in words:
counts[word]=counts.get(word,0)+1
# 按頻率從大到小排序 sort()函數
items=list(counts.items())
items.sort(key=lambda x:x[1],reverse=True)
# 按照固定格式輸出 ,使用format()函數
for i in range(10):
word, count=items[i]
print("{0:<10},{1:>5}".format(word,count))
web頁面元素提取圖片url路徑信息
這個功能目的主要是替換函數 及 自頂向下的設計思想。
實現的效果:

對整個功能拆分為如下過程:
- 首先,提取頁面所有元素
- 其次,提取圖片的url路徑
- 然后,將路徑信息輸出顯示
- 最后,將這些路徑保存到文件中
我們把上面幾個步驟,每個步驟封裝成一個函數,最后main()函數進行調用,其中提取圖片的url路徑為核心。
- 提取頁面所有元素
涉及到知識點:文件打開、讀取及關閉。
def gethtmllines(htmlpath): #文件打開 f=open(r,'htmlpath',encoding='utf-8') #文件讀取 ls=f.readlines() #文件關閉 f.close() return ls
- 提取圖片的url路徑
源碼:

知識點:
- 列表形式存放截取后的地址
- 列表的切割,split()函數
def geturl(ls):
urls=[]
for line in ls:
if 'img' in line:
url=line.split('src=')[-1].split('"')[1]
urls.append(url)
- 將路徑信息輸出顯示
知識點:for循環將路徑信息輸出。
for循環將路徑信息輸出 def show(urls): count=0 for url in urls: print('第{:2}個url{}'.format(count,url)) count+=1
- 將這些路徑保存到文件中
知識點:文件的寫入。
def save(filepath,urls):
f=open(filepate,'w')
for url in urls:
f.write(url+'\n')
f.close()
- main()函數,將上面的函數進行組合
def main():
inputfile = 'nationalgeographic.html'
outputfile = 'nationalgeographic-urls.txt'
htmlLines = getHTMLlines(inputfile)
imageUrls = extractImageUrls(htmlLines)
showResults(imageUrls)
saveResults(outputfile, imageUrls)
最終代碼:python
# Example_8_1.py
#1. 按行讀取頁面所有內容
def getHTMLlines(htmlpath):
f = open(htmlpath, "r", encoding='utf-8')
ls = f.readlines()
f.close()
return ls
#2. 提取http路徑
def extractImageUrls(htmllist):
urls = []
for line in htmllist:
if 'img' in line:
url = line.split('src=')[-1].split('"')[1]
print
if 'http' in url:
urls.append(url)
return urls
#3. 輸出鏈接地址
def showResults(urls):
count = 0
for url in urls:
print('第{:2}個URL:{}'.format(count, url))
count += 1
#4. 保存結果到文件
def saveResults(filepath, urls):
f = open(filepath, "w")
for url in urls:
f.write(url+"\n")
f.close()
def main():
inputfile = 'nationalgeographic.html'
outputfile = 'nationalgeographic-urls.txt'
htmlLines = getHTMLlines(inputfile)
imageUrls = extractImageUrls(htmlLines)
showResults(imageUrls)
saveResults(outputfile, imageUrls)
main()
一句話總結:這個小案例可熟練掌握文件的讀、寫操作,可以體會函數的思想以及split()函數的拆分。
文本進度條
知識點:
- 引入time庫
- print()輸出格式
- 其中運用到了for i in range():循環,在循環末尾通過format函數,將其內的值賦予槽中。
實現代碼:
import time
def bar(scale):
print('===========執行開始============')
for i in range(scale + 1):
a = '*' * i
b = '.' * (scale - i)
c = (i / scale) * 100
print('\r{:^3.0f}%[{}->{}]'.format(c, a, b), end = '')
time.sleep(0.1)
print('\n===========執行結束============')
效果圖:從0%輸出到100%
總結
上面主要介紹了python的基礎功能,建議大家熟練掌握,主要知識點如下:
- input函數實現輸入
- print結合format()函數對結果進行輸出
- 計算字符串長度len()函數
- 使用random.randint()函數生成隨機數字
- eval函數結合input,將字符串類型轉換成整數
- if 三分支條件判斷,if elif else 格式
- 替換函數line.replace(變量名,要替換的值)
- 文本內容統一為小寫,使用lower()函數
- 文本中特殊字符替換為空格,replace()函數
- 文本進行切割,使用split()函數
- 從大到小排序 sort()函數
軟件測試人員為什么選擇學習Python不是Java
Python 語法簡潔而清晰,並具有豐富和強大的類庫,可以輕易實現很多功能。對於初學編程者來說,Python 是最好的入門語言,沒有之一。如果你是想完成公司里面的自動化測試的整體部署,那么,Python可以幫你輕松實現:
- UI自動化測試(Python+Selenium等)
- 接口測試(Python requests等)
- 性能測試(Python Locust等)
- 安全性測試(Python Scapy等)
- 兼容性測試(Python+Selenium等)
想象一下,當別人還在苦逼點點點,忙忙碌碌,加班加點的時候,你能吃着火鍋唱着歌,站着就把錢賺了……
你心里會是什么感受?
老板對你又會是什么感受?
收藏時間
python自動化測試專屬視頻、Python自動化詳細資料、全套面試題等知識內容。大家有需要可以【拉到公告處查看領取方式】,希望能夠在自學的道路上幫到你。
- ✔️如果這篇文章對你有用,記得點個贊👍🏻加個關注,你的每一個點贊我都認真的當成了喜歡~
- ✔️我們下期見!👋👋👋
