Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: Уроки по Python, часть 2, логика  (Прочитано 4061 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Уроки по Python, часть 2, логика
« : 13 Июля 2013, 15:07:29 »
Приветствую! Это тот самый долгожданный урок по замечательному языку программирования Python. Сегодня мы разберем:
  • Логические выражения
  • Оператор if
  • Оператор else
  • Оператор elif
Приступим!

Логические выражения
Наверняка все мы помним, как в начальной школе сравнивали числа: 5<8, это правда; 5>2, тоже правда; 5<4, а вот это ложь. Также и в языке Python, только операторов здесь немного больше. Вот список:
Код: (python) [Выделить]
x == 8 # x равен 8
x != 3 # x не равен 3
x > 5 # x больше 5
x < 5 # x меньше 5
x >= 7 # x больше или равен 7
x <= 6 # x меньше или равен 6
Это простые выражения.

Также можно использовать сложные выражения. На их выходе мы получаем либо True (правда), либо False (ложь). Чтобы использовать сложные выражения, нужно знать еще несколько операторов, а именно and и or. Думаю, их значение понятно, и и или соответственно. Итак, небольшой пример:
Код: (python) [Выделить]
x = 6
y = 13
x == 6 and y < 15 #  x равен 8 и y меньше 15
x > 6 and y < 15 #  x больше 8 и y меньше 15
x != 0 or y >15 #  x не равен 0 или y больше 15
x < 0 or y >15 #  x меньше 0 или y больше 15
Чтобы получить правду с оператором or, необходимо, чтобы результаты хотя бы одного простого выражения был истинным. Ложным выражение становится тогда, когда ложны все составляющие его простые выражения.

Чтобы получить истину при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет False. Строки тоже можно сравнивать, попробуйте сами это сделать.

Думаю, понятно, если вы что-то не поняли, то спрашивайте. Иначе не получится выполнить домашнее задание  :-\

Условные операторы
Обычно в наших программах все было понятно - за таким-то действием идет второе, за вторым третье и т.д. И ничего не могло этому помешать (ну кроме ошибок  ;) ). Теперь вы сможете использовать условный оператор if, что поможет создавать условия. Конструкция выглядит так:

if переменная условие вторая_переменная:
    что_выполнить_если_выражение_выше_правда

Обратите внимание, что после первой строки обязательно должно быть двоеточие и отступ в 4 пробела!
Пример простого условия:
Код: (python) [Выделить]
#Условие
g=7
c=8
if c == g:
    print('Hooray!')

#А вы не забыли про логические операторы?
t=5
b=2
j=7
if t > b and t < j:
    print('It is magic')

"Но ведь условия не всегда правдивы!", скажете вы. И будете правы - для этого существует конструкция if-else. Вот пример, после которого вы все поймете.

Код: (python) [Выделить]
h=int(input('Enter... ')) #Мы не знаем, какое число введет пользователь
if h == 4: #Если 4, то...
    print('All right')
elif h < 6: #Если у вас не одно условие, то второе можно задать с помощью elif
    print('Empty')
else: #Как видите, else без аргументов
    print('You are fool') #Тоже 4 отступа!

Если ни одно условие выше не True, то тогда выполняется блок else. Если хоть одно условие выше правда, то блок else просто пропускается, а правдивое условие выполняется. Я использовал elif - если первое условие не выполняется, то смотри дальше, если опять false, то дальше, до else. Вот так сделать не получится:
Код: (python) [Выделить]
dogs=4
if dogs == 3:
    print('Dogs are beautiful')
if dogs > 6:  #Ошибка! Используйте elif
    print('OK')
else:
    dogs=6
    print(dogs)

Можно делать вложенные инструкции :P :
Код: (python) [Выделить]
cats=5
if cats < 7:
    print('And')
    if cats == 6:
        print('Cats!!!')
    else:
        print('Funny cats were lost')
else:
    cats=3
Будьте аккуратнее с пробелами - каждый новый уровень, 4 новых пробела. Да, в том же Java блоки помечаются { и }. Но отступы все равно чаще всего делают, хотя они никак не влияют на процесс выполнения программы - это делают только ради чистоты и читаемости кода.

Домашнее задание  :coolsmiley:
1. Напишите 5 сложных выражений (использовать or и and)
2. Напишите скрипт, который спрашивает у пользователя какие либо данные. Если они совпадают (допустим, с переменной b), то выведите ему сообщение, что он прошел тест. Иначе, напишите, что он не прошел его.
3. Напишите скрипт, где используются вложенные условия, а в условиях есть операторы or или end.

-----Предыдущий урок на Дафтере http://dafter.ru/duf/python/46.html-----------
-----Предыдущий урок на форуме Ubuntu https://forum.ubuntu.ru/index.php?topic=223408.0
-----------------------------Следующий урок, циклы https://forum.ubuntu.ru/index.php?topic=225008.0-------------------------------


Также вы можете прочитать этот урок на Дафтере: http://dafter.ru/duf/python/52.html, или просто посетить его, тем самым помочь автору этого урока. А особо активных я хочу спросить - как развивать сайт? Как приобрести постоянных пользователей (спамеры не в счет  :2funny: ) Большое спасибо за советы!

На этом все, сообщайте об ошибках и публикуйте свое выполнение домашнего задания. До скорых встреч!
« Последнее редактирование: 13 Июля 2013, 17:09:20 от Grigory Smirnov »

fly-R

  • Гость
