【问题标题】:Zed Shaw exercise 20 doesn't work [closed]Zed Shaw 练习 20 不起作用[关闭]
【发布时间】:2014-12-15 10:32:13
【问题描述】:

当我在下面输入时:

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 + 1
    print_a_line(current_line, current_file)

    current_line = current_line + 1
    print_a_line(current_line, current_file)

它不能在我的 powershell 中打印或工作它应该打印这个:

First let’s print the whole file:
This is line 1
This is line 2
This is line 3
Now let’s rewind, kind of like a tape.
Let’s print three lines:
1 This is line 1
2 This is line 2
3 This is line 3

在 powershell 中输入:$ python ex20.py test.txt

【问题讨论】:

  • @jonrsharpe:看起来你缩进太多了; print_a_line 函数没有那么长。
  • @MartijnPieters 回顾了 OP 的最初问题,我认为这正是他们的问题;如果函数后面的行正确缩进,函数肯定会被调用。
  • @jonrsharpe:宾果游戏。还有一个借口,看看回滚是否会带来一顶秘密帽子..
  • 请重新阅读Rule 2 - “输入每个样本准确。”。缩进在 Python 中很重要...

标签: python windows python-2.7 for-loop printing


【解决方案1】:

你没有打电话。您的脚本定义了函数,但从未实际使用任何函数。

这是因为所有应该调用函数的行都缩进为print_a_line() 函数的一部分。取消缩进将它们移动到模块级别,以便在脚本运行时执行它们:

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 + 1
print_a_line(current_line, current_file)

current_line = current_line + 1
print_a_line(current_line, current_file)

【讨论】:

  • 除了打印结果没有像 Zed Shaw 建议的那样显示之外,它正在工作:首先让我们打印整个文件: 这是第 1 行 这是第 2 行 这是第 3 行 现在让我们倒退,有点像胶带。让我们打印三行: 1 这是第 1 行 2 这是第 2 行 3 这是第 3 行 我得到: 首先让我们打印整个文件: 现在让我们倒带,有点像磁带。让我们打印三行:1 2 3
  • @JossverKraan:听起来你的文件是空的。
  • 它正在工作;-)(不知道如何接受你的答案)
  • @JossverKraan:在我的答案的帖子分数下方有一个大 V 的轮廓。点击它,它会变成绿色,将答案标记为已接受。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
相关资源
最近更新 更多