第五十二章 流量
#空数组
assert sum_even_numbers([])== 0
#包含0
assert sum_even_numbers([0, 2, 4])== 6 # 0是偶数
print(“所有测试通过“)
```
他敲下回车,代码跑起来。
屏幕上跳出一行字:所有测试通过。
时间:1分47秒。
陈哲抬起头,看著摄像头。
“写完了。还有问题吗?”
【c家军:???这么快】
【代码猎人:还加了测试用例?】
【pythonista:这代码质量可以的,有docstring有类型检查】
【灰色轨道:就这?热身题而已】
【哲思的粉丝:对面出的题也太简单了吧】
codemaster_us的表情僵住了。
他盯著屏幕,好一会儿没动。
“你……”他张了张嘴,“你写测试用例干什么?”
陈哲看著他,眼神里有一点不解。
“测试用例不是应该的吗?”他说,“你出题的时候没说不要测试用例。”
codemaster_us又噎住了。
弹幕又炸了一波。
【c家军:老c被反杀了哈哈哈哈】
【代码猎人:这波是专业对业余】
【pythonista:確实,正经写代码谁不写测试】
codemaster_us深吸一口气,把脸上的表情压下去。
“行。”他说,“第一题算你过了。现在轮到你出题了。”
陈哲点了点头:“那好,请接著。”
陈哲出了个类似难度的题目:“写一个函数,判断一个双精度浮点数的小数部分是否为0。如果是,返回true;否则返回false。”
“这不就是正常浮点计算?坑点在0.1+0.2上吧……两分钟了,你看看我写的,设了个误差范围,应该没什么问题。”白人男子把界面上的內容投给陈哲,说。
“的確。”
“中国人,我来出第二道题,给定一个字符串,找出其中第一个不重复的字符,返回它的索引。如果不存在,返回-1。”
“这也很简单,先用一次遍歷统计频率,第二次遍歷找到第一个频率为 1的字符,结束。”
……
渐渐地,陈哲能明显感觉到对方的题目难度从越来越往上变得仿佛碰到了某个瓶颈,对方的应对越来越迟缓,而对於陈哲来说,却仿佛越来越轻鬆了。
大概也是因为陈哲在基础方面的题目没下多少功夫,反而在深入的知识上有著不少涉猎。
“你来!”
codemaster_us在一次次的对拼中已经有点冷汗直冒,直播间的观眾里仅仅有一些水平不差的粉丝能跟得上两人的节奏,但是普遍吃瓜的人还有很多。
“我来么?”陈哲点头。
他低下头,想了想,然后抬起头。
“我的题是这样的。”
他顿了顿。
“写一个函数,输入一个字符串,输出这个字符串中每个字符出现的次数,按出现次数从高到低排序。如果出现次数相同,按字符的ascii码升序排序。要求时间复杂度不超过o(n log n),空间复杂度不超过o(n)。”
他说完,看著摄像头。
“十分钟。”
codemaster_us的表情变了,倒也不是愤怒,纯属是有点……懵。
“就这?”他说,“这不就是统计字符频率然后排序?这有什么难的?”
陈哲没说话,只是看著他。
codemaster_us低下头,开始写。
一分钟,两分钟,三分钟。
他的眉头皱起来了。
四分钟,五分钟。
他开始刪代码重写。
六分钟,七分钟。
他的额头上开始冒汗。
八分钟,九分钟。
他写完了。
“跑测试。”他说。
代码跑起来。
屏幕上跳出一行红字:测试失败。
codemaster_us愣了一下。
他又看了一遍代码,改了改,再跑。
还是红字。
九分五十秒。
陈哲开口:“时间到了。”
codemaster_us抬起头,脸上的表情复杂得像打翻了调料盘。
“你的测试用例是什么?”他问。
陈哲把自己的测试代码发到屏幕上。
```python
def test_char_frequency():
#基本情况
assert char_frequency(“hello“)==[(l, 2),(h, 1),(e, 1),(o, 1)]
#出现次数相同的情况
assert char_frequency(“abcc“)==[(c, 2),(a, 1),(b, 1)]
#空字符串
assert char_frequency(““)==[]
#所有字符都不同
assert char_frequency(“abc“)==[(a, 1),(b, 1),(c, 1)]
#特殊字符
assert char_frequency(“a a“)==[(a, 2),(, 1)]
print(“所有测试通过“)
```
codemaster_us盯著屏幕,沉默了几秒。
然后他抬起头,看著陈哲。
“你……”他张了张嘴,“你刚才出的题,你心里有答案吗?”
陈哲点点头。
他把自己的代码发上去。
```python
from collections import counter
def char_frequency(s):
“““
统计字符串中每个字符出现的次数,按出现次数从高到低排序。
出现次数相同的情况下,按字符的ascii码升序排序。
参数:
s:输入字符串
返回:
list:按(字符,次数)排序的列表
“““
if not isinstance(s, str):
raise typeerror(“输入必须是字符串“)
#统计频率
counter = counter(s)
#排序:先按次数降序,再按ascii升序
result = sorted(counter.items(), key=lambda x:(-x[1], ord(x[0])))
return result
```
他又加了几行测试,和刚才发上去的一样。
跑测试。
所有测试通过。
codemaster_us盯著屏幕,好一会儿没说话。
弹幕已经疯了。
【c家军:臥槽,这代码太优雅了】
【代码猎人:counter+sorted,pythonic】
【pythonista:而且考虑了空字符串和特殊字符】
【哲思的粉丝:这就叫专业】
【c家军:老c好像翻车了……】
codemaster_us的脸色变得很难看。
他深吸一口气,又深吸一口气。
“行。”他说,声音比刚才低了很多,“这一轮算你贏。下一轮——”
“不用了。”
陈哲打断他。
codemaster_us愣了一下。
陈哲看著摄像头,语气很平静。
“你刚才的几道题出得太简单,我不觉得那是你的真实水平。这一题你写不出来,我也不觉得那是你的真实水平。”他说,“你今天状態不好,或者你根本没把我当回事。继续比下去没意义。”
他顿了顿。
“你之前说,输了就把付费视频下架,贏了给我推荐。现在咱们打个平手,我不需要你下架视频,你也不用给我推。这件事到此为止。”
codemaster_us张了张嘴,想说什么,但又咽了回去。
陈哲看著摄像头,笑了一下。
“下次再约,好好准备。”
伴隨著陈哲这一边的黑屏,就只剩下codemaster_us错愕的面庞,以及哲思频道里变灰的头像。
对方的神色渐渐从错愕忿怒变得复杂,许久才长出一口气,和直播间的水友抱怨了几句,也就关闭直播间,闷脸结束了这个纷扰的晚上。
本章未完,点击下一页继续阅读。