Re: Уроки по Python, часть 2, логика
« Ответ #1 : 13 Июля 2013, 19:27:51 »
задание сделал по if-elif-else, прикрепил вложением и ниже под спойлер. чето не получается со вводом строк через input - ошибки вечно какието

ps да и русский не поддерживается в скрипте, пришлось гуглить - нашел что надо добавлять такую вот хрень
# -*- coding: utf-8 -*-хотя в редакторе питона все нормально работает

да вот тут ошибка небольшая еще, думал что за end
Цитировать
3. Напишите скрипт, где используются вложенные условия, а в условиях есть операторы or или end.

(Нажмите, чтобы показать/скрыть)

Спасибо за урок)
« Последнее редактирование: 13 Июля 2013, 19:46:57 от док. Штопор »

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #2 : 15 Июля 2013, 08:24:57 »
Grigory Smirnov,
Цитировать
обязательно должно быть двоеточие и отступ в 4 пробела!
На мой взгляд не стоит так писать, хватит и двух пробелов, да и табуляцию никто не отменял.
Хотя PEP-8 рекомендует пробелы.
(Нажмите, чтобы показать/скрыть)
Про количество пробелов там вроде ничего нет. Однако оно должно быть одинаковым во всем модуле.

Оффлайн JmAbuDabi

  • Старожил
  • *
  • Сообщений: 2468
  • 나는 빅터 해요. 나는 프로그래머입니다
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #3 : 15 Июля 2013, 08:28:42 »
Цитировать
Про количество пробелов там вроде ничего нет. Однако оно должно быть одинаковым во всем модуле.
Это для того чтобы код был читаем? или это очевидно)
Покой – это не место, где тихо и мирно, где нет шума и беспокойства.
Покой – это когда при всем этом, вы сохраняете мир и спокойствие в своем сердце.

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #4 : 15 Июля 2013, 11:37:58 »
Цитировать
Про количество пробелов там вроде ничего нет. Однако оно должно быть одинаковым во всем модуле.
Это для того чтобы код был читаем? или это очевидно)
Просто это всё, на самом деле, из оперы "мужики не поймут". Никто вам не запрещает писать if в одну строку. Точки с запятой в питоне тоже есть. Меня же смутило утверждение про обязательность.

Оффлайн wwwsin.k

  • Новичок
  • *
  • Сообщений: 11
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #5 : 15 Июля 2013, 16:30:44 »
Спасибо автору=) Д/з сделал ток пока читал нащел у вас ощибку понимаю что не критично но в глаза бросается =)
Итак, небольшой пример:
Код: (python) [Выделить]
x = 6
y = 13
x == [color=red][b]6[/b][/color] and y < 15 #  x равен [color=red][b]8[/b][/color] и y меньше 15
x > [color=red][b]6[/b][/color] and y < 15 #  x больше [color=red][b]8[/b][/color] и y меньше 15
x != 0 or y >15 #  x не равен 0 или y больше 15
x < 0 or y >15 #  x меньше 0 или y больше 15

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 2, логика
« Ответ #6 : 15 Июля 2013, 23:15:50 »
Freezeman, по соглашению 4 пробела. Если получится, то хоть полтора ставьте. И вообще, я учу хорошим манерам в коде :)
док. Штопор, спасибо, что читаете.

fly-R

  • Гость
Re: Уроки по Python, часть 2, логика
« Ответ #7 : 16 Июля 2013, 00:02:47 »
Freezeman, по соглашению 4 пробела. Если получится, то хоть полтора ставьте. И вообще, я учу хорошим манерам в коде :)
док. Штопор, спасибо, что читаете.

у вас действительно стоящие уроки, и то что вы делаете - очень нужно и правильно
только я сдаюсь, не пошел чето питон, - не мое)

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #8 : 16 Июля 2013, 06:05:24 »
Grigory Smirnov,
http://www.python.org/dev/peps/pep-0008/#inline-comments
Комментарии в коде у вас по-разному как-то записаны.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 2, логика
« Ответ #9 : 17 Июля 2013, 23:13:35 »
Freezeman, не понял. Комментарии - #. Пояснения к функциям - '''. Что еще?

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #10 : 18 Июля 2013, 06:18:39 »
Grigory Smirnov,
У вас там в комментариях пробелы -- где 1, а где и два.
Еще, я бы посоветовал строки всё же русские делать -- там ведь смысл строк важен, а так для многих, думаю, будет непонятно, правильно программа работает или нет.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 2, логика
« Ответ #11 : 18 Июля 2013, 21:55:26 »
Freezeman, как пробелы в комментариях влияют на код? Может отступы?

Строки - вы имеете ввиду предложения через print()? Или что? Если да, то как важен смысл? А если кому-то и важно, то программист должен хорошо знать английский, даже начинающий. Но возможно буду делать на русском.

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 2, логика
« Ответ #12 : 19 Июля 2013, 06:44:09 »
Еще добавлю. В if'е не обязательно должны присутствовать одновременно и переменные, и условие.
Код: (python) [Выделить]
>>> sdf = 10
>>> if sdf:
...     print('sdf =',sdf)
...
sdf = 10
Код: (python) [Выделить]
>>> if True:
...     print('Это правда.')
... else:
...     print('А это - нет.')
...
Это правда.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 2, логика
« Ответ #13 : 19 Июля 2013, 21:35:31 »
Freezeman, вы издеваетесь?! Я прекрасно это знаю, но ваших уже более профессиональных приемов, которые приходят со временем, в урок не вставить, да и не надо. Смысл уроков - объяснить.

 

Страница сгенерирована за 0.043 секунд. Запросов: 25.