Python實戰10-19例:列表、字典、循環等綜合訓練

筆者:風起怨江南 出處:https://blog.csdn.net/JackMengJin 原創文章轉載請註明出處。如果喜歡請點贊+關注,感謝支持!

《Python實戰系列》所有實例訓練題都是從Python各個知識點精挑細選出來的,希望能對大家有所幫助。

Python實戰系列每週不定時更新,想看上一期實戰訓練的朋友請點擊=>傳送門。不多廢話,直接上乾貨!

 

目錄

10.刪除列表元素

11.修改列表

12.判斷可變和不可變的數據類型

13.元素去重和刪除

14.數據類型轉換字典

15.利用判斷計算價格

16.判斷是否爲閏年

17.求數字最大值

18.使用for打印九九乘法表

19.循環刪除元素


 

Python實戰10-19例:列表、字典、循環等綜合訓練

10.刪除列表元素

刪除列表中的"不明飛行物",寫出 2 種或以上方法:

info = ["Carter", 45, "男", "不明飛行物", ["高", "富", "帥"], True, None, "狼的眼睛是啥樣的"]

#方法1 pop()
info = ["Carter", 45, "男", "不明飛行物", ["高", "富", "帥"], True, None, "狼的眼睛是啥樣的"]
print('打印原先列表:\n',info)
info.pop(3)
print('方法1 利用pop()函數刪除,刪除後的列表內容:\n',info)

#方法2 remove()
info = ["Carter", 45, "男", "不明飛行物", ["高", "富", "帥"], True, None, "狼的眼睛是啥樣的"]
info.remove('不明飛行物')
print('方法2 利用remove()函數刪除,刪除後的列表內容:\n',info)

#方法3 del語句
info = ["Carter", 45, "男", "不明飛行物", ["高", "富", "帥"], True, None, "狼的眼睛是啥樣的"]
del info[3]
print('方法3 利用del語句,刪除後的列表內容:\n',info)

#方法4 列表分片
info = ["Carter", 45, "男", "不明飛行物", ["高", "富", "帥"], True, None, "狼的眼睛是啥樣的"]
info1 = info[:3]
info2 = info[4:]
print('方法4 利用列表重新拼接,不包括要刪除的元素,刪除後的列表內容:\n',info1 + info2)
打印原先列表:
 ['Carter', 45, '男', '不明飛行物', ['高', '富', '帥'], True, None, '狼的眼睛是啥樣的']
方法1 利用pop()函數刪除,刪除後的列表內容:
 ['Carter', 45, '男', ['高', '富', '帥'], True, None, '狼的眼睛是啥樣的']
方法2 利用remove()函數刪除,刪除後的列表內容:
 ['Carter', 45, '男', ['高', '富', '帥'], True, None, '狼的眼睛是啥樣的']
方法3 利用del語句,刪除後的列表內容:
 ['Carter', 45, '男', ['高', '富', '帥'], True, None, '狼的眼睛是啥樣的']
方法4 利用列表重新拼接,不包括要刪除的元素,刪除後的列表內容:
 ['Carter', 45, '男', ['高', '富', '帥'], True, None, '狼的眼睛是啥樣的']

注意,刪除元素輕易不要用del語句去刪除,太危險。

 

11.修改列表

現在有一個列表 li2=[1,2,3,4,5]。請通過相關的操作改成li2 = [0,1,2,3,66,4,5,11,22,33]。

#方法1 賦值
li2 = [1,2,3,4,5]
print('原始li2列表內容:',li2)
li3 = [0,1,2,3,66,4,5,11,22,33]
li2 = li3[::]
print('方法1 通過最簡單的賦值來進行修改,修改後的li2列表內容:\n',li2)

#方法2 利用insert()
li2 = [1,2,3,4,5]
li2.insert(0,0)
li2.insert(4,66)
li2.insert(7,11)
li2.insert(8,22)
li2.insert(9,33)
print('方法2 只通過insert()添加元素,修改後的li2列表內容:\n',li2)

