我写了一个函数,它接受一个字符串并使用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'