Python25道練習題及詳細答案解析,爆肝八小時總結

2021-04-15 05:00:01

Python25道題

1.使用字串的格式化輸出完成以下名片的顯示

==========我的名片==========
姓名: itheima   
QQ:xxxxxxx
手機號:185xxxxxx
公司地址:北京市xxxx
===========================

答案解析:

# 剛開始會基本使用print即可
print("==========我的名片==========")
print("姓名: itheima")
print("QQ:xxxxxxx")
print("手機號:185xxxxxx")
print("公司地址:北京市xxxx")
print("===========================")

在這裡插入圖片描述

2.使用字串的格式化輸出完成以下名片的顯示

==========我的名片==========
姓名: itheima   
QQ:xxxxxxx
手機號:185xxxxxx
公司地址:北京市xxxx
===========================

答案解析:

# 現在學習了格式化,我們做練習主要是練習格式化
# 我們要格式的有4個一個是姓名 一個是QQ 一個是手機號 一個是地址 上下2個邊緣是固定格式

#1. 定義4個變數分別儲存4個要格式化的資料
name = "itheima"
QQ = "12345678"
phone = "1388888888"
address = "北京市xxxx"

# 2. 進行格式化輸出
# 列印上邊框
print("==========我的名片==========")
# 格式化4個變數,這裡面使用了f-string方式進行的格式化,同學們也可以使用其他的格式化方式
print(f"姓名: {name}")
print(f"QQ: {QQ}")
print(f"手機號: {phone}")
print(f"地址: {address}")
#列印下邊框
print("===========================")

3.程式設計實現:使用者在鍵盤中輸入自己的名字,例如「張三」,終端列印「你好,張三」

答案解析:

# 這裡讓我們練習input方法 所以使用input接收使用者輸入即可
# 接收輸入的名字
name = input("請輸入自己的姓名:")
# 列印名字
print(name)

4.判斷下面的程式碼是否寫的正確,如果不正確,請修改程式碼,然後執行程式碼。

int = 100
a = "200"
b = int(a)
print(b)

答案解析:

# 這裡考察的是我們對變數的認知
# python中的內建方法是一個變數你可以對其賦值,但是賦值後就不能再次當方法使用了
# 修改只需要把第一行程式碼去掉即可

#int = 100  #錯誤 對內建方法進行了賦值,導致後面int方法不能使用
a = "200"
b = int(a)
print(b)

5.編寫程式,從鍵盤獲取使用者名稱和密碼,然後判斷,如果正確就輸出以下資訊: 「歡迎來到博學谷!」

答案解析:

# 這裡面考察2個知識點 一個是input 一個是if判斷
# 從鍵盤獲取使用者名稱和密碼
name = input("請輸入使用者名稱:")
password = input("請輸入密碼:")
# and 連線2個判斷語句 表示2個都要相等
if name=="MrSun" and password=="123456":
    print("歡迎來到博學谷")

在這裡插入圖片描述

6.編寫程式碼設計簡易計算器,可以進行基本的加減乘除運算。

答案解析:

# 這裡考察的就是我們條件判斷
# 我們現實中+-*/是讓使用者來選擇的,那麼我們根據使用者的選擇的操作 執行對應的行為
# 注意input 返回的都是字串記得把數位轉int型別
num1 = int(input("請輸入第一個數位: "))
opt = input("請輸入你要執行的操作(+ - * /): ")
num2 = int(input("請輸入第二個個數位: "))

# 注意判斷的時候是雙等號
if opt=="+":
    # 使用f-string格式化,效果: 1 + 2 = 3
    print(f"{num1} {opt} {num2} = {num1+num2}")
elif opt=="-":
    print(f"{num1} {opt} {num2} = {num1-num2}")
elif opt=="*":
    print(f"{num1} {opt} {num2} = {num1*num2}")
elif opt=="/":   
    print(f"{num1} {opt} {num2} = {num1/num2}")
else:
    print("你要執行的操作無效!")

7.考試成績的問題:提示使用者輸入成績,判斷是屬於哪個水平,將結果列印到控制檯。60以下不及格,60分以上為及格,70分至80分為合格,80分至90分為良好,90分以上為優秀。

答案解析:

# 與上面的計算器類似 主要考察input 以及 多分支判斷
# 從鍵盤獲取分數,input 返回的是字串記得轉化成int
score = int(input("請輸入你的成績: "))
# 多分支判斷成績屬於哪個檔次
if score<60:
    print("不及格")
elif 60<=score<70:
    print("及格")
elif 70<=score<80:
    print("合格")
elif 80<=score<90:
    print("良好")
else:
    print("優秀")

8. 使用while列印如下圖形

