Python类型错误:字符串与浮点数无法执行-=运算问题求助
问题解决:十进制转二进制时的TypeError错误
错误原因
触发TypeError: unsupported operand type(s) for -=: 'str' and 'float'的核心问题是:answer2从input()获取后一直是字符串类型,哪怕你用int(answer2)做了大小判断,但并没有把answer2本身转为数值类型,后续执行answer2 -= x时,字符串和数值无法进行减法运算,直接报错。
修正方案
- 确认输入是有效数字后,立即将
answer2转换为整数类型 - 循环中对
x的除法改用整数除法//,避免x变成浮点数,同时符合二进制位判断的逻辑
修正后的完整代码
import math x = 4096 y = "" z = 10 q = 1 final_answer = 0 answer1 = input("Do you want to convert decimal into binary (1) or binary into decimal (2)?") if answer1 == "1": answer2 = input("What number do you want to convert to binary? It can't be larger than 4096") p = answer2.isdigit() if p: # 转换为整数类型 answer2 = int(answer2) for i in range(13): if answer2 >= x: y += "1" answer2 -= x else: y += "0" # 使用整数除法,保持x为整数 x = x // 2 print(y) else: print("That's not a number")
内容的提问来源于stack exchange,提问作者BenDeagle
相关产品推荐
相关产品推荐

