天天看點

用實戰題目學習Python

用實戰題目學習Python

昨天在公衆号發了第一個廣告,是商家主動找的我,考慮到自己現在的粉絲比較少,我沒有收取任何廣告費。這篇關于Python的廣告,大家還是結合自身實際再去買課,網際網路時代,最不缺的就是資源,但我們不要做資源的巨嬰,要利用好手裡的每一份資源。

一起來看看今天的題目吧。

有一串長的字元串 names="LI XIA ,ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI,CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"

要求:

1)過濾出所有的名字,去掉每個名字的左右空格和亂碼,每個名字的首字母大寫,比如 'LAO WANG *',處理成'Lao wang';

2)統計出所有名字裡面名字最長的;

3)統計出姓的人的名單;

我先抛個磚,我的代碼如下:

from pprint import pprint

def checkName(names):
    newnames = [name.title().strip(' *>') for name in names.split(',')]
    names_dict = {name: len(name) for name in newnames}
    result = sorted(names_dict.items(), key=lambda x: x[1], reverse=True)
    pprint(result)

if __name__ == '__main__':
    names = "LI XIA ,ZHAO MING ,LAO WANG *,DA XIONG >,LI MEI MEI,CHANG JIANG,LI QIANG,ZHANG WU JI,ZHANG SAN FENG,DU GU QIU BAI,QIAO FENG"
    checkName(names)           

複制

(代碼可以左右滑動)

代碼解析:

(1)pprint子產品,提供了可以按照某個格式正确的顯示Python已知類型資料的一種方法,這種格式可被解析器解析,又很易讀。

Print()和pprint都是Python的列印子產品,功能基本一樣,差別是ppint子產品列印出來的資料結構更加完整,每行為一個資料結構,更加友善閱讀列印輸出結果。特别是對于特别長的資料列印,print()輸出結果都在一行,不友善檢視,而pprint采用分行列印輸出,是以對于資料結構比較複雜、資料長度較長的資料,适合采用pprint()列印方式。

(2)title()方法

該方法傳回「标題化」的字元串,就是說所有單詞都是以大寫開始,其餘字母均為小寫。

文法:str.title()

(3)strip()方法

該方法用于移除字元串頭尾指定的字元(預設為空格或換行符)或字元序列,注意:該方法隻能删除開頭或是結尾的字元,不能删除中間部分的字元。

文法:str.strip([chars]),chars——移除字元串頭尾指定的字元序列。

(4)split()方法

通過指定分隔符對字元串進行切片,如果參數num有指定值,則分隔num+1個字元串。

文法:

str.split(str=“”,num=string.count(str))。

str——分隔符,預設為所有的空字元,包括空格、換行(\n)、制表符(\t)等;num——分割次數。預設為-1,即分割所有。

(5)items()方法

以清單傳回可周遊的(鍵、值)元組或數組。

文法:dict.items(),舉例說明:

dict = {'Name': 'Runoob', 'Age': 7}
for i,j in dict.items():
    print(i, ":\t", j)           

複制

Name :   Runoob
Age :   7           

複制

(6)key=lambda 元素:元素[字段索引]

比如

print(sorted(C,key=lambda x:x[1]))

x:x[1]字母可以随意修改,排序方式按照中括号[]裡面的次元進行排序。[0]按照第一維排序,[1]按照第二維排序,[2]按照第三維排序。用執行個體具體說明一下。

取第一維

num = [(1,2.5), (1.5, 3.2), (1.3, 4.0), (2.2, 1.8)]
y,z = max(num, key=lambda x:x[0])
print(y, z)           

複制

2.2 1.8           

複制

取第二維

num = [(1,2.5), (1.5, 3.2), (1.3, 4.0), (2.2, 1.8)]
y,z = max(num, key=lambda x:x[1])
print(y, z)           

複制

1.3 4.0           

複制

取第三維

C = [('e', 4, 2), ('a', 2, 1), ('c', 5, 4), ('b', 3, 3), ('d', 1, 5)]
print(sorted(C, key=lambda x: x[2]))           

複制

[('a', 2, 1), ('e', 4, 2), ('b', 3, 3), ('c', 5, 4), ('d', 1, 5)]           

複制

今天的分享就這麼多,希望對大家了解和鞏固Python基礎知識有幫助。