为什么len(point_str)返回1?

时间:2017-01-04 22:11:42

标签: python-3.x

import sys
string_input = "6\n212 132322\n212 21\n65 56\n32 3\n3232 32\n313 13\n0"
# a two dimensional array to store points
points = []
for line in string_input.split("\n"):
    # split the inputed line using space to divide x and y coordinate
    points_str = line.split(" ")
    point_coordinate = []
    if len(points_str) != 1:
        for val in points_str:
            point_coordinate.append(int(val))
            points.append(point_coordinate)
        print(str(points))
print(len(points_str))

为什么len(points_str)返回1?我也很困惑为什么1!= 1继续执行其余的代码。

2 个答案:

答案 0 :(得分:0)

首先你的循环遍历所有迭代,然后打印出len(points_str)。现在points_str在每次迭代中都会获得一个新值,但由于您只在最后打印,因此您获得了points_str分配的 last 值的长度。这是string_input.split("\n")的最后一个元素,即'0''0'的长度确实是1。

尝试移动线

print(len(points_str))

循环内部(即只添加四个空格)并检查输出。您还应该尝试打印points_str,而不仅仅是它的长度。

答案 1 :(得分:-1)

好吧,因为它的长度为1.至少在你的第一次迭代中。

你的第一行是“6”,所以points_str是[“6”],长度为1。

你应该真的使用调试器。