[外連圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片儲存下來直接上傳(img-ajdVefqt-1618231917630)(assets/1571987776670.png)]

答案解析:

# 星號先遞增值5個,然後再遞減至5個
# 可以考慮使用一個標誌來控制星號的增加加和減少
# 字串可以使用乘法 '*'*5 表示 星號重複5次


#初始要列印的星號個數
num = 1
# 設定一個標誌,如果true 表示要星號增加
flag = True

# 星號小於0的時候退出迴圈
while num>0:
    # 列印星星
    print("*"*num)
    # 如果星號已經到5,更改flag,下次迴圈要開始減少星星
    if num==5:
        flag = False
        
    # 如果flag 為true 說明星號是遞增,
    if flag:
        num+=1
     
    # flag為false 說明星號開始遞減
    else:
        num-=1

9.使用for迴圈,依次列印字串"abcdef"中的每個字元。

答案解析:

# 考察for range的用法
pstr = "abcdef"
for s in pstr:
    print(s)

在這裡插入圖片描述

10.請將a字串反轉並輸出。例如:‘abc’的反轉是’cba’

答案解析:

a = "abcd"
# 方法一 使用while逆向遍歷
# 獲取字串最大的下標
index = len(a)-1
while lg>0:
    print(a[index])
    # 下標遞減
    index-=1

# 方法二使用切片
a = [::-1]
print(a)

11.把[1,2,3,4]轉換成"1234"

答案解析:

# 考察列表遍歷,考察整數轉字串,考慮字串拼接
l = [1,2,3,4]
# 定義空字串用於拼接字串
result = ""
# 遍歷列表元素
for num in l:
    # 把整數轉成字串然後拼接到result
    result+=str(num) 
# 列印結果
print(result)

12.程式設計實現 把一個元素全為數位的列表中的所有偶數加1

答案解析:

# 考察列表遍歷,以及列表元組值修改
# 遍歷可以使用for range 或者while,但是涉及到修改需要使用下標,所以採用while 加下標的方式

l = [1,2,3,4,5,6]
# 定義下標, 初始為0
index = 0

# 迴圈遍歷列表元素,直至到最後一個值
while index<len(l):
    # 判斷如果是偶數,對這個元素加1
    if l[index]%2==0:
        l[index]+=1
    # 下標向後移動
    index+=1

13. test = (「a」,「b」,「c」,「a」,「c」) ,統計元祖中每個元素出現的次數把最終的結果儲存到列表中,例如[(‘a’,1),(‘b’,3),(‘c’,5)]。

答案解析:

# 考察元組遍歷,列表元素新增,列表元素判斷,元組元素統計

test = ("a","b","c","a","c") 

# 定義列表用於儲存統計結果
result = []

for s in test:
    # 統計元素個數
	cnt = test.count(s)
   	
    # 把統計結果拼接成('a',1)這樣的格式
    tmp = (s,cnt)
    
    # 判斷這個元素是否已統計過,如果已經在結果中說明這個元素就統計過了 繼續下一個元素
    if tmp in result:
        continue
    else:
        result.append(tmp)
# 列印統計結果 
print(result)

14.題目描述

在控制檯輸入 3 組個人資訊,每個人有姓名和年齡,將資訊存入字典中,將字典存入列表。

遍歷列表,列印每個人的資訊,列印格式如下:

1 張三 20

2 李四 22

3 王五 23

答案解析:

# 考察input方法,考察enumerate方法,以及字串格式化, 考察while迴圈

# 定義一個列表用於儲存所有的使用者資訊
users = []
# 定義迴圈因子
i = 0
while i<3:
    name = input("請輸入姓名: ")
    # age 整數記得要轉化
    age = int(input("請輸入年齡"))
    # 把使用者資訊構造成字典,新增到列表中
    users.append({"name":name,'age':age})

# 遍歷列印使用者資訊,因為要列印編號,可以考慮使用enumerate
# 注意: enumerate 方法返回的是元素,我們需要用2個變數接收,一個是編號,一個是元素
for thnum,user in enumerate(users,start=1):
    # 使用f-string快速格式化
    print(f"{thnum} {user['name']} {user['age']}")
    
    
# 如果還沒學習enumerate,可以使用一個變數來表示序號
# 定義序號起始為1
thnum = 1
for user in users:
	print(f"{thnum} {user['name']} {user['age']}")
    # 記得把序號加1
	thnum+=1
    

在這裡插入圖片描述

15.已知字串 test = 「aAsmr3idd4bgs7Dlsf9eAF」,將字串中的數位取出,生成一個新的字串

答案解析:

