2016-07-26 28 views
3

この演習は、Zed Shawの本の第20章からのものです。Pythonでのライン印刷

私は行番号の動作を理解しようとしています。

次のコードを使用すると、テキストファイルの行番号が4として表示されますが、これは間違っています。 3行目です。私は、次を使用する場合

current_line += current_line 

しかし、行番号が正しい示し

current_line = current_line + 1 

誰かが親切に私には同じに見える上記の二つのラインの違いであり、そしてなぜそれが作っているものを説明することができます違い。

後は、完全なコードです:

from sys import argv 
script, input_file = argv 

def print_all(f): 
    print f.read() 

def rewind(f): 
    f.seek(0) 

def print_a_line(line_count, f): 
    print line_count, f.readline() 

current_file = open(input_file) 

print "First let's print the whole file:\n" 

print_all(current_file) 

print "Now let's rewind, kind of like a tape." 

rewind(current_file) 

print "Let's print three lines:" 

current_line = 1 
print_a_line(current_line, current_file) 

current_line += current_line 
print_a_line(current_line, current_file) 

#current_line = current_line + 1 
current_line += current_line 
print_a_line(current_line, current_file) 
+0

あなたが知っていることは、うまく構成された初心者の質問の優れた例であるためです。あなたは問題を(予想された結果と実際の結果とともに)記述し、あなたの質問を明確に述べ、[MCVE](http://stackoverflow.com/help/mcve)を含めました。多くの初心者(プログラミングとスタックオーバーフローを使用する)は、これらのうちの1つ以上を除外します。このように質問をしないでください。 – skrrgwasme

+0

ありがとうございました:) - これらの点を念頭に置いて、前向きに質問していきます。 – Sarat

答えて

2

CURRENT_LINE + = CURRENT_LINEはそれを拡張することにより

current_line = current_line + current_line 

だから、あなたが何をしたかを見てみましょうに出て展開する(私たちは無視されますprintステートメント)。

current_line = 1 
current_line = current_line + current_line # (1 + 1 = 2) 
#current_line = 2 
current_line = current_line + current_line # (2 + 2 = 4) 
#current_line = 4 

私はあなたがあなたの代わりにあなたが等比数列により増加している、1の一定の係数によってcurrent_lineのの値を大きくしていない

current_line += 1 
+0

ありがとうTaztingo。今、私は分かる。 – Sarat

+0

問題ありません:)。 – Taztingo

0

を使用するためのものだと思います。

current_line += current_line+current_lineの値は、それ自体であること自体を割り当て:

current_line = 5 
current_line = current_line + current_line 
>>> current_line 
>>> 10 

current_line = current_line + 1又はcurrent_line += 1+=1 によって値を増加させるための糖衣構文である)1

によって current_lineの値を増加させます
current_line = 5 
current_line = current_line + 1 
current_line += 1 
>>> current_line 
>>> 7 

current_lineこの場合、の行番号の場合は+= 1を使用してください。

+0

ありがとう。私はプログラミングの初心者であり、これがどのように機能するのか分からなかった。 – Sarat

+0

@Sarat Yeeep、心配する必要はありません! – ospahiu