Python代码打印不需要的线路



我无法弄清是什么导致我的代码在执行结束时打印"无"。该代码应该读取带有零矩阵和其中一个的矩阵的TXT文件,并打印由第一名形成的正交"岛"的坐标。

from itertools import groupby
from operator import itemgetter
def matrixReader(inputFile): # Reads the file and creates the matrix map.
    w, h = map(int, inputFile.readline().strip().split())
    matrix = [list(map(int, line.strip())) for line in inputFile]
    return matrix, h, w
def matrixAdvancedSweeper(matrix, h, w): # Swipes the matrix map after NEW land chunks and makes a tuple for each piece of land.
    islandCount = 1
    landCoordinates = []
    for y in range(h):
        for x in range(w):
            if matrix[y][x] == 1:
                islandCount += 1
                islandSorter(matrix, y, x, islandCount)
            if matrix[y][x] > 1:
                landCoordinates.append((matrix[y][x]-1, y, x)) # Creates a list of tuples with the number of the island, height position and width position.
    return sorted(landCoordinates, key=itemgetter(0, 1)) # Sorts the list of tuples (first) by number of the island and (second) by height position.
def islandSorter(m, h, w, c): # Recursive function to enumerate and hide any land attached to a chunk already swiped.
    if m[h][w] == 1:
        m[h][w] = c
        if w < len(m[0]) - 1: islandSorter(m, h, w + 1, c)
        if h < len(m) - 1: islandSorter(m, h + 1, w, c)
        if w > 0: islandSorter(m, h, w - 1, c)
        if h > 0: islandSorter(m, h - 1, w, c)
def coordinatePrinter(sortedCoordinates): # Prints the groups of coordinates that forms each island.
    for key, group in groupby(sortedCoordinates, lambda x: x[0]): # Creates groups using the first item of the tuples as key and traverses those returning each key and group.
        print('____________n  Island %snCoordinates:' % (key))
        for tile in group:
            print(' x %s   y %s' % (tile[1], tile[2]))
with open('TestFile.txt') as inputFile: # Opens the defined file to execute the nested code and than closes it.
    print(coordinatePrinter(matrixAdvancedSweeper(*matrixReader(inputFile))))

这是它应该读取的文件(testfile.txt(的一个典范:

4 4
1110
0000
0000
0110

问题是在调用该方法时正在使用的打印语句:

with open('TestFile.txt') as inputFile: # Opens the defined file to execute the nested code and than closes it.
    print(coordinatePrinter(matrixAdvancedSweeper(*matrixReader(inputFile))))

打印语句的返回类型为 None。因此,一旦您的函数执行完成,您的打印语句使用None

退出

简单的解决方案就是删除print,例如:

with open('TestFile.txt') as inputFile: # Opens the defined file to execute the nested code and than closes it.
    coordinatePrinter(matrixAdvancedSweeper(*matrixReader(inputFile)))

由于您已经在coordinatePrinter功能中打印值

最新更新