Python初学者使用for循环计算二进制数时遇TypeError问题求助
问题排查与解决方案
错误原因
你代码里的binairy是字符串类型(列表里的元素用双引号包裹,属于字符串),Python不支持字符串和整数直接进行幂运算(**),所以抛出TypeError。
解决方案
根据你的需求(计算二进制数+获取长度),分两种场景给出代码:
场景1:二进制转十进制后计算平方
如果是想把二进制数转换成十进制整数后计算平方,同时获取原二进制字符串的长度:
for binary in ["101011101"]: # 将二进制字符串转为十进制整数 decimal_num = int(binary, 2) # 计算平方 squared_result = decimal_num ** 2 print(f"十进制平方结果:{squared_result}") # 打印原二进制数的长度 print(f"原二进制数长度:{len(binary)}")
场景2:计算二进制数的平方并保留二进制形式
如果需要平方结果仍为二进制字符串,同时可查看原数和结果的长度:
for binary in ["101011101"]: decimal_num = int(binary, 2) squared_decimal = decimal_num ** 2 # 将平方后的十进制数转回二进制字符串,去掉默认的'0b'前缀 squared_binary = bin(squared_decimal)[2:] print(f"二进制平方结果:{squared_binary}") print(f"原二进制数长度:{len(binary)}") print(f"平方后二进制数长度:{len(squared_binary)}")
另外注意:变量名binairy是拼写错误,正确应为binary,虽然不影响代码运行,但建议修正以符合规范。
内容的提问来源于stack exchange,提问作者Cplay
相关产品推荐
相关产品推荐

