2個(gè)Python入門級(jí)的實(shí)戰(zhàn)項(xiàng)目

這兩天后臺(tái)收到一些讀者朋友的消息兄裂,問我有沒有字符串的實(shí)戰(zhàn)項(xiàng)目句旱,我仔細(xì)思考了一下,覺得對(duì)于入門的朋友來說晰奖,不僅需要熟悉字符串的實(shí)戰(zhàn)項(xiàng)目谈撒,還應(yīng)該掌握Python的其他兩種數(shù)據(jù)類型——列表和字典。今天我就給大家介紹兩個(gè)關(guān)于Python基本數(shù)據(jù)類型的實(shí)戰(zhàn)項(xiàng)目匾南。

1.字符串趣味實(shí)戰(zhàn)

題目:替換1-20內(nèi)的數(shù)字啃匿,3的倍數(shù)和5的倍數(shù)用不同的數(shù)字代替。列出1到20的數(shù)字,若是3的倍數(shù)就用apple代替溯乒,若是5的倍數(shù)就用orange代替夹厌,若既是3的倍數(shù)又是5的倍數(shù)就用appleorange代替。

代碼思路:

第一種普通解法裆悄,循環(huán)1-20矛纹,然后用多個(gè)if/else進(jìn)行判斷:

def replace_num(i):

ifi%3 ==0andi%5 ==0:

return"banana"

ifi%3 ==0:

return'apple'

ifi%5 ==0:

return'orange'

else:

returni

fori in range(1,20):

print(replace_num(i))

第二種牛逼解法:巧妙的利用列表切片

'apple'[i%3*len('apple')::]+'orange'[i%5*len('orange')::]ori

先說一下這道題的這種解法,猶如天外有天光稼,令人拍案叫絕或南!

慢動(dòng)作分解1:

print ('apple'[1::])

>>'pple'表示從第2個(gè)位置開始切片

慢動(dòng)作分解2:

既然明白了上面的,來一個(gè)稍微復(fù)雜一點(diǎn)的

>>print ('apple'[1*5::])

為空

為啥因?yàn)?*5是5艾君,也就是要從第6個(gè)字符開始采够,apple一共就5個(gè)字符,所以輸出為空

慢動(dòng)作分解3:

foriinrange(1,10):

print ('apple'[i%3::])

>>

pple

ple

apple

pple

ple

apple

pple

ple

apple

會(huì)發(fā)現(xiàn)只有3的倍數(shù)的地方會(huì)出現(xiàn)完整的apple冰垄,其他地方都是殘缺蹬癌,但是我們?cè)趺窗逊?的倍數(shù)的地方變成空呢,簡(jiǎn)單乘以一個(gè)偏移量虹茶,這招對(duì)3的倍數(shù)沒有任何影響逝薪,但是對(duì)于其他的非3的倍數(shù)有很大的影響。

慢動(dòng)作分解4:

foriinrange(1,10):

print ('apple'[i%3*len('apple')::])

>>

apple

apple

apple

這個(gè)時(shí)候雖然把非3的過濾掉了写烤,但是我們要輸出數(shù)字啊翼闽,怎么辦呢拾徙?這里又用了一個(gè)非常巧妙的or for i in range(1,20):print(‘a(chǎn)pple’[i%3*len(‘a(chǎn)pple’)::]ori)

這道題的技巧性非常高洲炊,而且很巧妙,希望零基礎(chǔ)的同學(xué)仔細(xì)看明白每一步尼啡!

2.?列表暂衡、字典——綜合實(shí)戰(zhàn)應(yīng)用

題目:尋找班級(jí)名字最長的人

現(xiàn)有一字符串人名:

names=(' Kunpen Ji, Li XIAO, Caron Li, Donl SHI, Ji ZHAO,Fia YUAN Y, Weue

DING, Xiu XU, Haiying WANG, Hai LIN,Jey JIANG, Joson WANG E, Aiyang ZHANG,Hay

MENG, Jak ZHANG E, Chang Zhang, Coro ZHANG'

)

需要實(shí)現(xiàn)下面3個(gè)要求:

(1):排序,按照名字A-Z排序

(2):找出里面姓“ZHANG”的人數(shù)

(3):找出名字里面最長的人

代碼思路:

分析問題1:

首先我們要做的是對(duì)字符串進(jìn)行分割去掉‘崖瞭,’狂巢,然后就變成了一個(gè)長的列表,最后對(duì)列表進(jìn)行排序(注意名字前后有多余空格去掉)书聚,第一個(gè)問題就解決了唧领。

defsort_names(names):

return(sorted([name.strip()fornameinnames.split(',')]))

分析問題2:

我們需要找出姓“ZHANG”,因?yàn)槊掷锩嬗杏⑽拿趾椭形拿执菩械暮竺孢€跟E/Y斩个,所以我們先定義一個(gè)函數(shù),從分割后的新名字列表取出每一個(gè)名字驯杜,然后解析受啥、翻轉(zhuǎn),用推導(dǎo)列表形成一個(gè)新的名字列表,然后再用字符串里的.startswitch(‘ZHANG’)取出符合的名字滚局。

defget_chinese_names(names):

chinese_names=[]

fornameinsort_names(names):

iflen(name)>=2:

first_name=name.split()[0].capitalize()

last_name=name.split()[1].capitalize()

chinese_names.append(last_name+' '+first_name)

else:

chinese_names.append(name)

list_temp = []

foriinchinese_names:

ifi.startswith('Zhang'):

list_temp.append(i)

print("姓'ZHANG'的有%s個(gè)居暖,分別是:%s"% (len(list_temp), list_temp))

