Python在IF语句内赋值字符串报标识符含无效字符错误如何解决
你遇到的Invalid character in identifier报错和变量声明位置完全无关,先明确两个基础点:
- Python允许在if分支内首次创建并赋值变量,只要所有代码执行路径都能覆盖到该变量的赋值,就不会出现未定义问题,你写的四个if分支已经覆盖了所有逻辑场景,
answer必然会被赋值,不存在声明位置的问题。 - 如果你真的遇到变量未定义的情况,报错会是
NameError: name 'answer' is not defined,和你现在收到的报错类型完全不同。
这个报错的唯一原因是你代码里的answer变量名混入了肉眼不可见的特殊Unicode字符,大概率是你从其他地方(比如网页、文档、聊天记录)复制粘贴代码的时候带了零宽空格、全角隐形符号这类额外字符,Python解析器识别的时候把这些不可见字符也算成了变量名的一部分,不符合标识符命名规则就会抛出这个错误。
解决方法
- 把代码里所有出现
answer的位置全部手动逐字重新输入一遍,不要使用复制粘贴,确保每个字符都是半角英文字母,没有额外字符即可解决该报错。 - 你当前的代码还存在逻辑错误:前三个判断条件里你误用了乘法运算符
*,你的需求是判断某个数是否等于另外两个数之和的两倍,需要把对应位置的乘法改成加法,不然就算解决了报错问题,运行结果也不符合预期。
修复后的完整代码
a = 2 b = 3 c = 10 if a == 2 * (b + c): answer = 'a is double the sum of the others' if b == 2 * (a + c): answer = 'b is double the sum of the others' if c == 2 * (a + b): answer = 'c is double the sum of the others' if a != 2 * (b + c) and b != 2 * (a + c) and c != 2 * (a + b): answer = 'No number is double the sum of the others' print(answer)
上述代码运行后输出为:c is double the sum of the others,符合逻辑预期。
内容的提问来源于stack exchange,提问作者user17230533
相关产品推荐
相关产品推荐

