Python中的线条打印

Python中的线条打印,python,line-numbers,Python,Line Numbers,这个练习来自Zed Shaw书的第20章 我试图理解行号的一种行为 当我使用下面的代码时,文本文件中的行号被打印为4,这是错误的。它在第三行 current_line += current_line 但是,当我使用以下命令时,行号显示正确 current_line = current_line + 1 请有人解释一下,在我看来,这两行是一样的,这两行有什么不同,以及为什么会有不同 以下是完整代码: from sys import argv script, input_file = argv

这个练习来自Zed Shaw书的第20章

我试图理解行号的一种行为

当我使用下面的代码时,文本文件中的行号被打印为4,这是错误的。它在第三行

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)

当前_线+=当前_线向外扩展到

current_line = current_line + current_line
让我们来看看你做了什么,通过展开它(我们将忽略print语句)

我想你是想用

current_line += 1

您没有将当前行的值增加常量因子1,而是按几何级数增加

current\u-line+=current\u-line
current\u-line
的值赋值为自身
+
自身:

current_line = 5
current_line = current_line + current_line
>>> current_line
>>> 10
current\u line=current\u line+1
current\u line+=1
+=1
是将值增加1的语法糖)将
current\u line
的值增加1

current_line = 5
current_line = current_line + 1
current_line += 1
>>> current_line
>>> 7

由于
current\u line
是行号的计数器,因此在这种情况下应使用
+=1

谢谢你,塔斯廷戈。我现在明白了,谢谢。我是一个编程新手,我不知道它是如何工作的。@Sarat Yeeep别担心,坚持下去!正如你们所知,我对这个问题投了赞成票,因为它是一个结构良好的初学者问题的极好例子。您已经描述了问题(包括预期结果和实际结果),清楚地说明了您的问题,并包含了一个示例。许多初学者(编程和使用堆栈溢出)忽略了其中一个或多个。请不要停止以这种方式提问。非常感谢:)-我会记住这些要点,然后提问。
current_line = 5
current_line = current_line + 1
current_line += 1
>>> current_line
>>> 7