我正在制作一个二进制到十进制转换器,我们不能使用 int() 或 bin()。我认为我已经得到了正确的代码,除了它一直告诉我“int 不可下标”!帮助!
binaryNum = input("Enter a binary number: ") decimalNum = 0 count=0
while(int(binaryNum))>0:
count=count+1
binaryNum=int(binaryNum)//10
power = count
while power >= 0:
if int(binaryNum[power]) == '1': #here is the problem
decimalNum += 2**power
power -= 1
print(decimalNum)
您可以简单地这样做,(ord
函数将返回给定数字的 ASCII 值,因此如果您从 48 中减去该数字,即 '0' 的 ASCII 值,您将轻松转换数字)
binary = input('enter a number: ')
decimal = 0
for digit in binary:
digit = ord(digit) - 48
decimal = decimal*2 + digit
print(decimal)
如果你不想使用额外的功能,你可以这样做
binary = input('enter a number: ')
decimal = 0
for digit in binary:
digit = 1 if digit == '1' else 0
decimal = decimal*2 + digit
print(decimal)
而你的问题原因是你不能迭代一个整数
while(int(binaryNum))>0:
count=count+1
binaryNum=int(binaryNum)//10 ### here you assign binaryNum as integer
power = count
while power >= 0:
if int(binaryNum[power]) == '1': ### and you cant iterate binaryNum because it is an integer
decimalNum += 2**power
power -= 1
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句