跳转目录
【招聘】Readme
欢迎来到编程笔试
在这个笔试题目里,你将着手编写一个实现一些简易功能的Excel。
本笔试题目为测试驱动,即:全部笔试题由20个测试案例组成,其对应文件位于/test/model/目录下。其中,test_spreadsheet1.py包含5个,test_spreadsheet2.py包含10个,test_spreadsheet3.py包含5个,为了通过上述这20个测试案例,你需要逐步完善位于/src/model/目录下的spreadsheet.py文件的代码。
请你尽可能多的完善Excel的功能来满足测试案例。你不需要完成全部案例,只需要在规定的2小时内通过尽可能多的测试案例即可。
请从第一个测试文件的第一个测试用例开始,逐步增添、重构excel的函数功能。测试案例的难度是从简到难。
如果你记不住某个内置函数库的用法,你可以上网进行查找,但是不可以和其他人进行协商。
用到的技术
- Python
- unittest
关于该Excel对象的基本功能介绍
该Excel只有一行。列数为A到Z,AA到ZZ等。没有储值的列数默认存储值为空字符串。
- get(column: str), 该函数的目的是获取在column列的值,内容为等式的话需要计算并返回其结果。举例,若在"A1"列存储的值为"=7+3",sheet.get(“A1”)应返回"10"。
- getLiteral(column: str), 该函数的目的是获取在column列的字符串值,内容为等式的话不需要计算,直接返回字符串。举例,若在"A1"列存储的值为"=7+3",sheet.getLiteral(“A1”)应返回"=7+3"。
- put(column: str, value: str), 该函数的目的是在column列存储value的值。如果该列已经被占用,则替换为当前值。
以下是给定的代码
/src/model/spreadsheet.py
# /src/model/spreadsheet.py
class Sheet:
def get(self, column: str):
"""
该函数的目的是获取在column列的值,内容为等式的话需要计算并返回其结果。举例,若在"A1"列存储的值为"=7+3",sheet.get("A1")应返回"10"。
:param column: 列数
:return: 该列存储的值,默认为空字符串
"""
raise NotImplementedError("Not implemented!")
def getLiteral(self, column:str):
"""
该函数的目的是获取在column列的字符串值,内容为等式的话不需要计算,直接返回字符串。举例,若在"A1"列存储的值为"=7+3",sheet.getLiteral("A1")应返回"=7+3"。
:param column: 列数
:return: 该列存储的字符串值,默认为空字符串
"""
raise NotImplementedError("Not implemented!")
def put(self, column: str, value: str):
"""
该函数的目的是在column列存储value的值。如果该列已经被占用,则替换为当前值。
:param column: 列数
:param value: 在该列需要存储的值
"""
raise NotImplementedError("Not implemented!")
/test/model/test_spreadsheet1.py
# /test/model/test_spreadsheet1.py
import unittest
from src.model.spreadsheet import Sheet
class SpreadsheetTestUnit1(unittest.TestCase):
def test_that_cells_are_empty_by_default(self):
"""
每列默认值为空字符串
"""
sheet = Sheet()
self.assertEqual("", sheet.get("A"))
self.assertEqual("", sheet.get("ZX"))
def test_that_text_cells_are_stored(self):
"""
Excel可以正确地存储put的值
"""
sheet = Sheet()
cell = 'A'
sheet.put(cell, "A string")
self.assertEqual("A string", sheet.get(cell))
sheet.put(cell, "A different string")
self.assertEqual("A different string", sheet.get(cell))
sheet.put(cell, "")
self.assertEqual("", sheet.get(cell))
def test_that_many_cells_exist(self):
"""
Excel可以正确地覆盖之前的值
"""
sheet = Sheet()
sheet.put("A", "First")
sheet.put("X", "Second")
sheet.put("ZX", "Third")
self.assertEqual("First", sheet.get("A"), "A")
self.assertEqual("Second", sheet.get("X"), "X")
self.assertEqual("Third", sheet.get("ZX"), "ZX")
sheet.put("A"