python - 数组括号内的表达式是什么意思?
问题描述
我不明白这段代码想说什么。
expectedContent = content[offset + readOffset : offset + readOffset + readSize]
这部分代码是测试器的一部分,它会自动纠正我的家庭作业,它在这个函数里面
def test_read_section(self, fname):
score = 0
subprocess.call(["ipcrm", "shm", self.data["shm_key"]], stderr=open(os.devnull, "w"))
self.writeString("CREATE_SHM")
self.writeNumber(int(self.data["shm_size"]))
r = self.readString()
if r != "CREATE_SHM":
return score
r = self.readString()
if r != "SUCCESS":
return score
# check if the shm actually exists
shm = self.shmget(int(self.data["shm_key"]), int(self.data["shm_size"]), 0)
if shm < 0:
if VERBOSE:
print "[TESTER] shm with key %s not found" % self.data["shm_key"]
return score
shAddr = self.shmat(shm, 0, 0)
score = 1
self.writeString("MAP_FILE")
self.writeString(fname)
r = self.readString()
if r != "MAP_FILE":
return score
r = self.readString()
if r != "SUCCESS":
return score
score = 2
sections = getSectionsTable(self.data, fname)
self.writeString("READ_FROM_FILE_SECTION")
self.writeNumber(len(sections)+2)
self.writeNumber(0)
self.writeNumber(100)
r = self.readString()
if r != "READ_FROM_FILE_SECTION":
return score
r = self.readString()
if r != "ERROR":
return score
score = 4
fin = open(fname, "rb")
content = fin.read()
fin.close()
sectIds = random.sample(range(len(sections)), 3)
for sectId in sectIds:
_name, _type, offset, size = sections[sectId]
readOffset = random.randint(0, size/2)
readSize = random.randint(5, size/2)
expectedContent = content[offset + readOffset : offset + readOffset + readSize]
self.writeString("READ_FROM_FILE_SECTION")
self.writeNumber(sectId+1)
self.writeNumber(readOffset)
self.writeNumber(readSize)
r = self.readString()
if r != "READ_FROM_FILE_SECTION":
print "!!!!!%d " % (sectId+1)
return score
r = self.readString()
if r != "SUCCESS":
print "[ANDREI] sectid:%d, readOffset: %d, readSize: %d" % (sectId+1,readOffset,readSize)
return score
readContent = ctypes.string_at(shAddr, readSize)
if readContent != expectedContent:
if VERBOSE:
print "[TESTER] read content incorrect"
else:
score += 2
return score
解决方案
实际上这不是一个操作,而是列表“内容”的截断,从索引开始:(offset + readOffset),到 inex 结束:(offset + readOffset + readSize)
推荐阅读
- sympy - 有没有一种非破解方法可以在 SymPy 中使用整数打印连分数而无需评估?
- javascript - NodeJS Fabric 和浏览器画布渲染的区别
- c# - DocumentProperties 未使用新的 DEVMODE 结构更新打印作业
- javascript - 使用 ajax 注入时,带有 src 链接的 Js 脚本将不起作用
- arrays - 将数组元素除以数组的总和 vba
- r - 复制交叉设计中的线性混合模型
- ms-access - 重新编号序列号
- python - 如果值在另一个列表中,如何根据条件对列求和
- c# - 如何从文本框禁用 Datagrid 之间的更新?
- oracle - Oracle XE 18c 重命名 SID