3道趣味Python題,非常適合菜鳥(niǎo)練手

Python雖然入門容易,但是涉及的知識(shí)點(diǎn)非常多,而且技巧性很強(qiáng)!這些技巧就像一串一串的珠子,需要一些題目的不斷的練手才能熟練掌握串聯(lián)起來(lái),把知識(shí)點(diǎn)掌握牢固!今天我就精選了3道趣味的Python題目,大家一起動(dòng)動(dòng)手,練起來(lái)!

image

1.字符串中的字符替換

字符串是Python中最基本也是最重要的知識(shí)點(diǎn),下面這道題是關(guān)于字符串替換??纯床锁B(niǎo)和高手是如何處理的:

題目:

創(chuàng)建一個(gè)函數(shù),這個(gè)函數(shù)能把輸入的字符串進(jìn)行處理,并將返回替換了某些字符的字符串,規(guī)則如下

  • 如果一個(gè)字母是大寫(xiě)輔音,請(qǐng)將該字符替換為“Iron”。
  • 如果字母是小寫(xiě)輔音或非字母字符,則對(duì)該字符不執(zhí)行任何操作
  • 如果一個(gè)字母是大寫(xiě)元音,請(qǐng)將該字符替換為“Iron Yard”。
  • 如果一個(gè)字母是小寫(xiě)元音,請(qǐng)用“Yard”替換該字符。

測(cè)試用例

輸入: "Hello WORLD!"

輸出: "IronYardllYard IronIron YardIronIronIron!"

菜鳥(niǎo)解法:

image

高手解法:

image

點(diǎn)評(píng):

高手解法最巧妙不是用類似推到列表這樣的方法來(lái)循環(huán)處理字符串,而且非常巧妙的用"Iron"True 或者"Iron"False,如果是前者則為字符串本身,而后者則為空""。然后在把兩個(gè)字符串用+合成,再用or分類!完美把上面的if-elif-elif-else融合到了一行代碼里面,確實(shí)不錯(cuò)!

2.趣味體重排序

老王在一個(gè)"胖子健身俱樂(lè)部",每到月底老王就很擔(dān)心,因?yàn)槊總€(gè)月都會(huì)公布一份成員體重列表,每個(gè)月他都是列表中的最后一個(gè),這意味著他是最重的。于是他就建議會(huì)長(zhǎng)修改規(guī)則,比如新的規(guī)則如下:

新的排序規(guī)則將是按照“權(quán)重”來(lái)進(jìn)行排序,如果權(quán)重相同,則按照體重字符串來(lái)進(jìn)行排序。(權(quán)重的計(jì)算規(guī)則:體重?cái)?shù)字不同位數(shù)上的數(shù)字的總和

給定某種正常順序俱樂(lè)部的成員的體重字符串,如何實(shí)現(xiàn)按照新規(guī)則排序呢?

測(cè)試用例:

輸入: "99 189 86 75"

輸出: "75 86 189 99"

菜鳥(niǎo)解法:

image

高手解法:

image

點(diǎn)評(píng):

高手的解法同樣是比較簡(jiǎn)潔!我們大部分人用for c in x 的時(shí)候都用到這一層就結(jié)束了,其實(shí)還可以對(duì)c再進(jìn)行進(jìn)一步操作然后再sum一下,這個(gè)例子可以舉一反三!一下子集合了很多sorted的高級(jí)用法,簡(jiǎn)潔而有效!

3.扔骰子游戲

用五個(gè)六面骰子玩的骰子游戲,每投骰子組一次,就會(huì)出現(xiàn)5個(gè)數(shù)字的數(shù)組(數(shù)字:1-6),統(tǒng)計(jì)數(shù)組里每個(gè)數(shù)字出現(xiàn)的次數(shù),將每個(gè)數(shù)字出現(xiàn)的次數(shù)拆分成 3次 和 1次 的組合,然后按照下面的規(guī)則進(jìn)行計(jì)數(shù)。

