python - 有人可以帮我解决我的python整数错误吗
问题描述
我正在创建一个简单的二进制搜索算法,但我不断收到此错误:
'int' 不可下标
while not found and firstPos <= lastPos:
midPos = (int(firstPos + lastPos)/2)
if searchNumber == lastPos[midPos]:
found = True
else:
if searchNumber < lastPos[midPos]:
lastPos = midPos - 1
else:
firstPos = midPos + 1
解决方案
问题出在代码中:
lastPos[midPos]
这里 lastPos 是一个数字。不能下标数字。根据您的逻辑,您的代码应类似于:
if searchNumber == data[midPos]:
found = True
else:
if searchNumber < data[midPos]:
lastPos = midPos - 1
else:
firstPos = midPos + 1
这是假设,您正在搜索的数组名为data。使用您的阵列名称。
推荐阅读
- macos - 为什么使用 contentFilters 会改变整个窗口的外观,我可以停止它吗?
- node.js - NodeJS 以批处理方式停止和启动
- c# - Json.Net 序列化为自定义转换器提供了错误的属性
- ios - NWConnection SSDP 发现未接收数据
- here-api - 带有 GeoWebCache 的 HERE API
- javascript - 在从 Jest 模拟方法触发之前如何创建模拟 DOM?
- python - 如何从 python 字符串中删除特定的单词或字符串,而不用 Python 中的其他单词修剪它?
- azure-ad-b2c - 将自定义 JWT 传递到 Azure AD B2C 中的 RelyingParty 自定义配置文件
- html - 我的导航栏不是一直向左
- python - 如何从配置中实例化 DB 对象?