Python-TypeError:+不支持的操作数类型:“ NoneType”和“ str”?我究竟做错了什么?

时间:2019-12-29 19:18:47

标签: python list typeerror displaylist

我试图创建一个Python定义来显示列表,并尝试添加一个功能,如果列表超过10个,它将水平显示。

这是我的代码:

def print_vert_list(list):
index = 0
for i in list:
    if len(list) > 10:
        print (" ".join(list[index]) + " ".join(list[11:11+index])) + " ".join(list[21:21+index])
    else:
        print (" ".join(list[index]))
        index += 1

这是日志:

Traceback (most recent call last):
File "**********", line 30, in <module>
print_vert_list(file_var_list)
File "**********", line 22, in print_vert_list
print (" ".join(list[index]) + " ".join(list[11:11+index])) + " ".join(list[21:21+index])
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

5 个答案:

答案 0 :(得分:0)

列表中必须包含一个不是字符串的元素。错误消息告诉您程序正在中断,因为您尝试将None类型与字符串类型连接在一起。例如:

a = "string1" + "string2" print(a) # will give you string1string2

但是,如果您尝试 a = None + "string1" # You will get the same error message

使用此逻辑,您可以添加条件检查以确保列表的元素不是None类型,然后可以成功地将其串联起来

答案 1 :(得分:0)

print()返回None。您无法在打印结果中添加字符串,因为您无法添加None和字符串

print(" ".join(list[index]) + " ".join(list[11:11+index])) + " ".join(list[21:21+index])
                                   end of the print call ^ ^ You cannot add a string here

答案 2 :(得分:0)

+运算符仅针对字符串(...和数字,但在另一上下文中...)

print (" ".join(list[index]) + " ".join(list[11:11+index])--->>>)<<<--- + " ".join(list[21:21+index])行中的括号是错误的。打印函数返回NoneType,并且由于此附加括号,解释器认为打印语句在此处结束。因此,此附加括号会导致与Python 3.3 TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'中所述的行为相同,并引发相同的错误

答案 3 :(得分:0)

如果我对问题的理解正确,那么这是一个解决方案:

def print_vert_list(list_items):
    if len(list_items) > 10:
        for i in list_items:
            print(i, end=' ')
    else:
        for i in list_items:
            print(i)

答案 4 :(得分:0)

该行中的括号是错误的。您想要:

print (" ".join(list[index]) + " ".join(list[11:11+index]) + " ".join(list[21:21+index]))

代替:

print (" ".join(list[index]) + " ".join(list[11:11+index])) + " ".join(list[21:21+index])

这会给您带来错误,因为您尝试将字符串添加到返回值print中。