Skip to content

[data-types-and-variables] 变量赋值并打印 题目反馈 #293

Description

@meiyu217

哪一题

问题描述

写的和答案是一样的,但是显示代码错误

Activity

  1. LIxyLGy75LhmG commented on Jun 5, 2026

    @LIxyLGy75LhmG

    Can you provide the exact error message you're receiving when you run your code?

  2. walter201230 commented on Sep 3, 2026

    @walter201230
    Owner

    @meiyu217 感谢反馈,抱歉拖了这么久。你这条查下来牵出了三个问题,现在都已修复部署 🙏

    「写的和答案一样却报错」,最可能是下面两个原因之一:

    原因一:全角弯引号

    中文输入法会自动把 ' " 换成 ‘ ’ “ ”,肉眼几乎一模一样,Python 却完全不认:

    name = ‘水哥’   # ← 看着没问题,实际直接 SyntaxError
    name = '水哥'   # ← 这才是对的

    之前针对这类问题做过一次改进,但那次改的是输出比对环节的引号归一化。而弯引号出现在源码里时,Python 在编译阶段就直接报错,根本走不到判分那一步,所以那次改动没能覆盖到这个场景。

    现在改成:一旦检测到这类报错,会直接提示「代码里用了全角引号(“ ” ‘ ’),Python 只认英文直引号 " 和 '」。

    原因二:上一道题污染了运行环境

    网站原来用一个 Pyodide 实例跑所有练习且从不清理。如果你在前面某道题写过 name = ... 之类覆盖内置名的代码,后面的题会莫名失败,刷新页面才好。现在每道题都在隔离的全新环境里跑。

    顺带修好的:报错提示

    排查你这条时发现一个更普遍的问题——页面上不管什么错都只显示一句「代码报错:PythonError」,完全没有线索。(真正的报错其实在下方输出区里,但那句判词毫无用处。)

    原因是 Pyodide 的错误对象在浏览器和 Node 环境里形态不同:浏览器里真正的报错走的是另一条通道,而页面只读了那个没有内容的字段。现在会正确显示:

    代码报错:NameError: name 'undefined_var' is not defined
    代码报错:SyntaxError: invalid character '“' (U+201C)
    

    麻烦强制刷新(Windows Ctrl + F5,Mac Cmd + Shift + R)再试。如果还是不通过,把你的代码原样贴上来(别手打,直接复制,否则引号问题会在粘贴时被「修正」掉),我来看。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions