python - 为什么我会收到“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)
解决方案
你可以像这样简单地做到这一点,(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
推荐阅读
- python - 熊猫没有从使用“\”的路径读取多个 Excel 文件
- javascript - 使用未在 Laravel 上更新的复选框进行 Ajax DB 更新
- docker - 在不使用“--net host”选项的情况下接收 docker 容器内的 UDP 多播数据包
- c++ - 每当我运行这个程序 C++ 时都会出错。我做错了什么
- javascript - 使用 image-size 检索图像尺寸,并将这些值添加到对象
- terraform - 使用 GCP 的 Terraform:将 vm 实例复制到不同的 gcp 项目
- ruby-on-rails - 如何允许管理员用户伪装成未确认电子邮件的普通用户
- c# - PInvoking stdin、stdout 和 stderr 到非托管 dll
- c# - LiveCharts SeriesCollection 未在 CartesianChart 上显示
- go - 将 go 函数导出到 C - 非法字符