TypeError: 'NoneType' object is not subscriptable

python3写的程序不知道这个错误怎么改,报错的内容在图片里面。图片说明

 # -*- coding: utf-8 -*-
"""
Created on Sun Oct  8 20:20:44 2017

@author: ll
"""

import numpy as np

def findMax1(array):
    if len(array)<1:#len(array)得到列表长度
        return [-1,-1]
    index = 1
    unit = array[index]
    for j in range(1,len(array)):
        if array[j] > array[index+1] and array[j] > array[index-1]:#if的含多条件语句的写法
            unit = array[j]
            return [unit,j]#返回的是一个列表类型,最大值和它的坐标1

def getMax1(matrix, column_Num):
    array = [col[column_Num] for col in matrix]#将找到的列循环遍历后放到列表中
    return findMax1(array)

def getPeak(matrix, leftCol, rightCol):
    if rightCol <= leftCol:
        r = getMax1(matrix,leftCol)
        r.append(leftCol)
    mid = int((leftCol + rightCol) / 2)
    unit = getMax1(matrix, mid)#返回的变量名要和接收传参的名字一样

    rightElem = getMax1(matrix, mid+1)
    if leftCol == rightCol - 1:
        leftElem = unit
        if leftElem[0] > rightElem[0]:
            r = leftElem
            r.append(mid)
        else:
            r = rightElem
            r.append(mid+1)
        return r

    leftElem = getMax1(matrix, mid-1)
    if unit[0] >= leftElem[0] and unit[0] >= rightElem[0]:
        unit.append(mid)
        return unit
    if unit[0] < leftElem[0]:
        return getPeak(matrix,leftCol,mid-1)
    return  getPeak(matrix,mid+1,rightCol)



print("please input row:")
n = int(input())
print("please input column:")
m = int(input())
matrix = np.random.randint(100,999,size=[n,m])
print(matrix)

result = getPeak(matrix,0,len(matrix[0])-1)

print(result)


1个回答

你的unit,leftElem,rightElem中至少有一个是None,打印出来看看吧

u012585224
生风虎 的确是这样的,有个函数写的不完备。出错了。。。
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