# 1. 要想提取數位字元,我們需要遍歷字串
# 2. 需要知道如何判斷一個字元是否是數位,數位是有0123456789 中的字元構成,如果字元在這裡面是不是就表示這個是數位呢
# 3. 把是數位的字元拼接到一起

test = "aAsmr3idd4bgs7Dlsf9eAF"

# 定義一個變數接收數位字元
result = ""
for s in test:
    # 如果s在後面的字串中說明這個字元是數位字元
    if s in "0123456789":
        # 把數位字元添拼接到結果中
        result+=s
# 列印結果
print(result)

16.現有字串 msg = 「hel@#KaTeX parse error: Undefined control sequence: \nhon at position 8: lo pyt \̲n̲h̲o̲n̲ ̲ni\t hao%」 ,去掉所有不是英文字母的字元,列印結果:「請理以後的結果為:hellopythonnihao」

答案解析:

# 1. 因為要處理每個字元,所以需要遍歷字元
# 2. 如果判斷一個字元是不是英文字母,我們字串本身就有方法可以判斷 isalpha 方法
# 3. 把英文單詞拼接到一起就是我們要的
msg = "hel@#$lo pyt \nhon ni\t hao%$" 
# 儲存結果
result = ""
# 迴圈遍歷字元
for s in msg:
    # 判斷當前字元是否是字母
    if s.isalpha():
        # 把字元新增到結果中
        result+=s
# 列印最後的結果      
print(result)

17.程式碼題目

定義函數findall,要求返回符合要求的所有位置的起始下標,如字串"helloworldhellopythonhelloc++hellojava",

需要找出裡面所有的"hello"的位置,返回的格式是一個元組,即:(0,10,21,29)

答案解析:

#1. 因為要查詢位置,所以要遍歷字串
#2. 因為要查詢多個字元,所以需要使用切邊提取固定的字元
#3. 把查詢到的位置儲存到結果列表中
#4. 題目要求是個元組所以再轉化成元組

# src: 原始字串,dst: 要查詢的字串
def findall(src, dst):
    # 獲取字元長度,用去擷取字元
    lg = len(dst)
    # 儲存查詢的下標
    res = []
    # 遍歷字元通過下標
    for index in range(lg):
        # 擷取與dst相同的字元如果相等說明 位置ok
        if src[index:index + lg] == dst:
            # 把當前位置新增到結果集中
            res.append(index)

    # 把結果轉化成元組返回
    return tuple(res)


s = "helloworldhellopythonhelloc++hellojava"
print(findall(s, 'hello'))

18.程式碼題

定義一個函數 sum_test 接收一個引數 n ,在函數中計算 1 + 2 + 3 + … + n 的值,並列印結果。

答案解析:

def sum_test(n):
    # 儲存結果
    sum = 0
    # 迴圈因子
    i = 1
    #迴圈累加
    while i<=n:
        # 累加結果
        sum+=i
        # 增加回圈因子
        i+=1
    print(sum)
    
num = 10
sun_test(num)

19.程式碼題目

使用不定長引數定義一個函數max_min,接受的引數型別是數值,最終返回這些數中的最大值和最小值

答案解析:

# 考察不定長引數定義,與傳遞,以及遍歷求大小值
def max_min(*args):
    # 定義最大、最小值,把元素的第一個值作為最大值與最小值,然後與後面的其他值比較
    max = args[0]
    min = args[0]
    for num in args:
        # 如果max 小於num 那麼max更新為num
        if max<num:
            max = num
        # 如果min 大於num說明num小,則更新min
        if min>num:
            min = num
            
    return max,min

max,min = max_min(5,2,7,1,7,8,9,10)
print(f'max = {max},min = {min}')

在這裡插入圖片描述

20.程式碼題

把一個檔案中的內容,複製到另外一個檔案中。

答案解析:

# src 原始檔路徑,dst目標檔案路
def copy(src,dst):
    # 開啟src檔案
    # 讀的方式開啟src
    fr = open(src,'r')
    # 寫的方式開啟dst
    fw = open(dst,'w')
    # 把src的內容寫入到dst中
    fw.write(fr.read())
    # 關閉檔案
    fr.close()
    fw.close()
    print('檔案拷貝完成')
    
copy("1.txt",'2.txt')

21.程式碼題

使用os模組,把資料夾中的所有檔案重新命名。例如,當前test目錄下所有的檔名開頭新增new_這個字串。

答案解析:

# 檔案分為2類一個是檔案一個是目錄
# 處理的時候需要判斷是檔案還會目錄

