前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >写机器人遇到 2 个 BUG,百思不得其解

写机器人遇到 2 个 BUG,百思不得其解

作者头像
查克
发布2024-12-06 12:40:28
发布2024-12-06 12:40:28
3200
代码可运行
举报
文章被收录于专栏:碲矿碲矿
运行总次数:0
代码可运行

第一个 BUG,昨天群友的 PR 合并之后,Github Action 编译失败了。

我以为是优化脚本导致的原因,把脚本回滚了,还是失败。

这就莫名其妙了,之前都是好好的。

有没有群友帮忙调试一下,看看哪里出的问题。

第二个 BUG 就比较有意思了。

代码语言:javascript
代码运行次数:0
复制
#! /usr/bin/env python3
# -*- coding: utf-8 -*-

if __name__ == "__main__":
    name = "smallImage"
    capitalized_name = "SmallImage"
    if True:
        events = f"const [{name}FileList, set{capitalized_name}FileList] = useState([]);\n",
    else:
        events = ""
    print(f"{type(events)}: {events}")

很简单吧,大家认为输出什么呢?

赋值是拷贝过来的,人家的代码跑得好好的,也没多想。

结果到了我这儿死活不对头,研究了半天。

最后跟人说你的代码有 BUG,然后人家研究了半天找出了问题。

不过 AI 却一下子找到了问题所在。

解释工作交给 AI 吧。


这段代码的输出是:

代码语言:javascript
代码运行次数:0
复制
<class 'tuple'>: ('const [smallImageFileList, setSmallImageFileList] = useState([]);\n',)

解释

events的定义:

  • if 语句中,events 被赋值为一个包含单个字符串的元组,而不是一个字符串。
  • 这是因为赋值语句中的逗号 ** , ** 是创建元组的标志,即: events = "const [smallImageFileList, setSmallImageFileList] = useState([]);\n", 由于结尾有逗号,这行代码实际上创建了一个元组,即使只有一个元素。

type(events):

  • 使用 type(events) 会返回 tuple,因为 events 被定义为一个单元素元组。

元组的显示:

  • 元组的打印格式会在元素后面添加一个逗号和括号,即: ('元素内容',)
  • 在这里,输出的是: ('const [smallImageFileList, setSmallImageFileList] = useState([]);\n',)

修复方式

如果你希望 events 是一个字符串而不是元组,可以去掉逗号:

代码语言:javascript
代码运行次数:0
复制
if True:
    events = f"const [{name}FileList, set{capitalized_name}FileList] = useState([]);\n"
else:
    events = ""

这样输出结果会是:

代码语言:javascript
代码运行次数:0
复制
<class 'str'>: const [smallImageFileList, setSmallImageFileList] = useState([]);
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 碲矿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 解释
  • 修复方式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档