前言
什么? 你已经很了解python了? 好.
我们开始做个测验. 下面有12个题目. 填个空, 让这个代码片段变的可能.
先做个例子
例子1:
1 2 3
| >>> x, y = ??? >>> x + y == y + x False
|
其中有个???
. 把它替换成什么就可以让这段代码成立呢?
揭晓答案:
1 2 3
| >>> x, y = [0], [1] >>> x + y == y + x False
|
这个还是蛮简单的. 好继续
例子2:
1 2 3
| >>> x = ??? >>> x < x True
|
答案呢?
如果使用python内置的数据结构, 确实是不可能的. 唯一可以硬造
一个例子
1 2 3
| >>> x = type("", (), {"__lt__": lambda a, b: True})() >>> x < x True
|
但是这里不需要这么复杂的去想trick
出结果, 只考虑python已经实现的设计
发考卷
- 难度3星
1 2 3
| >>> x, y = ??? >>> min(x, y) == min(y, x) False
|
- 难度4星
1 2 3
| >>> x = ??? >>> len(set(list(x))) == len(list(set(x))) False
|
- 难度3星
1 2 3 4
| >>> x, s = ??? >>> s.add(x) >>> type(x) in map(type, s) False
|
- 难度3星
1 2 3
| >>> x, y = ??? >>> x < y and all(a >= b for a, b in zip(x, y)) True
|
- 难度4星
1 2 3
| >>> x, y = ??? >>> sum(0 * x, y) == y False
|
- 难度5星
1 2 3
| >>> x = ??? >>> min(x) == min(*x) False
|
- 难度3星
1 2 3
| >>> x, y, z = ??? >>> x * (y * z) == (x * y) * z False
|
- 难度3星
1 2 3
| >>> x, y, z = ??? >>> x * (y * z) == (x * y) * z False
|
- 难度4星
1 2 3
| >>> x, y = ??? >>> y > max(x) and y in x True
|
- 难度5星
1 2 3
| >>> x, y = ??? >>> any(x) and not any(x + y) True
|
- 难度3星
1 2 3
| >>> x, y = ??? >>> x.count(y) <= len(x) False
|
- 难度5星
1 2 3
| >>> x = ??? >>> all(filter(None, x)) False
|
- 难度4星
1 2 3
| >>> x, a, b, c = ??? >>> max(x) < max(x[a:b:c]) True
|
答案呢
这是最近我觉得蛮有趣的一个项目 pywat
上面的评星是我加上去. 也体现了我做这些题目花费的精力和时间:
3星: 很快就想到, 实验出来了
4星: 花了蛮长时间, 终于找到答案了
5星: 最后实在找不倒答案, 看了答案恍然大悟啊啊啊啊
你能做到什么程度呢?
请慎重点击: 答案地址
版权声明:本文由 董伟明 原创,未经作者授权禁止任何微信公众号和向掘金(juejin.im)转载,技术博客转载采用
保留署名-非商业性使用-禁止演绎 4.0-国际许可协议转载请保留以上声明信息!