Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 13, 2014 09:03:59

zainou
Зарегистрирован: 2014-11-13
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код

Здравствуйте!

Учусь программированию и изучаю 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()?

Что бы не плодить темы, буду кидать непонятные мне примеры сюда. Спасибо за понимание!

Офлайн

#2 Ноя. 13, 2014 10:38:37

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Понять учебный код

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 находится файловый объект, то закрыть его. Закрытие файла означает отсоединение питона от файла на диске.



Отредактировано py.user.next (Ноя. 13, 2014 10:41:03)

Офлайн

#3 Ноя. 13, 2014 11:58:16

zainou
Зарегистрирован: 2014-11-13
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код

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

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

Отредактировано zainou (Ноя. 13, 2014 13:18:56)

Офлайн

#4 Ноя. 14, 2014 00:04:53

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Понять учебный код

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

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

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

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

zainou
if not l:
    break
А здесь оператор условия содержит оператор прерывания цикла.
В условии оператора условия выполняется унарная операция логического отрицания, единственный операнд которой равен значению из l.



Отредактировано py.user.next (Ноя. 14, 2014 11:09:44)

Офлайн

#5 Ноя. 14, 2014 07:40:15

zainou
Зарегистрирован: 2014-11-13
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код

Постараюсь всё это осмыслить.

Офлайн

#6 Ноя. 14, 2014 11:11:38

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Понять учебный код

Немного дополнил там :) А то, видимо, мозг перегрузил догадками.



Отредактировано py.user.next (Ноя. 14, 2014 11:11:55)

Офлайн

#7 Ноя. 14, 2014 11:39:01

van
От: Харьков
Зарегистрирован: 2014-08-27
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код

py.user.next, не могли бы Вы для полного понимания привести пример еще и тернарной операции?

Офлайн

#8 Ноя. 15, 2014 00:32:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Понять учебный код

van
пример еще и тернарной операции
условие ? оператор1 : оператор2
Если условие истинно, выполняется оператор1, иначе выполняется оператор2.

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


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

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

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



Отредактировано py.user.next (Ноя. 15, 2014 00:38:45)

Офлайн

#9 Ноя. 18, 2014 15:05:57

UZmosk
От: Россия Москва
Зарегистрирован: 2014-11-18
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код


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

Офлайн

#10 Март 15, 2015 19:12:25

zainou
Зарегистрирован: 2014-11-13
Сообщения: 6
Репутация: +  0  -
Профиль   Отправить e-mail  

Понять учебный код

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

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

А всё, нашел:
Если задать срез с тремя параметрами S, то третий параметр задает шаг, как в случае с функцией range, то есть будут взяты символы с индексами a, a+d, a+2*d и т.д. При задании значения третьего параметра, равному 2, в срез попадет кажый второй символ, а если взять значение среза, равное -1, то символы будут идти в обратном порядке.

Отредактировано zainou (Март 15, 2015 19:33:23)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version