1. 盤點(diǎn)一道帶“坑”Python基礎(chǔ)題目(附源碼)

        共 1874字,需瀏覽 4分鐘

         ·

        2021-11-11 23:24

        點(diǎn)擊上方“Python爬蟲與數(shù)據(jù)挖掘”,進(jìn)行關(guān)注

        回復(fù)“書籍”即可獲贈(zèng)Python從入門到進(jìn)階共10本電子書

        嶺外音書斷,經(jīng)冬復(fù)歷春。

        ????大家好,我是Python進(jìn)階者。


        前言

        ????昨天在小編的Python交流群里,有個(gè)叫【A?】的粉絲在群里問了一道關(guān)于Python基礎(chǔ)的問題,初步一看覺得很簡單,實(shí)際上是有坑的,這里整理成一篇文章,分享給大家。

        ????題目是如下圖所示:

        ????看題目確實(shí)覺得很簡單哈,一頓操作猛如虎,各路神仙各顯神通,不過一開始大家也確實(shí)輕敵了。

        ????下面是答題一覽:

        ????發(fā)現(xiàn)沒有這么簡單,再來一擊:


        一、思路

        ????這個(gè)問題看似簡單,但是其實(shí)是有潛在的坑的,詳情看下圖紅色框框。

        ? ?關(guān)于思路,倒是有兩個(gè),其一是【磐奚鳥】大佬提供的想法,檢測首尾是不是[]()這種,是就轉(zhuǎn)換一下type,能解決list,tuple,但是其他的數(shù)據(jù)類型,就處理不來了,這個(gè)想法還是有弊端的。

        ????其二是使用eval()函數(shù),這個(gè)正解,具體看下一節(jié)。

        二、解決方法

        1)代碼一

        ????這里先給出【A?】大佬自己的代碼,如下圖所示。

        # coding: utf-8a = (input('請輸入一個(gè)數(shù)據(jù):'))b = eval(a)print(a, type(b))

        ? ? 乍一看,這個(gè)代碼確實(shí)可以實(shí)現(xiàn),但是細(xì)心的大佬如【??(這是月亮的背面)】,會(huì)發(fā)現(xiàn)這里會(huì)隱藏有一個(gè)小bug,那就是作者在input()函數(shù)外層還加了個(gè)括號,也就是說硬生生的將輸入做了一次元組強(qiáng)轉(zhuǎn)。

        ????如果輸入元組或者字典,那就要翻車了,講真,一開始我看到這里還有一些蒙圈,后來就明白了。看下圖【磐奚鳥】給出的一個(gè)反例測試結(jié)果:

        ????乍一看,你根本就不敢相信,竟然會(huì)出錯(cuò),而且你會(huì)很詫異的表示,問題到底在哪?

        ????其實(shí)問題出在input函數(shù)外層的那個(gè)括號,用括號給input套了一層,那么它就是元組了,里面的元素是字符串,而evaleval只能解析字符串,解不了元組,所以會(huì)報(bào)錯(cuò)。

        2)代碼二

        ? ? 經(jīng)過上面的分析,相信大家應(yīng)該知道問題出在哪里了,只需要將input函數(shù)外層的那個(gè)括號去掉,就可以了。

        # coding: utf-8a = input('請輸入一個(gè)數(shù)據(jù):')b = eval(a)print(a,?type(b))

        ????下圖是磐奚鳥】給出的一個(gè)測試結(jié)果,可以看到他還給多加了一層異常函數(shù)處理,顯得更加的完整和健壯:


        3)彩蛋

        ????后來【德善堂小兒推拿-瑜亮老師】大佬也給出了更加詳盡的測試結(jié)果,下面一起來看看吧,測試結(jié)果表明:基本數(shù)據(jù)類型輸出都沒有問題。

        ????bool值,復(fù)數(shù)也可以。

        ????在檢測函數(shù)的時(shí)候是調(diào)用函數(shù),并不是顯示函數(shù)的類型:


        三、總結(jié)

        ??? 我是Python進(jìn)階者。本文基于粉絲針對Python基礎(chǔ)問題的提問,在大家的群策群力之下,給出了一個(gè)完整的解決方案,滿足了粉絲的要求。

        ????針對這道題目,考點(diǎn)就是eval了,靈活運(yùn)用,確實(shí)可以達(dá)到事半功倍的效果,增加異常處理,使得程序更加的穩(wěn)健。

        ????最后感謝【A?】提問,感謝【??(這是月亮的背面)】、【D I Y】、【dcpeng】、【磐奚鳥】、【德善堂小兒推拿-瑜亮老師】提供的思路、解答和測試,感謝【灰帽子】、【AA】等人的積極探討,感謝小編寄幾抽時(shí)間整理此文。

        ????這一過程,雖然耗時(shí),但是也是學(xué)到了很多知識下,值得!如果你有其他的方法,也可以隨時(shí)分享給我噢!

        ????小伙伴們,快快用實(shí)踐一下吧!如果在學(xué)習(xí)過程中,有遇到任何問題,歡迎加我好友,我拉你進(jìn)Python學(xué)習(xí)交流群共同探討學(xué)習(xí)。

        -------------------?End?-------------------

        往期精彩文章推薦:

        歡迎大家點(diǎn)贊,留言,轉(zhuǎn)發(fā),轉(zhuǎn)載,感謝大家的相伴與支持

        想加入Python學(xué)習(xí)群請?jiān)诤笈_回復(fù)【入群

        萬水千山總是情,點(diǎn)個(gè)【在看】行不行

        /今日留言主題/

        隨便說一兩句吧~~

        瀏覽 36
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評論
        圖片
        表情
        推薦
        點(diǎn)贊
        評論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
          
          

            1. 又色又爽又黄18 网站在线观看 | 日本特黄特色大片免费视频老年人 | 国产大学生一区 | 少妇激情av| 色婷婷成人干 |