生风虎 2017-10-09 01:17 采纳率: 100%
浏览 18322
已采纳

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条回答 默认 最新

  • Gods_Dusk 2017-10-10 07:35
    关注

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

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。