Python 3 - 函数返回无类型,但打印给出正确的输出

时间:2017-12-13 03:39:15

标签: python-3.6

我写了一个函数,它接受一个字符串并使用for循环读取字符串中的每个字母。根据两个相邻字母的内容,它会将新字母写入新字符串。一旦for循环结束,如果新字符串的长度大于1,它将使用新字符串再次调用该函数。一切似乎工作正常,除了它返回一个无类型。它将从函数内部打印正确的输出,类型是正确的(字符串),但是当我打印(三角形(行))时,我得到一个无类型。我在Spyder中运行了调试器,并使用变量explorer跟踪每一步。我确信我错过了一些简单的东西,但我不知道它是什么。

def triangle(row):

    newRow = ''
    i = 0 # index of the string

    if len(row) <= 1: # if it is only one letter, just return that
        return row


        for y in range(len(row)-1):
            if row[i] == row[i + 1]:
                newRow += row[i] 
            elif row[i] == 'B' and row[i + 1] == 'G':
                newRow += 'R'
            elif row[i] == 'G' and row[i + 1] == 'B':
                newRow += 'R'
            elif row[i] == 'R' and row[i + 1] == 'G':
                newRow += 'B'
            elif row[i] == 'G' and row[i + 1] == 'R':
                newRow += 'B'
            elif row[i] == 'B' and row[i + 1] == 'R':
                newRow += 'G'
            elif row[i] == 'R' and row[i + 1] == 'B':
                newRow += 'G'
            i += 1
        if len(newRow) > 1:
            triangle(newRow)

        else:
            print(newRow) # prints 'B'
            print(type(newRow)) # prints <class 'str'>
            return newRow

row = 'RGBG'
triangle(row) # should output 'B'

0 个答案:

没有答案