注意:如果出現(xiàn)次數(shù)大于或者等于3次,那么必須至少有一個(gè)按照3次來(lái)計(jì)算,不能全部按照1次來(lái)計(jì)算

3次1 = = 1000分

3次6 = = 600分

3次5 = = 500分

3次4 = = 400分

3次3 = = 300分

3次2 = = 200分

1次1 => 100分

1次5 => 50分

1次2 => 0分

1次3 => 0分

1次4 => 0分

1次6 => 0分

例如,5出現(xiàn)了5次,那么應(yīng)當(dāng)做作3個(gè)5、1個(gè)5和1個(gè)5來(lái)計(jì)算得分;5出現(xiàn)了6次,那么應(yīng)當(dāng)作3個(gè)5、3個(gè)5來(lái)計(jì)算得分,其他數(shù)字同理。

測(cè)試用例:

扔骰子計(jì)算得分 --------- ------------------

5 1 3 4 1 50 + 2 * 100 = 250

1 1 1 3 1 1000 + 100 = 1100

2 4 4 5 4 400 + 50 = 450

菜鳥(niǎo)解法:

image

高手解法:

image

點(diǎn)評(píng):

高手的解法在于設(shè)計(jì)的數(shù)據(jù)結(jié)構(gòu)非常巧,提前根據(jù)題目的意思就設(shè)計(jì)好了幾個(gè)容器,然后counter列表巧妙的將(1-6)與(1-6)出現(xiàn)的次數(shù)關(guān)聯(lián)起來(lái)。points和extra列表巧妙將數(shù)字出現(xiàn)的次數(shù)(3次和1次)和得分關(guān)聯(lián)表示,減少誤輸?shù)梅值那闆r,提高代碼復(fù)用性,整個(gè)解法非常巧妙!

上面這幾道題目看起來(lái)好像大家都會(huì)做,但是解法就是沒(méi)有別人的簡(jiǎn)潔巧妙!就好像廚藝大賽,看似一道簡(jiǎn)單的蛋炒飯其實(shí)是非??简?yàn)功底的!編程本身就是蘊(yùn)含算法+數(shù)據(jù)結(jié)構(gòu)的融合,大家有空可以多學(xué)習(xí)學(xué)習(xí)優(yōu)秀的代碼,對(duì)自己功力大有好處!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 你的數(shù)學(xué)直覺(jué)怎么樣?你能憑借直覺(jué),迅速地判斷出誰(shuí)的概率大,誰(shuí)的概率小嗎?下面就是 26 個(gè)這樣的問(wèn)題。如果你感興趣...
    cnnjzc閱讀 7,439評(píng)論 0 12
  • 哈哈,明天我就畢業(yè)了。 今天,去各個(gè)地方辦理離校手續(xù),突然就有些傷感了呢。前兩天,還沒(méi)心沒(méi)肺地笑得稀里嘩啦。 離校...
    Al_ways閱讀 414評(píng)論 0 0
  • 害怕突然響起你愛(ài)聽(tīng)的歌曲,害怕別人說(shuō)出你曾說(shuō)過(guò)的話,害怕一個(gè)人孤單時(shí)會(huì)想起你陪伴在身邊的日子,害怕午夜夢(mèng)回時(shí)忍不住...
    安夏茉閱讀 1,818評(píng)論 63 50
  • 首先,大學(xué)生有的最好的資源是:知識(shí),學(xué)生圈 其次:沒(méi)有資金的不要考慮產(chǎn)品推廣,轉(zhuǎn)向知識(shí)付費(fèi)型推廣,就我而言從1...
    瞄了一個(gè)喵閱讀 289評(píng)論 1 2
  • 日更真是一件很殘酷的事情。 但我相信堅(jiān)持下去總有收獲!回看以前剛開(kāi)始學(xué)寫(xiě)文章的時(shí)候,簡(jiǎn)直不堪入目(雖然現(xiàn)在寫(xiě)得也很...
    與妍閱讀 174評(píng)論 0 0

友情鏈接更多精彩內(nèi)容