returnchinese_names

分析問題3:

找出名字里面字符串最長的人,我們先定義一個(gè)函數(shù)藤肢,然后從從問題1形成的新列表中取出每一個(gè)名字太闺,然后用max方法,用推導(dǎo)列表取出符合的名字嘁圈。

deflongest_name(names):

long_names = []

fornameinsort_names(names):

iflen(name) == max(len(name)fornameinsort_names(names)):

long_names.append(name)

print("名字最長的有%s個(gè)跟束,分別是:%s"% (len(long_names), long_names))

returnlong_names

完整代碼:

names = ('Kunpen Ji, Li XIAO, Caron Li,'

'Dongjian SHI, Ji ZHAO, Fia YUAN Y,'

'Wenxue DING, Xiu XU, Haiying WANG, Hai LIN,'

'Jey JIANG, Joson WANG E,'

'Aiyang ZHANG, Haiying MENG,'

'Jack ZHANG E, Chang Zhang, Coron ZHANG')

defsort_names(names):

names_list = sorted([name.strip()fornameinnames.split(',')])

returnnames_list

defget_chinese_names(names):

chinese_names=[]

fornameinsort_names(names):

iflen(name)>=2:

first_name=name.split()[0].capitalize()

last_name=name.split()[1].capitalize()

chinese_names.append(last_name+' '+first_name)

else:

chinese_names.append(name)

list_temp = []

foriinchinese_names:

ifi.startswith('Zhang'):

list_temp.append(i)

print("姓'ZHANG'的有%s個(gè),分別是:%s"% (len(list_temp), list_temp))

returnchinese_names

deflongest_name(names):

long_names = []

fornameinsort_names(names):

iflen(name) == max(len(name)fornameinsort_names(names)):

long_names.append(name)

print("名字最長的有%s個(gè)丑孩,分別是:%s"% (len(long_names), long_names))

returnlong_names

print(sort_names(names))

get_chinese_names(names)

longest_name(names)

今天給大家介紹的這兩個(gè)實(shí)戰(zhàn)項(xiàng)目冀宴,都非常經(jīng)典,希望Python入門的朋友能好好看看温学。最近也剛好有點(diǎn)時(shí)間略贮,準(zhǔn)備寫一寫Python入門的一些實(shí)戰(zhàn)項(xiàng)目,大家覺得怎么樣呢仗岖?

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逃延,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子轧拄,更是在濱河造成了極大的恐慌揽祥,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,284評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件檩电,死亡現(xiàn)場(chǎng)離奇詭異拄丰,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)俐末,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門料按,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人卓箫,你說我怎么就攤上這事载矿。” “怎么了烹卒?”我有些...
    開封第一講書人閱讀 164,614評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵闷盔,是天一觀的道長。 經(jīng)常有香客問我旅急,道長逢勾,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評(píng)論 1 293
  • 正文 為了忘掉前任坠非,我火速辦了婚禮敏沉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己盟迟,他們只是感情好秋泳,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評(píng)論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著攒菠,像睡著了一般迫皱。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上辖众,一...
    開封第一講書人閱讀 51,562評(píng)論 1 305
  • 那天卓起,我揣著相機(jī)與錄音,去河邊找鬼凹炸。 笑死戏阅,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的啤它。 我是一名探鬼主播奕筐,決...
    沈念sama閱讀 40,309評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼变骡!你這毒婦竟也來了离赫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,223評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤塌碌,失蹤者是張志新(化名)和其女友劉穎渊胸,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體台妆,經(jīng)...
    沈念sama閱讀 45,668評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡翎猛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了频丘。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片办成。...
    茶點(diǎn)故事閱讀 39,981評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖搂漠,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情某弦,我是刑警寧澤桐汤,帶...
    沈念sama閱讀 35,705評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站靶壮,受9級(jí)特大地震影響怔毛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜腾降,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評(píng)論 3 330
  • 文/蒙蒙 一拣度、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦抗果、人聲如沸筋帖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽日麸。三九已至,卻和暖如春逮光,著一層夾襖步出監(jiān)牢的瞬間代箭,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評(píng)論 1 270
  • 我被黑心中介騙來泰國打工涕刚, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗡综,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,146評(píng)論 3 370
  • 正文 我出身青樓杜漠,卻偏偏與公主長得像蛤高,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子碑幅,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • pyspark.sql模塊 模塊上下文 Spark SQL和DataFrames的重要類: pyspark.sql...
    mpro閱讀 9,456評(píng)論 0 13
  • Python 是一種相當(dāng)高級(jí)的語言戴陡,通過 Python 解釋器把符合語法的程序代碼轉(zhuǎn)換成 CPU 能夠執(zhí)行的機(jī)器碼...
    Python程序媛閱讀 1,906評(píng)論 0 3
  • 基礎(chǔ)1.r''表示''內(nèi)部的字符串默認(rèn)不轉(zhuǎn)義2.'''...'''表示多行內(nèi)容3. 布爾值:True、False(...
    neo已經(jīng)被使用閱讀 1,676評(píng)論 0 5
  • http://python.jobbole.com/85231/ 關(guān)于專業(yè)技能寫完項(xiàng)目接著寫寫一名3年工作經(jīng)驗(yàn)的J...
    燕京博士閱讀 7,575評(píng)論 1 118
  • Python語言特性 1 Python的函數(shù)參數(shù)傳遞 看兩個(gè)如下例子沟涨,分析運(yùn)行結(jié)果: 代碼一: a = 1 def...
    伊森H閱讀 3,065評(píng)論 0 15