技术咨询:如何设置输出按行打印及基于逻辑运算符实现位运算的正确结果输出
问题解答
问题1:调整输出格式,一次性打印完整结果
你当前的代码在循环里每计算一位就打印一次,所以会输出多行结果。要实现预期的“最后一次性输出完整二进制字符串”的效果,只需要把每一位的计算结果先拼接成一个字符串,等所有位都计算完后再统一打印就行。
问题2:用逻辑与/或模拟位运算
你的代码现在有个关键问题:直接用字符串形式的二进制字符(比如'0'、'1')做逻辑运算。在Python里,非空字符串都会被视为布尔值True,哪怕是'0'也不例外,这就导致逻辑运算的结果不符合位运算的预期。
正确的做法是先把每个二进制字符转成整数(0或1),再用逻辑运算符计算,最后把结果转回字符串拼接起来。我帮你修正了代码,同时也加入了逻辑或的支持:
def main(): expression = input("Enter binary expression: ") binary1, operator, binary2 = expression.split(" ") result = "" # 同时遍历两个二进制字符串的每一位(假设输入的两个二进制串长度一致) for b1_char, b2_char in zip(binary1, binary2): # 把字符转成整数,这样0对应False,1对应True b1 = int(b1_char) b2 = int(b2_char) if operator == "&": # 逻辑and模拟位与:只有两个都是1时结果为1 bit_result = 1 if (b1 and b2) else 0 elif operator == "|": # 逻辑or模拟位或:只要有一个是1结果为1 bit_result = 1 if (b1 or b2) else 0 else: print("抱歉,只支持&和|运算符哦!") return # 把当前位的结果转成字符串拼接到结果里 result += str(bit_result) # 所有位计算完成后,一次性打印最终结果 print("Result is:", result) main()
现在测试输入1011 & 0011,就会输出Result is: 0011,完全符合你的预期。如果输入1011 | 0011,会得到1011,也符合位或的结果。
内容的提问来源于stack exchange,提问作者mrBubu
相关产品推荐
相关产品推荐

