某公司python面试笔试题

这是一份Python编程笔试题,涉及创建一个简单的Excel对象,实现包括获取和设置单元格值、处理公式等功能。笔试者需根据提供的测试用例完善代码,测试用例分布在多个测试文件中,难度逐渐增加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【招聘】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"
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值