5个最难的Python问题!

看看你能答对几个?

扫码关注《Python学研大本营》

用这些问题考一考你身边的Python大神吧!

5个最难的Python问题!_第1张图片

1.) round()函数

你认为以下代码的结果是什么?

print(round(9/2))
print(round(7/2))
print(round(3/2))

答案是:4, 4, 2

为什么print(round(7/2))打印的是4而不是3?为什么print(round(9/2))打印的是4而不是5?

这是因为在python中,round函数实现了银行家的四舍五入,所有的半数都被四舍五入到最接近的偶数。

2.) 实例!

猜猜看输出是什么?

Class A:
    ans = 9 def __init__(self):
        self.answer = 10
        self.__add__ = lambda x, y: x.answer + y    
    
    def __add__(self, y):
        return self.answer - yprint(A() + 4)

答案:6

现在你一定想知道我们是如何得到6的! 这是因为,为了解决一个属性名,Python 首先在实例层搜索它,然后在类层搜索,最后在父类中搜索。除了 dunder 方法之外,这对所有的东西都是正确的。在搜索它们时,Python跳过了实例检查,而是直接在类中搜索。 因此(10-4)=6就是答案。

3.) 数学不起作用的地方

猜猜看这种情况下的输出?

print(max(-0.0, 0.0))

答案:-0.0

你一定是把0.0当成了答案。但是答案是-0.0。 为什么会出现这种情况?出现这种情况有两个原因。 1.负零和零在Python中被视为相等。 2.而在Python的max函数中,如果多个项目是最大的,那么该函数就会返回第一个遇到的项目。 因此,max函数返回第一个出现的零,也就是-0.0。

4.) 懒惰的操作者

猜猜看这种情况下的输出?

print(all([]))
print(any([]))

答案是:True,False

函数all()有点复杂,因为它代表了空洞的真理的概念。与链式懒惰逻辑运算符一样,其算法是寻找第一个假元素,如果没有找到则返回True。由于空序列中没有假元素,print(all([]))打印出True。 在函数any()中,如果迭代器中的任何元素是真的,它将返回False。Python 中的逻辑运算符是懒惰的! 该算法寻找第一次出现的真元素,如果没有找到,则返回假,由于序列是空的,没有可能是真的元素,因此print(any([]))打印出False。

5.) 我想要-n次以上

猜猜看输出是什么?

print("你能给这个故事拍50下吗?" * (-1))

答案:它打印的是一个空字符串

这是因为n小于0的值被视为0(给出一个与s相同类型的空序列)。 如果n(数字)不是-1,而是大于0,那么这个字符串就会被打印n次。

最后的思考

那么,你猜对了几个呢?

5个最难的Python问题!_第2张图片

参考文章:

https://medium.com/codex/5-hardest-python-questions-497a6df140d3

Python参考书单

《Python从入门到精通》

购买链接:https://item.jd.com/13284890.html

5个最难的Python问题!_第3张图片
精彩回顾
用Python写前端是什么体验?
Python面试必须知道的15个问题
Kindle退出中国怎么办?快用Python下载你的电子书
自然语言三兄弟NLP、NLU、NLG傻傻分不清?一文搞懂它们的区别
《人体系统调优不完全指南》火了!我们整理了一份《程序员健康指南》!

你可能感兴趣的:(大数据)