為了讓你們10分鍾入門Python,我花5小時寫了7個案例和這篇文章!!!


最近系統學習了一遍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 開發小工具,編寫速度快且非常輕量級,實際工作當中,非常適合團隊在測試資源不充足的情況下,快速開發測試工具。而且通常實現一個功能,Python 的代碼量是別的語言如 Java 的 1/3-1/5。目前,越來越多大廠新工具的開發,技術棧都選擇了 Python。因此,通過掌握 Python 自動化測試技術進入軟件測試和質量保障領域,已經是測試行業新人的入行路徑最佳選擇。

如果你是想完成公司里面的自動化測試的整體部署,那么,Python可以幫你輕松實現:

  • UI自動化測試(Python+Selenium等)
  • 接口測試(Python requests等)
  • 性能測試(Python Locust等)
  • 安全性測試(Python Scapy等)
  • 兼容性測試(Python+Selenium等)

想象一下,當別人還在苦逼點點點,忙忙碌碌,加班加點的時候,你能吃着火鍋唱着歌,站着就把錢賺了……

你心里會是什么感受?

老板對你又會是什么感受?

收藏時間

python自動化測試專屬視頻、Python自動化詳細資料、全套面試題等知識內容。大家有需要可以【拉到公告處查看領取方式】,希望能夠在自學的道路上幫到你。

  • ✔️如果這篇文章對你有用,記得點個贊👍🏻加個關注,你的每一個點贊我都認真的當成了喜歡~
  • ✔️我們下期見!👋👋👋


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM