Найти - Пользователи
Полная версия: Понять учебный код
Начало » Центр помощи » Понять учебный код
1 2
zainou
Здравствуйте!

Учусь программированию и изучаю Python по учебной литературе, так вот, мне надо понять, что означают те или иные операторы в коде, из-за которых не доходит весь смысл программы, например:

f = open("file.txt", "r")
while 1:
l = f.readline()
if not l:
break
if len(l) > 5:
print l,
f.close()

По описанию из учебника, в этом примере организован бесконечный цикл, который прерывается только при получении из файла пустой строки (l), что обозначает конец файла.

И у меня возникли вопросы:
0. Что означает символ “r”, в присвоении значения переменной “f”?
1. Что означает “1” в условии While? (истина?)
2. Что означает f.readline()?
3. Что подразумевается в условиях “not l” и “len(l)”? (len - длинна?)
4. Что означает f.close()?

Что бы не плодить темы, буду кидать непонятные мне примеры сюда. Спасибо за понимание!
py.user.next
zainou
И у меня возникли вопросы:
Вопросы странные не только как для программиста, но и как для айтишника.

zainou
0. Что означает символ “r”, в присвоении значения переменной “f”?
r - от слова read. Означает открыть файл для чтения. r там вообще можно убрать, так как он и так откроется для чтения.

zainou
1. Что означает “1” в условии While? (истина?)
1 - это истинное значение, так же, как и 2, 3, 4, 100. Вообще, для этого есть константа True.

zainou
2. Что означает f.readline()?
read line - прочитать строку. Прочитать строку из файла. Строкой считается последовательность символов, оканчивающаяся признаком конца строки.

zainou
3. Что подразумевается в условиях “not l” и “len(l)”? (len - длинна?)
“not l” означает, что проверяется значение из l на истинность. Пустая строка считается ложной, непустая - истинной.
“len(l)” означает длина значения из l. Так как там строка, то - длина строки.
А len - действительно, длина, так как образовано от слова length.

zainou
4. Что означает f.close()?
close - закрыть. Закрыть объект в f. Так как в f находится файловый объект, то закрыть его. Закрытие файла означает отсоединение питона от файла на диске.
zainou
py.user.next спасибо большое, весь пример стал понятен. Я не айтишник, просто ради фана сайты делал на html, потом узнал про django и python, и то что можно из них сделать. Заинтересовался и приступил к изучению, а так все мои навыки ограничиваются тройками за программы писанные на Pascal-e еще в школе. Пытаюсь еще освоится с Debian и web-сервер с поддержкой django+python установить, но пока сложновато, хотя все знакомые разработкой сайтов занимаются в Linux. По слухам python там тоже может пригодится.

И вот опять же, я назвал непонятные моменты в коде - “операторами”, потому что в учебнике, где был взят этот пример, применяется определение “оператор” почти ко всему. А сейчас читаю другу литературу, там уже дается определения “операторов” и “операндов” в Питоне и получается, что в примере мне были непонятны “выражения”, а не “операторы”, последние в свою очередь имеют совсем другой смысл.
py.user.next
zainou
И вот опять же, я назвал непонятные моменты в коде - “операторами”, потому что в учебнике, где был взят этот пример, применяется определение “оператор” почти ко всему.
Слово “оператор” связано с контекстом применения слова. В контексте программирования “оператор” - это одно. В контексте питона “оператор” - это другое. Но про питон можно говорить как про программирование, поэтому и смысл слова “оператор” может быть взят из контекста программирования.

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

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

zainou
while 1:
    l = f.readline()
Вот здесь оператор цикла содержит оператор чтения и присваивания строки из файла.

zainou
if not l:
    break
А здесь оператор условия содержит оператор прерывания цикла.
В условии оператора условия выполняется унарная операция логического отрицания, единственный операнд которой равен значению из l.
zainou
Постараюсь всё это осмыслить.
py.user.next
Немного дополнил там :) А то, видимо, мозг перегрузил догадками.
van
py.user.next, не могли бы Вы для полного понимания привести пример еще и тернарной операции?
py.user.next
van
пример еще и тернарной операции
условие ? оператор1 : оператор2
Если условие истинно, выполняется оператор1, иначе выполняется оператор2.

А в питоне её реализовали в виде условного выражения.


Надо ещё добавить ко всему, что все эти неясности с понятиями в основном происходят из-за перевода с английского. Так как в английском слова не такие точные, как в русском, и могут обозначать сразу множество разных слов, то и перевод варьируется.

Например:
statement - оператор
operator - операция
assert - утверждение

То есть нельзя путать первое с третьим, а второе с первым. Иногда переводчики книг не шарят в области и делают неправильный перевод.
UZmosk

По описанию из учебника, в этом примере организован бесконечный цикл, который прерывается только при получении из файла пустой строки (l), что обозначает конец файла
zainou
Подскажите пожалуйста, что подразумевается под “шагом” среза, а то я не совсем вникаю в значение “шага” и его свойства. Как оно влияет на срез? Почему без шага в примере он вывел “ev”, а с шагом равным “2” вывел “ee”?

s='derevo'
s [3:5]  'ev'
s [1:5:2] 'ee'

А всё, нашел:
Если задать срез с тремя параметрами S, то третий параметр задает шаг, как в случае с функцией range, то есть будут взяты символы с индексами a, a+d, a+2*d и т.д. При задании значения третьего параметра, равному 2, в срез попадет кажый второй символ, а если взять значение среза, равное -1, то символы будут идти в обратном порядке.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB