2

「line_count」の値がこの変数に渡される場所がわかりません。説明していただけると本当に助かります!! 出力は、連続する各行を印刷します。行番号(1、2、3、4)をインクリメントする方法は理解していますが、各文字列を印刷するためのデータをどこから取得するかを実際に知る方法はわかりにくいです。

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)
4

6 に答える 6

2

line_count関数のパラメーターです。関数を呼び出すときに引数を渡す呼び出し元によって値を取得します。この場合、引数はcurrent_lineグローバル変数の値です。

于 2013-06-22T17:35:23.823 に答える
1

巻き戻し後、ファイルポインタはファイルの先頭に戻ります。を呼び出すたびに、f.readline()から 1 行が読み取られfます。この後、fのファイル ポインタは次の行の先頭になります。したがって、プログラムは行を連続して読み取ります。

于 2013-06-22T17:37:44.243 に答える
0

このコードを見ると、次のようになります。

current_line = 1
print_a_line(current_line, current_file)

current_line が print_a_line 関数に渡され、変数が関数呼び出しのすぐ上で定義されていることがわかります。関数 print_a_line では、line_count は current_line の値を参照します。

于 2013-06-22T17:37:51.367 に答える
0

(答えは、(おそらく)現在の行を印刷することですが、実際にはハードコードされているだけなので、私の意見では少しずさんです)

私はこれにいくつかの問題を抱えていたので、この関数を見ると、line_count があなたが読みたい行であるという印象を受けていたようですが、実際には、この関数が実際に行うことは、ハードコーディングした行を出力することだけです。次に f.readline() を呼び出し、呼び出されたときに各行を一度に 1 つずつ読み取ります....

print_a_line(line_count, f) を呼び出したかどうかを考えていました

たとえば、print_a_line(6, current_file) は current_file の 6 行目を表示しますが、実際には f.readline() を呼び出した回数だけ進みます。これを呼び出すたびに、その関数内に何回かをカウントするカウンターがあるようです。呼ばれた回数…

したがって、f.readline() を 2 回呼び出した場合、次は 3 行目にあるはずです。

f.seek(0) を使用して後で巻き戻すと、f.readline() を呼び出すと 1 行目に戻ります。これは、f.readline() がどの行を読み取るかによって異なります...

他の誰かがこのファイルに追加しようとしていた原因を助けることを願っています。ユーザーにどの行を書きたいかを尋ね、この関数を呼び出してその行を印刷します...それはしなかったので、私ができる方法だと思いますユーザー入力から得たものは何でも f.read() を呼び出す for ループを実行し、その行を出力することになります....しかし、ファイル内の行数を確認する必要があります。ユーザーは総行数よりも少ない何かを入力します...

于 2016-01-20T03:59:50.103 に答える