【发布时间】:2019-09-17 23:35:23
【问题描述】:
我正在做一个二进制到十进制的转换器,我们不能使用 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)
【问题讨论】:
-
那行有几个问题。首先,
binaryNum是一个整数,这是错误告诉你的——[power]更像是索引列表或通过键在字典中查找值的语法;你不能索引一个整数。目前尚不清楚您希望该语法是什么。如果该语法有效,您可以将结果显式转换为整数,然后尝试将其与不能为 True 的字符串 ('1') 进行比较。 -
好吧 - 从逻辑上考虑。要么你知道所有的答案,并且可以自己弄清楚;否则你需要问一个更精确的问题。你知道
int是什么吗?你知道什么是下标吗?您了解错误抱怨的代码行吗?你明白为什么下标int没有意义吗?您看到该行上发生下标操作的位置了吗?你知道哪个值被下标吗?你明白为什么那个值在代码中的那个点是int吗? -
如果你不允许使用
int()或bin(),那你为什么有int(binaryNum)? -
询问错误时,请确定问题行(回溯)。在该行中查找下标。变量是什么?