我正在制作一个二进制到十进制的转换器,我们不能使用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)
答案 0 :(得分:0)
您可以像这样简单地进行操作((ord
函数将返回给定数字的ASCII值,因此,如果从48中减去数字即ASCII值“ 0”,则可以轻松地转换数字)< / p>
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
答案 1 :(得分:0)
在第一个循环之后,binaryNum
是一个数字,而不是字符串。
限制的要点是,您根本不应该将输入转换为数字,而您正在使用int
3 次,这是您的三倍。允许。
相反,循环输入字符串中的数字。
每次迭代都乘以2。
如果数字为'1'
,则将结果加1。
binaryNum = input("Enter a binary number: ")
number = 0
for digit in binaryNum:
number *= 2
if digit == '1':
number += 1