我试图创建一个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'
答案 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
中。