大家好,我是辣條,
今天給大家整理一些Python練習題【含答案決議】,可以自己先嘗試做一下,再和文末的答案決議核對,希望能幫助到你,
練習題
1.使用字串的格式化輸出完成以下名片的顯示
==========我的名片==========
姓名: itheima
QQ:xxxxxxx
手機號:185xxxxxx
公司地址:北京市xxxx
===========================
2.使用字串的格式化輸出完成以下名片的顯示
==========我的名片==========
姓名: itheima
QQ:xxxxxxx
手機號:185xxxxxx
公司地址:北京市xxxx
===========================
3.編程實作:用戶在鍵盤中輸入自己的名字,例如“張三”,終端列印“你好,張三”
4.判斷下面的代碼是否寫的正確,如果不正確,請修改代碼,然后執行代碼,
int = 100
a = "200"
b = int(a)
print(b)
5.撰寫程式,從鍵盤獲取用戶名和密碼,然后判斷,如果正確就輸出以下資訊: "歡迎來到博學谷!"
6.撰寫代碼設計簡易計算器,可以進行基本的加減乘除運算,
7.考試成績的問題:提示用戶輸入成績,判斷是屬于哪個水平,將結果列印到控制臺,60以下不及格,60分以上為及格,70分至80分為合格,80分至90分為良好,90分以上為優秀,
8. 使用while列印如下圖形
9.使用for回圈,依次列印字串"abcdef"中的每個字符,
10.請將a字串反轉并輸出,例如:'abc'的反轉是'cba'
11.把[1,2,3,4]轉換成"1234"
12.編程實作 把一個元素全為數字的串列中的所有偶數加1
13. test = ("a","b","c","a","c") ,統計元祖中每個元素出現的次數把最終的結果保存到串列中,例如[('a',1),('b',3),('c',5)],
14.題目描述
在控制臺輸入 3 組個人資訊,每個人有姓名和年齡,將資訊存入字典中,將字典存入串列,
遍歷串列,列印每個人的資訊,列印格式如下:
1 張三 20
2 李四 22
3 王五 23
15.已知字串 test = "aAsmr3idd4bgs7Dlsf9eAF",將字串中的數字取出,生成一個新的字串
16.現有字串 msg = "hel@#$lo pyt \nhon ni\t hao%$" ,去掉所有不是英文字母的字符,列印結果:"請理以后的結果為:hellopythonnihao"
17.代碼題目
定義函式findall,要求回傳符合要求的所有位置的起始下標,如字串"helloworldhellopythonhelloc++hellojava",
需要找出里面所有的"hello"的位置,回傳的格式是一個元組,即:(0,10,21,29)
18.代碼題
定義一個函式 sum_test 接收一個引數 n ,在函式中計算 1 + 2 + 3 + ... + n 的值,并列印結果,
19.代碼題目
使用不定長引數定義一個函式max_min,接受的引數型別是數值,最侄訓傳這些數中的最大值和最小值
20.代碼題
把一個檔案中的內容,復制到另外一個檔案中,
21.代碼題
使用os模塊,把檔案夾中的所有檔案重命名,例如,當前test目錄下所有的檔案名開頭添加new_這個字串,
22.代碼題
定義一個水果類,然后通過水果類,創建蘋果物件、橘子物件、西瓜物件并分別添加屬性:顏色和價格
23.代碼題
定義一個電腦類,電腦有品牌,有價格,能放電影,分別創建2個物件"聯想電腦" 和 "蘋果電腦",呼叫放電影的動作,聯想電腦播放 電影"葫蘆娃",蘋果電腦播放"黑貓警長",
24.代碼題
撰寫一段代碼以完成下面的要求:
定義一個Person類,類中要有初始化方法,方法中要有人的姓名和年齡屬性
將類中的姓名是公有屬性,年齡是私有屬性.
提供獲取私有屬性的公有方法 get_age方法.
提供可以設定私有屬性的方法 set_age方法,要求如果輸入的年齡在 0 -- 100 之間,設定年齡,否則,提示輸入不正確,.
重寫 str 要求列印物件時,把 姓名和年齡都列印出來,
25.代碼題
【代碼題】
按照如下的要求撰寫代碼:
- 定義 input_password 函式,提示用戶輸入密碼
- 如果用戶輸入長度 < 8,拋出例外
- 如果用戶輸入長度 >=8,回傳輸入的密碼
答案決議
1.答案決議:
# 剛開始會基本使用print即可
print("==========我的名片==========")
print("姓名: itheima")
print("QQ:xxxxxxx")
print("手機號:185xxxxxx")
print("公司地址:北京市xxxx")
print("===========================")
2.答案決議:
# 現在學習了格式化,我們做練習主要是練習格式化
# 我們要格式的有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.答案決議:
# 這里考察的是我們對變數的認知
# 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.答案決議:
# 與上面的計算器類似 主要考察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.答案決議:
# 星號先遞增值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 range的用法
pstr = "abcdef"
for s in pstr:
print(s)
10.答案決議:
a = "abcd"
# 方法一 使用while逆向遍歷
# 獲取字串最大的下標
index = len(a)-1
while lg>0:
print(a[index])
# 下標遞減
index-=1
?
# 方法二使用切片
a = [::-1]
print(a)
11.答案決議:
# 考察串列遍歷,考察整數轉字串,考慮字串拼接
l = [1,2,3,4]
# 定義空字串用于拼接字串
result = ""
# 遍歷串列元素
for num in l:
# 把整數轉成字串然后拼接到result
result+=str(num)
# 列印結果
print(result)
12.答案決議:
# 考察串列遍歷,以及串列元組值修改
# 遍歷可以使用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")
?
# 定義串列用于存盤統計結果
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.答案決議:
# 考察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.答案決議:
# 1. 要想提取數字字符,我們需要遍歷字串
# 2. 需要知道如何判斷一個字符是否是數字,數字是有0123456789 中的字符構成,如果字符在這里面是不是就表示這個是數字呢
# 3. 把是數字的字符拼接到一起
?
test = "aAsmr3idd4bgs7Dlsf9eAF"
?
# 定義一個變數接收數字字符
result = ""
for s in test:
# 如果s在后面的字串中說明這個字符是數字字符
if s in "0123456789":
# 把數字字符添拼接到結果中
result+=s
# 列印結果
print(result)
16.答案決議:
# 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.答案決議:
#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))
18.答案決議:
def sum_test(n):
# 保存結果
sum = 0
# 回圈因子
i = 1
#回圈累加
while i<=n:
# 累加結果
sum+=i
# 增加回圈因子
i+=1
print(sum)
num = 10
sun_test(num)
19.答案決議:
# 考察不定長引數定義,與傳遞,以及遍歷求大小值
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.答案決議:
# 檔案分為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.答案決議:
# 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.答案決議:
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.答案決議
# 無引數,回傳用戶校驗后的面
def input_password():
password = input("請輸入密碼: ")
if len(password)<8:
# 如果密碼長度小于8位 拋出例外
raise Exception("密碼長度至少8位")
else:
return password
input_password()

往期精彩推送
我用Python修改了班花的開機密碼,重新登錄后竟然發現了她的秘密!
我用Python采集了班花的空間資料集,除了美照竟然再一次發現了她另外的秘密!
室友單戀班花失敗,我爬了一個網站發給他瞬間治愈,男人的快樂就這么簡單【每天一遍,忘記初戀】
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/291491.html
標籤:python