#方法3,insert(),append()
li2 = [1,2,3,4,5]
li2.insert(0,0)
li2.insert(4,66)
li2.append(11)
li2.append(22)
li2.append(33)
print('方法3 通過insert()和append()添加元素,修改後的li2列表內容:\n',li2)

主要考察對列表的添加元素操作,根據具體的需求選擇合適的方法。

 

12.判斷可變和不可變的數據類型

請指出下面那些爲可變類型的數據,那些爲不可變類型的數據

1、 (11)    

2、 {11,22}

3、 ([11,22,33])

4、 {"aa":111}

print('''分析:(11)是整形,而整形是不可變的數據
{11,22}是集合,可以使用add()函數對集合進行添加元素的操作,所以是可變的數據。
([11,22,33])是個陷阱,雖然()是元組的表示方式,但當元組只有一個元素時且後面沒有用逗號隔開時,只能表示元素本身的數據類型。也就是列表類型。而列表是可變類型,所以這個也是可變類型。
{"aa":111}是字典,字典是可變的類型,所以得出結論。''')
print('總結:編號爲1的是不可變類型的數據;編號爲2、3、4的是可變的類型數據。')

各種陷阱,基礎知識點。如果不確定可以打印出數據類型,再進行判斷是否爲可變數據類型。

 

13.元素去重和刪除

當前有一個列表 li = [11,22,33,22,22,44,55,77,88,99,11]。

  •  要求一:去除列表中的重複元素
  •  要求二:刪除 77,88,99這三個元素
li = [11,22,33,22,22,44,55,77,88,99,11]
#去重用集合類型轉換,再轉換爲列表
li_new = list(set(li))
li_new.sort()
print(li_new)
#要求二中利用remove函數刪除列表的三個元素
li_new.remove(77)
li_new.remove(88)
li_new.remove(99)
print(li_new)

#或者用pop()刪除三個元素
li = [11,22,33,22,22,44,55,77,88,99,11]
li_new = list(set(li))
li_new.sort()
#pop()刪除元素,由於已經排序,所以默認刪除最後一個
li_new.pop()
li_new.pop()
li_new.pop()
print(li_new)

#或者用切片刪除
li = [11,22,33,22,22,44,55,77,88,99,11]
li_new = list(set(li))
li_new.sort()
n=len(li_new)
lst = li_new[:n-3]
print(lst)
[11, 22, 33, 44, 55, 77, 88, 99]
[11, 22, 33, 44, 55]
[11, 22, 33, 44, 55]
[11, 22, 33, 44, 55]

這道題考察的知識點:集合用來去重。

 

14.數據類型轉換字典

有下面幾個數據 :

t1 = ("aa",11)     

t2= (''bb'',22)   

li1 = [("cc",11)]

請通過學過的知識點,進行相關操作變爲如下字典: {"aa":11,"cc":11,"bb":22}:

 

#方法1 extend()
a,b,c = t1,li1[0],t2
list = []
list.extend([a,b,c])
print(dict(list))
{'aa': 11, 'cc': 11, 'bb': 22}
#方法2
t1 = ('aa',11)
t2 = ('bb',22)
li1 = [('cc',11)]
li1.insert(0,t1)
li1.insert(2,t2)
print(dict(li1))
{'aa': 11, 'cc': 11, 'bb': 22}
#方法3
ti = ("aa",11)
t2 = ("bb",22)
li1 = [("cc",11)]
new_dict = {}
new_dict[t1[0]] = t1[1]
new_dict[t2[0]] = t2[1]
new_dict[li1[0][0]] = li1[1]
{'aa': 11, 'cc': 11, 'bb': 22}

每種方法都要掌握!

 

15.利用判斷計算價格

一家商場在降價促銷,所有原價都是整數(不需要考慮浮點情況),如果購買金額50-100元(包含50元和100元)之間,會給

10%的折扣,如果購買金額大於100元會給20%折扣。編寫一程序,詢問購買價格,再顯示出折扣(%10或20%)和最終價格。

