【问题标题】:Line printing in PythonPython中的行打印
【发布时间】:2016-07-26 21:30:34
【问题描述】:

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

我正在尝试了解行号的行为。

当我使用以下代码时,文本文件中的行号打印为 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)

【问题讨论】:

  • 您知道,我已经投票赞成并收藏了这个问题,因为它是格式良好的初学者问题的一个很好的例子。您已经描述了问题(带有预期和实际结果),清楚地说明了您的问题,并包含了MCVE。许多初学者(编程和使用 Stack Overflow)忽略了其中的一个或多个。请不要停止以这种方式提问。
  • 非常感谢 :) - 我会牢记这些要点,继续提出问题。

标签: python line-numbers


【解决方案1】:

current_line += current_line 扩展到

current_line = current_line + current_line

让我们看看你做了什么,通过扩展它(我们将忽略打印语句)。

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

我认为你打算使用

current_line += 1

【讨论】:

  • 谢谢你Taztingo。我现在明白了。
【解决方案2】:

您不会将current_line 的值增加一个常数因子 1,而是增加一个几何级数

current_line += current_linecurrent_line 的值赋值为自身 + 自身:

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

current_line = current_line + 1current_line += 1+=1 是将值增加 1 的语法糖)将 current_line 的值增加 1。

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

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

【讨论】:

  • 谢谢。我是编程初学者,我不知道它是如何工作的。
  • @Sarat Yeeep 别担心,坚持下去!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-05
  • 2014-10-21
  • 2018-01-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多