import os
#file_dir 要重新命名那個資料夾下面的檔案
def rename(file_dir):
    # 獲取當前檔案下面的所有檔案【包含目錄和檔案】
    files = os.listdir(file_dir)
   
    # 遍歷獲取所有檔案與目錄
    for file in files: 
        # 拼接獲取完整的檔案路徑 
        filename = os.path.join(file_dir,file)
        # 判斷如果是檔案則重新命名
        if os.path.isfile(filename):
            # 獲取完成的新的檔案路徑名字
            new_name = os.path.join(file_dir,"new_"+file)
            os.rename(filename,new_name)
        else: # 如果不是檔案說明是個目錄
           #如果是目錄則遞迴呼叫繼續 對子目錄中的檔案進行重新命名
           rename(filename) 
# 測試
rename('D:\test')

22.程式碼題

定義一個水果類,然後通過水果類,建立蘋果物件、橘子物件、西瓜物件並分別新增屬性:顏色和價格

答案解析:

#  1.我們要區分是水果,需要有一個水果型別
#  2. 顏色和價格是物件屬性
#  3. 魔法方法__str__ 便於格式化列印物件
class Fruit():
    def __init__(self, fruit_type):
        # 建立的時候指定建立什麼型別的水果
        self.type = fruit_type
        self.color = None
        self.price = None
    # 設定顏色   
    def Set_color(self,color):
        self.color = color
    # 設定價格
    def Set_price(self,price):
        self.price = price
        
    def __str__(self):
        if self.color is None or  self.price is None:
            return "水果價格和顏色沒有設定!"
       	else:
            return f'{self.type}: color--{self.color} price--{self.price}元 '

# 建立蘋果
apple = Fruit("蘋果")
apple.Set_color('red')
apple.Set_price(5)
print(apple)

# .... 其他自己建立

23.程式碼題

定義一個電腦類,電腦有品牌,有價格,能放電影。分別建立2個物件"聯想電腦" 和 「蘋果電腦」。呼叫放電影的動作,聯想電腦播放 電影"葫蘆娃",蘋果電腦播放"黑貓警長"。

答案解析:

# 1. 電腦類,為了區別種類我們需要有一個 電腦型別type
# 2. 電腦能播放電影,有play方法,電影因為不屬於電腦的,所以我們可以把電影當成引數傳遞

class Computer():
    def __init__(self,ctype):
        # 初始化電腦的型別,例如聯想
        self.type = ctype
    # 播放電影的行為   
    def play(self,film):
        print(f"{self.type} 播放了 {film}!")
    
    
levoe = Computer("聯想")
levoe.play("貓和老鼠")

# 其他電腦自己建立

24.程式碼題

編寫一段程式碼以完成下面的要求:

  1. 定義一個Person類,類中要有初始化方法,方法中要有人的姓名和年齡屬性

  2. 將類中的姓名是公有屬性,年齡是私有屬性.

  3. 提供獲取私有屬性的公有方法 get_age方法.

  4. 提供可以設定私有屬性的方法 set_age方法,要求如果輸入的年齡在 0 – 100 之間,設定年齡,否則,提示輸入不正確,.

  5. 重寫 str 要求列印物件時,把 姓名和年齡都列印出來。

答案解析:

class Person():
    def __init__(self, name,age):
        # 建立的時候指定建立什麼型別的水果
        self.name = name
        # 私有屬性
        self.__age = age
        
    # 獲取年齡,因為年齡是私有屬性所以要提供物件的方法獲取
    def Get_age(self):
        return self.__age
    # 設定年齡,因為年齡是私有屬性所以要提供物件的方法進行修改
    def Set_age(self,age):
        self.__age = age
        
    # 重新__str__ 便於列印格式化
    def __str__(self):
        return f'name: {self.name}, age:{self.__age}'

# 測試程式碼
laowang = Person('laowang',50)
print(laowang)
laowang.Set_age(60)
print(laowang.Get_age())
print(laowang)

在這裡插入圖片描述

25.程式碼題

【程式碼題】

按照如下的要求編寫程式碼:

- 定義 input_password 函數,提示使用者輸入密碼

- 如果使用者輸入長度 < 8,丟擲異常

- 如果使用者輸入長度 >=8,返回輸入的密碼

答案解析

# 無引數,返回使用者校驗後的面
def input_password():
    password = input("請輸入密碼: ")
    if len(password)<8:
        # 如果密碼長度小於8位元 丟擲異常
        raise Exception("密碼長度至少8位元")
    else:
        return password
    
input_password()

以上分享是我學過程中看了很多的教學之後篩選出來的適合新手快速學python的教學,少即是多,按照教學方向,入們門到精通不是問題。如果你也想掌握一門門技能就從現在開始學讓自己變得更好吧。通通無償分享給你們!免費自取!●:關十後臺call「學習」●:評論:Python。