盘点一道带“坑”Python基础题目(附源码)

 
 

4ba8f964da486360c2ea26372f48a132.gif

 
 
公众号后台回复“图书“,了解更多号主新书内容

     作者:Python进阶者

     来源:Python爬虫与数据挖掘

前言

    昨天在小编的Python交流群里,有个叫【Aͨ】的粉丝在群里问了一道关于Python基础的问题,初步一看觉得很简单,实际上是有坑的,这里整理成一篇文章,分享给大家。

a7dbac3e277abb92edf90b4d8c5c25a1.png

    题目是如下图所示:

4b7bb0d85295fe93aea1944c21efef86.png

    看题目确实觉得很简单哈,一顿操作猛如虎,各路神仙各显神通,不过一开始大家也确实轻敌了。

    下面是答题一览:

38ec51f0f7e04dcb5f4dd9d29f2a7344.png

    发现没有这么简单,再来一击:

6f4cf1b3010216f67092aec4837aebfd.png

一、思路

    这个问题看似简单,但是其实是有潜在的坑的,详情看下图红色框框。

a9e2de05edb5b4d49544bfe322152a10.png

   关于思路,倒是有两个,其一是【磐奚鸟】大佬提供的想法,检测首尾是不是[]()这种,是就转换一下type,能解决list,tuple,但是其他的数据类型,就处理不来了,这个想法还是有弊端的。

95bf99e36c6b81434796ea145a9e1d8c.png

    其二是使用eval()函数,这个正解,具体看下一节。

二、解决方法

1)代码一

    这里先给出【Aͨ】大佬自己的代码,如下图所示。

3e5ba504c64e40f35b0804463ad498fc.png

# coding: utf-8
a = (input('请输入一个数据:'))
b = eval(a)
print(a, type(b))

    乍一看,这个代码确实可以实现,但是细心的大佬如【🌑(这是月亮的背面)】,会发现这里会隐藏有一个小bug,那就是作者在input()函数外层还加了个括号,也就是说硬生生的将输入做了一次元组强转。

0e9b7c30e239621549cd7dfa38ecaf50.png

    如果输入元组或者字典,那就要翻车了,讲真,一开始我看到这里还有一些蒙圈,后来就明白了。看下图【磐奚鸟】给出的一个反例测试结果:

6009eced3a864d00df708b26b2afc3fd.png

3a4effdc5f3cdde4852f672c8acf1ebb.png

    乍一看,你根本就不敢相信,竟然会出错,而且你会很诧异的表示,问题到底在哪?

e650baa384ec630e41e71048a89d8e92.png

    其实问题出在input函数外层的那个括号,用括号给input套了一层,那么它就是元组了,里面的元素是字符串,而evaleval只能解析字符串,解不了元组,所以会报错。

2)代码二

    经过上面的分析,相信大家应该知道问题出在哪里了,只需要将input函数外层的那个括号去掉,就可以了。

# coding: utf-8
a = input('请输入一个数据:')
b = eval(a)
print(a, type(b))

    下图是【磐奚鸟】给出的一个测试结果,可以看到他还给多加了一层异常函数处理,显得更加的完整和健壮:

37428c8f2b445f9d6d18f4c238433a37.png

3)彩蛋

    后来【德善堂小儿推拿-瑜亮老师】大佬也给出了更加详尽的测试结果,下面一起来看看吧,测试结果表明:基本数据类型输出都没有问题。

0019f5f2353451230bbb7777e4e8469f.png

e1491c28296f6bdd07503862acead198.png

    bool值,复数也可以。

aad3fb059df5371557c8ebee78de825a.png

    在检测函数的时候是调用函数,并不是显示函数的类型:

9276aa756e7fca35339247c235fd60e4.png

三、总结

    我是Python进阶者。本文基于粉丝针对Python基础问题的提问,在大家的群策群力之下,给出了一个完整的解决方案,满足了粉丝的要求。

    针对这道题目,考点就是eval了,灵活运用,确实可以达到事半功倍的效果,增加异常处理,使得程序更加的稳健。

◆ ◆ ◆  ◆ ◆
麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:
 
 
数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。

管理员二维码:


猜你喜欢

● 卧槽!原来爬取B站弹幕这么简单
● 厉害了!麟哥新书登顶京东销量排行榜!
● 笑死人不偿命的知乎沙雕问题排行榜

● 用Python扒出B站那些“惊为天人”的阿婆主!
● 你相信逛B站也能学编程吗
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值