price = int(input('請輸入購買金額:'))
if price >= 50 and price <= 100:
    price_sale = price * (1 - 0.1)
    #利用format(price_sale,'.2f')函數,取小數點後兩位
    print('折扣爲:10%,最終價格爲:{}元。'.format(format(price_sale,'.2f')))
elif price > 100:
    price_sale = price * (1 - 0.2)
    print('折扣爲:20%,最終價格爲:{}元。'.format(format(price_sale,'.1f')))
else:
    print('沒有折扣,最終價格爲:{}元。'.format(price))
請輸入購買金額:111
折扣爲:20%,最終價格爲:88.8元。

需要注意取小數點。

 

16.判斷是否爲閏年

  • 輸入一個有效的年份(如:2019),判斷是否爲閏年(不需要考慮非數字的情況)

  • 如果是閏年,則打印“2019年是閏年”;否則打印“2019年不是閏年”

year = int(input('輸入一個有效的年份(如:2019):'))
#閏年判斷條件:首先保證年數能被4整除
if year % 4 == 0:
    #年份能被100整除,但不能被400整除時,是平年
    if year % 100 == 0 and year % 400 != 0:
        print('公元{}年不是閏年。'.format(year))
    else:
        print('公元{}年是閏年。'.format(year))
else:
    print('公元{}年不是閏年。'.format(year))
請輸入第1個整數:190
請輸入第2個整數:210
請輸入第3個整數:65
最大值爲:210
#方法2
year = int(input("請輸入需要查詢的年份:"))
if year % 4 == 0:
    if year % 100 == 0:
        if year % 400 == 0:
            print("是閏年")
        else:
            print("不是閏年")
    else:
        print("是閏年")
else:
    print("不是閏年")

閏年的兩個判斷條件:年數能被4整除,年份能被100整除,同時要被400整除。方法很多,這裏只列舉一個。

 

17.求數字最大值

求三個整數中的最大值,提示:定義 3 個變量。

a = int(input("請輸入第1個整數:"))
b = int(input("請輸入第2個整數:"))
c = int(input("請輸入第3個整數:"))

if a >= b and a >= c:
    print("最大值爲:{}".format(a))
elif b >= a and b >= c:
    print("最大值爲:{}".format(b))
else:
    print("最大值爲:{}".format(c))
請輸入第1個整數:190
請輸入第2個整數:210
請輸入第3個整數:65
最大值爲:210

當然這裏可以用max函數,更簡單。

a = int(input("請輸入第1個整數:"))
b = int(input("請輸入第2個整數:"))
c = int(input("請輸入第3個整數:"))
print(max(a,b,c))
請輸入第1個整數:3
請輸入第2個整數:2
請輸入第3個整數:1
3

 

18.使用for打印九九乘法表

輸出九九乘法表,格式如下:(每項數據之間空一個Tab鍵,可以使用"\t")

#x是被乘數
for x in range(1,10):
    #y是乘數
    for y in range(1,x + 1):
        print(y, 'x' ,x ,'=',x*y,end='\t')
    print('')
1 x 1 = 1	
1 x 2 = 2	2 x 2 = 4	
1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	

乘法表就不多敘述了,面試必備!

 

19.循環刪除元素

你的微信好友當中有 5 個推銷的,他們存在一個列表 black_list=['賣茶葉', '賣面膜', '賣保險', '賣花生', '賣手機']

請依次把這 5 個人分別從 black_list 當中刪除,最後 black_list 爲空。

black_list = ['賣茶葉', '賣面膜', '賣保險', '賣花生', '賣手機']
print(black_list)
length = len(black_list)
for i in range(length):
    black_list.pop()
print(black_list)
['賣茶葉', '賣面膜', '賣保險', '賣花生', '賣手機']
[]

 


以上便是《Python實戰10-19例》的所有內容,本系列持續更新,每道都是精挑細選的質量題。

原創不易,轉載請註明原作者。如果喜歡請點贊和關注,謝謝大家的支持!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章