0

我正在尝试创建一个 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'
4

5 回答 5

0

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

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

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

使用此逻辑,您可以添加条件检查以确保列表的元素不是 None 类型,然后您可以成功连接它

于 2019-12-29T19:25:11.140 回答
0

print()返回None。您无法将字符串添加到 print 调用的结果,因为您无法添加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
于 2019-12-29T19:25:19.107 回答
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)
于 2019-12-29T19:38:49.553 回答
0

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

In lineprint (" ".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'中所述相同的行为,因此会引发相同的错误

于 2019-12-29T19:31:32.117 回答
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.

于 2019-12-29T21:27:25.193 回答