2017-01-04 10 views
0
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が残りのコードを実行し続けるのかも非常に混乱しています。なぜlen(point_str)は1を返しますか?

+3

「points_str」には複数の値が含まれていますか? – user2357112

+0

はい、長さが1であることを確認するためにprint(len(points_str))を追加しました。 – Laptic

+0

これは、以前の値ではなく、 'points_str'に割り当てられた最終値の長さだけを表示しています。 – user2357112

答えて

-1

これは、長さが1であるためです。少なくとも、最初の反復では。 points_strがあるので

あなたの最初の行は、「6」である[「6」]、あなたは本当にデバッガを使用する必要があります。1.

の長さを有しています。

+0

私はデバッガにあまり慣れていませんが、説明できますか? – Laptic

+0

これは、最後の反復の結果であり、最初のものではなく、印刷されます。 –

+0

最後の行は0です。デバッガを使用します。 – zmbq

0

まず、すべての繰り返しをループしてから、len(points_str)を印刷します。今度はpoints_strは各繰り返しで新しい値を取得しますが、最後にのみ印刷するので、の最後のの値はpoints_strになります。これはstring_input.split("\n")の最後の要素で、'0'です。 '0'の長さは、確かに1

あるラインにループの内部

print(len(points_str)) 

を移動してみてください(つまり、ちょうど4つのスペースを追加)し、出力を確認してください。その長さだけでなく、points_strも印刷してみてください。

関連する問題