You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试二进制转十进制代码:Quera平台提交后报错求助

问题分析与代码修正

代码中的核心错误

  • 逻辑混淆:十进制与二进制概念错误
    你将a^b得到的十进制整数转成字符串后,错误地把这个字符串当作二进制位序列计算十进制值。比如a=3、b=5,异或结果是十进制6,转成字符串是"6",但二进制中不存在6这个数字,直接导致计算完全偏离需求。
  • 权重计算逻辑错误
    就算假设字符串是二进制,你的权重计算也不符合规则:正确的二进制转十进制是从右往左,第n位(从0开始)权重为2^n,而你从字符串长度开始计算2^i,最后除以2的写法只是巧合蒙对个别情况,逻辑不成立。
  • 变量未初始化风险
    若a或b不满足0 < a < 2^30、0 < b < 2^30的条件,变量s和z未定义,执行时会抛出NameError。

针对不同需求的正确代码

需求1:计算两个十进制整数的异或结果(直接输出十进制)

这是最符合你代码初始逻辑的需求,异或结果本身就是十进制,无需额外转换:

a = int(input())
b = int(input())
print(a ^ b)

需求2:输入两个二进制字符串,计算异或后转十进制

如果你的输入是二进制字符串,需要先转成十进制再异或:

a_bin = input().strip()
b_bin = input().strip()
a = int(a_bin, 2)
b = int(b_bin, 2)
print(a ^ b)

需求3:手动实现二进制字符串转十进制

如果需要手动完成二进制转十进制的功能,正确写法如下:

binary_str = input().strip()  # 输入二进制字符串
decimal = 0
for idx, bit in enumerate(reversed(binary_str)):
    decimal += int(bit) * (2 ** idx)
print(decimal)

内容的提问来源于stack exchange,提问作者نفیسه درویشی

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 22:13:17