首页 > 解决方案 > 为什么我会收到“int is not subscriptable”错误消息?

问题描述

我正在做一个二进制到十进制的转换器,我们不能使用 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)

标签: pythonbinaryint

解决方案


你可以像这样简单地做到这一点,(ord函数将返回给定数字的 ASCII 值,因此如果你从 48 中减去数字,即 ASCII 值“0”,你将轻松转换数字)

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

推荐阅读