上一集,我们用DeepSeek教我们选择了一款在VC++下面的使用的XLSX文件开源库,并且简单教会我们使用他(OpenXLSX库,可以在Windows和Linux下均可适用)。在这一集,我们让AI教我们定义函数。

1.把我们的问题描述清楚

在我的现实需求中,因为要处理EXCEL文件,也就是说,我们处于两个业务层的中间,在机械工艺部门来说,他们需要表过明确,比方如果需要一定确定的:是/否,那么在XLSX中,一定会表达为:“是/否”,但是在我们的软件中,一般会表达为:1/0,或者true/talse,而在NC文件或者在机械自动化PLC或者高一级的系统中,表达为:1/0,所以在转换时,就需要将“是”转换为:1。那我们将我们的这个需求给AI,看他怎么来处理。

2.定义一个如果是"是" 就为数字 1 ,否则为数字 0的函数

AI根据我们的要求,很快就给出答案。

嗯,我需要定义一个函数,当输入是“是”的时候返回1,否则返回0。那首先我应该考虑这个函数的结构。函数应该接受一个参数,对吧?比如说输入一个字符串,然后判断这个字符串是否是“是”,如果是的话返回1,否则返回0。

那函数的逻辑应该比较简单。首先,检查输入是否等于“是”。如果是,返回1。否则,不管是其他什么情况,比如“否”、空字符串、或者其他任何输入,都返回0。那这样应该就可以满足需求了。

不过,可能要考虑一些特殊情况。比如,用户输入的是否有其他大小写的问题,比如“YES”或者“Yes”,但题目里给出的例子是“是”,所以可能不需要处理其他情况,只需要严格匹配“是”这个字符串。也就是说,只有当输入严格等于“是”的时候,才返回1,其他所有情况都返回0。这样的话,函数就不需要考虑大小写转换或者其他字符串的情况。

那具体怎么实现呢?在Python里,可以定义一个函数,比如叫做check_yes,参数是s。然后在函数体内判断s是否等于“是”。如果是的话,return 1,否则return 0。这样的话,代码应该很简洁。

比如:


def check_yes(s):

if s == "是":

return 1

else:

return 0



或者更简洁的写法,可以用三元表达式:



def check_yes(s):

return 1 if s == "是" else 0

这样应该就可以实现所需的功能了。

不过,有没有可能用户输入的是其他类型的参数,比如数字或者其他类型?题目里有没有说明参数的类型?比如,函数是否应该处理非字符串的情况?例如,如果输入的是整数1,或者布尔值True,这时候应该如何处理?

最终给出来这样的函数:

def check_yes(s):
    return 1 if s == "是" else 0

3.但是我用的是VC++,因此并不符合我的要求

“需要C++定义”,注意,这里没有上下文,我直接给出这个要求:“需要C++定义”,体会一下,这个的过程。

AI给出这样的答案:

在 C++ 中实现类似功能的函数可以通过直接比较字符串内容完成。以下是定义和解释:

#include <string>

int check_yes(const std::string& s) {
    return (s == "是") ? 1 : 0;
}

关键点解析:

  1. 参数类型

    • 使用 const std::string& 接收字符串参数,避免不必要的拷贝。

    • 直接支持标准字符串类型 (std::string)。

  2. 字符串比较

    • s == "是" 严格比较字符串内容(区分大小写和编码)。

    • 若输入字符串完全匹配 "是",返回 1,否则返回 0

  3. 编码要求

    • 确保源代码文件保存为 UTF-8 编码(多数现代编译器支持)。

    • 编译器需正确识别中文字符(如 GCC/Clang 需 -finput-charset=UTF-8 选项)。

  4. 类型安全

    • 仅接受 std::string 类型输入,非字符串类型会在编译时报错,符合“不处理类型转换”的需求。

扩展:兼容 const char* 的版本

若需支持 C 风格字符串,可重载函数:

cpp

int check_yes(const char* s) { return (std::string(s) == "是") ? 1 : 0; }

示例调用

#include <iostream>

int main() {
    std::cout << check_yes("是");   // 输出 1
    std::cout << check_yes("否");   // 输出 0
    std::cout << check_yes("YES");  // 输出 0
    return 0;
}

4.最大的优势,在DeepSeek辅助编程时,他会自己联系上下文。

对同一个问题,可以连续提问,相互互动。DS这个Ai他能够自己联系之前的回答我我们提的问题。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