изучите питона твердым путем упражнение 20

Я не понимаю, куда стоимость для "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)
2

6 ответы

line_count is a parameter of the function; it gets its value by a caller passing an argument when calling the function. In this case, the argument is the value of the current_line global variable.

2
добавлено

После перемотки указатель файла вернулся в начале файла. Каждое требование f.readline() прочитает одну линию из f . После этого f указатель файла будет в начале следующей строки. Поэтому программа читает линии последовательно.

0
добавлено
@user2512132: Я дал ответ на то, что я думал, был ваш вопрос. Однако вы не спросили непосредственно. Было трудно предположить, какова ваша настоящая проблема. Поскольку вы видите, что мой ответ отличается значительно от других (из-за этого).
добавлено автор Nobody, источник
ах ха! это отвечает на мой вопрос вполне хорошо.thank you very much.
добавлено автор user2512132, источник

У вас есть эта функция, определяемая:

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

Это называют в этих линиях:

current_line = current_line + 1
print_a_line(current_line, current_file)

Ценность глобальной переменной current_line передается как первый аргумент функции print_a_line , где это связано с локальной переменной current_line .

0
добавлено

Если вы смотрите на эту часть кода:

current_line = 1
print_a_line(current_line, current_file)

Вы видите, что current_line передается к функции print_a_line, переменная определяется чуть выше вызова функции. В функции print_a_line, line_count относится к ценности current_line.

0
добавлено

Я надеюсь, что вы знаете понятие того, как функции работают?

Если вы не делаете, перечитайте тот раздел снова в Том, чтобы изучать Твердый Путь.

Однако вы знали бы что, создавая функцию, такую как это:

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

Вы видите, что есть два аргумента или что также называют параметрами, будучи переданным к функции, отделенной запятыми. В функции они печатаются.

Таким образом, когда функция используется здесь:

current_line = 1 #current_line is 1
    print_a_line(current_line, current_file)

    # the variable current_line is passed into the function, in that first parameter 
    # as a result, 1 is printed

current_line = current_line + 1 # here the variable is assigned its own value + 1
    print_a_line(current_line, current_file)

    # now it will print 2 and that new value in the variable is passed into the function

current_line = current_line + 1
    print_a_line(current_line, current_file)

Необходимо понять, что функция, даже при том, что наверху документа, вы называете его, или используете его позже и передаете ценности, которые используются, чтобы сделать то, что делает функция, который является печатью.

0
добавлено

(ответ должен только распечатать, какая линия вы (предположительно, на), но ее действительно просто трудно закодированный, таким образом, это немного неаккуратно, по-моему),

У меня были некоторые проблемы с этим, таким образом смотря на эту функцию, кажется, что у меня было впечатление, что line_count был линией, которую вы хотели прочитать, но на самом деле, вся эта функция на самом деле делает напечатать линию что вы hardcoded, и затем назвать f.readline (), и это читает каждую линию по одному, как это называют....

я думал, назвал ли я print_a_line (line_count, f)

например, print_a_line (6, current_file) дал бы мне линию 6 из current_file, но в действительности это проходит, сколько раз вы назвали, f.readline() походит каждый раз, когда вы называете это есть прилавок в той функции, которая учитывается, сколько раз это назвали...

таким образом, если бы вы назвали f.readline() 2 раза, тогда это должно быть на линии 3 затем..

если вы используете f.seek (0) и перематываете его впоследствии, когда вы называете f.readline (), он возвращается, чтобы выровнять 1. и зависит от того, сколько f.readline() будет читать который линия...

надежда, которая помогает кому-то еще вызвать, я пытался добавить к этому файлу, спрашивая пользователя, какую линию вы хотите написать и затем вызвать эту функцию, чтобы распечатать ту линию..., которая не сделала этого, таким образом, я предполагаю способ, которым я могу сделать это, должен был бы сделать для петли, чтобы назвать f.read() независимо от того, что я добрался от ввода данных пользователем, и распечатайте ту линию...., но необходимо было бы проверить количество линий в файле и удостовериться вводы данных пользователем что-то меньше что общее количество линий...

0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community