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


Увидели сообщение с непонятной ссылкой, спам, непристойность или оскорбление?
Воспользуйтесь ссылкой «Сообщить модератору» рядом с сообщением!

Автор Тема: Уроки по Python, часть 1, основы  (Прочитано 10048 раз)

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

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Уроки по Python, часть 1, основы
« : 17 Июня 2013, 15:39:19 »
Внимание! Теперь уроки находятся здесь: https://forum.ubuntu.ru/index.php?topic=226013.0


Здравствуйте! Как я и обещал, начинаю публиковать уроки по Python. Я начал делать это скорее для себя, чтобы лучше разобраться или просто повторить пройденный материал. Хочу сразу оговориться, что уроки предназначены для новичков в программировании, гуру ничего полезного в первых уроках не найдут.

Итак, первая часть будет посвящена переменным, типам данных, вводу и выводу данных. Приступим.

Python — интерпретируемый язык, то есть код выполняется частями и преобразуется в машинный также. Вам не обязательно компилировать (собирать программу из исходного кода) программу, вы можете запустить интерпретатор, где код будет выполняться сразу же после его ввода и нажатия клавиши Enter. Если вам непонятно, то запустите интерпретатор:
  • Откройте терминал
  • Напишите Python
Вы увидите вот такое окошко:

Смело вводите код и нажимайте Enter. Но все же рекомендую сразу использовать полноценную рабочую среду. Я использую Geany, можете тоже установить из "Центра приложений Ubuntu".

Типы данных

Существуют разные типы данных - числа, строки и т.д. В Python существуют специальные обозначения для разных типов данных:
str('56') '56' #Строки (# в python однострочные комментарии)
int('7.2') '7' #Целое число
float('34') '34.0' #Числа с запятой, дроби

Конечно же, если мы попытаемся преобразить слово в целое число, то увидим ошибку. Будьте внимательны!

Переменные

Данные находятся в ячейках памяти компьютера. Раньше, чтобы получить к ним доступ, указывали регистр. Но уже давно используются переменные. Переменная состоит из имени и значения. Имя может начинаться только с буквы. Пример:
retro = 3
name = 'Grigory'
Учтите, что если значение переменной слово, то оно должно заключаться в кавычки. Если же значение переменной другая переменная или цифра, то кавычки не нужны. Переменные можно вызывать, например:
b=6
b
Мы увидим 6
Над переменными можно выполнять действия. Пример:
a=4
b=3
c=a + b
Если затем мы вызовем c, то увидим результат сложения a и b. Кстати, действия в Python почти ни чем не отличаются от действий в реальном мире. Приведу основные:
*  #Умножение
+  #Сложение
-  #Вычитание
/  #Деление
**  #Возведение в степень
% # остаток от деления %
// #  целочисленное деление //

>>> 5.0%3.0
2.0
>>> 6.0%3.0
0.0
>>> 11.0//2.0
5.0
Больше действий вы найдете в модуле math
Вывод данных

Согласитесь, что использовать переменные для вывода данных - неудобно и не экономично. Поэтому в Python существует функция print, которая позволяет выводить произвольные данные на экран. Как она действует:
#Пример 1
a='hello'
print(a) #() только в python 3, в python 2 без скобок

#Пример 2
print('ice-cream') #Не забывайте про кавычки!

#Пример 3
b='lazy'
print('Are you' + b) #Используем + для подстановки не слов

Ввод данных

Вряд ли пользователю будет интересно просто смотреть на экран или нажимать Enter. Программе нужно добавить интерактивности! Для этого (и не только) существует функция ввода данных. Давайте посмотрим на нее внимательней:
#Пример 1
b=input() #Просто ждем ввода, после этого продолжится выполнение программы

#Пример 2
b=input('My name is... ') #Можно добавить текст-подсказку...
print('Your name is' + b) #и отобразить введенные данные

Думаю, сегодня на этом все. Экспериментируйте с кодом и... домашнее задание! Код можно написать здесь или на dafter.ru, где размещен этот же урок. Если что-то непонятно, то спрашивайте.

Д/З
1. Напишите программу, где одна переменная числовая, другая состоит из слов. Поделите числовые переменные, а слова отобразите вместе.
2. Спросите у пользователя данные о его возрасте и имени, отобразите их.

В следующем выпуске: if, while и логические операторы... Всем спасибо!

-----Следующий урок (логика) https://forum.ubuntu.ru/index.php?topic=225004.0-----

« Последнее редактирование: 09 Августа 2013, 13:15:48 от Grigory Smirnov »

Оффлайн obgorelyi

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #1 : 17 Июня 2013, 16:21:28 »
  • Вы забыли про bool - это очень важный тип данных логический или True или False.
  • Если честно меня удивил ваш пример. Чему равна переменная lazy так и не нашел.
b=lazy
print('Are you' + b) #Используем + для подстановки не слов
А вообще знаком "+" в print можно осуществить только конкатенацию для строк или сложение, для вещественных и целых чисел, при этом все переменные, используемые в качестве аргументов функции print одного типа, если быть точнее, то или строки или все остальное (пока кортежи, списки, классы сюда не приписываем).
У меня попытка повторить вашу операцию с вещественным числом и строкой выдало ошибку, поэтому подозреваю, что lazy - это строка.
>>> a=5.0
>>> print('a = '+a)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: Can't convert 'float' object to str implicitly
Если хотим добавить не строку в вывод print, то используем преобразование типа к строке с помощью функции str().
a=20
print("Мне "+str(a)+" лет.")
« Последнее редактирование: 17 Июня 2013, 22:49:39 от obgorelyi »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 1, основы
« Ответ #2 : 17 Июня 2013, 16:39:37 »
obgorelyi, про True/False добавлю, с lazy глупая ошибка получилась. % - согласен. А остальное - это же новички!
P.S. Про str() не понял, я же вроде бы это и объяснял.

Оффлайн obgorelyi

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #3 : 17 Июня 2013, 16:46:20 »
Не думал, что вы так быстро ответите, я там добавил "//" - целочисленное деление (честно сам забываю про некоторые вещи.)
Еще кстати вот понять не могу, вроде где-то читал, что операция "~" - это логическое отрицание, но почему оно не работает исправно? Потому, что это побитовое отрицание, но в Python'е логические переменные явно не считаются одним битом. :(

********
Если вы не против, то опишу про логические операции, все вместе. Они нужны, для составления сложных условий.
Начну с операций OR и AND.
OR это операция логического если истина, хотя бы одно из двух значений, значит истина:
>>> True or False
True
>>> False or True
True
>>> True or True
True
>>> False | False
False
В последнем пример использовал знак "|" -конвейера (если не ошибаюсь он так называется), это тоже самое ИЛИ.
Далее перейдем к операции И, для использования этой операции используются "and" и "&" - амперсанд или по-другому, коммерческое И. При данном типе истину получим только в случае, если оба операнда истина.
>>> True & True
True
>>> True and False
False
>>> False & True
False
>>> False & False
False
Операция not, операция логического отрицания:
>>> not False
True
>>> not True
False
Ну и исключающее ИЛИ (его удалю из предыдущего поста), для него используется операция "^". При выполнении данной логической операции истину получим только в том случае, если операнды противоположны, то есть один операнд False, а другой тогда True, при всех иных случаях получим False:
>>> False ^ False
False
>>> False ^ True
True
>>> True ^ False
True
>>> True ^ True
False
Ну и операции логического сдвига ">>" сдвиг влево и "<<" сдвиг вправо, их очень часто используют, как самый быстрый способ деления и умножения на 2 (в случае деления на 2 происходит целочисленное деление):
>>> b=0b0001
>>> b<<1
2
>>> b<<2
4
>>> b>>1
0

to Grigor7: сложными логическими операциями я считаю стрелку Пирса, штрих Шеффера и т.д. В крайнем случае, тему логических операторов можно рассмотреть и в разделе условий (вы автор, вам решать). Могу с примерами применений помочь.

P.S. Что-то я не нашел у вас упоминания про функцию str(). У вас только, про то что ошибку получишь, если со словом работать будем, как с числом.
P.S.S. Кстати, спасибо, что наконец-то тему открыли, заодно сам в своей кладовке разгребу.
« Последнее редактирование: 17 Июня 2013, 17:27:38 от obgorelyi »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 1, основы
« Ответ #4 : 17 Июня 2013, 17:09:28 »
obgorelyi, про False/True буду потом добавлять, будет отдельная тема.

Оффлайн obgorelyi

  • Новичок
  • *
  • Сообщений: 45
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #5 : 17 Июня 2013, 17:33:15 »
Огромная просьба на меня не серчать. Просто считайте меня излишне любопытным учеником. :)

Оффлайн Чистый

  • Почётный модератор
  • Старожил
  • *
  • Сообщений: 3473
  • nix - вот оно счастье...
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #6 : 18 Июня 2013, 10:42:49 »
Если автор будет и дальше писать уроки, то предлагаю следующее: тему почистить оставить только уроки, в первом сообщении сделать оглавление, каждый урок одно сообщение, тему закрепить обсуждение всех уроков вести в соседней теме https://forum.ubuntu.ru/index.php?topic=222948.0
Тестовый репозиторий kdeNeur ppa:devcode/kdeneur
各々が死ぬことをどのように決定する

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 1, основы
« Ответ #7 : 18 Июня 2013, 12:46:07 »
Чистый, возможно так и надо будет сделать, но пока я второй урок не написал, ничего не делайте, пожалуйста.

Оффлайн Freezeman

  • Активист
  • *
  • Сообщений: 637
  • Xubuntu 14.04.2 LTS :: SSD Kingston HyperX Fury
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #8 : 18 Июня 2013, 13:37:01 »
Надо указать, что речь идет о 2-й ветке Python'а, а не о 3-й. Т.к. например синтаксис print'а в них разный.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python, часть 1, основы
« Ответ #9 : 18 Июня 2013, 18:07:12 »
Freezeman, речь идет о 3 ветке.

Оффлайн ZubrZubr

  • Любитель
  • *
  • Сообщений: 83
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #10 : 18 Июня 2013, 18:28:49 »
Новичкам посоветую еще использовать ipython вместо стандартной консоли python.

Оффлайн AlexRyzhenko

  • Новичок
  • *
  • Сообщений: 31
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #11 : 19 Июня 2013, 19:26:27 »
Я пишу:
>>> b=input('My name is... ')Выводится:
My name is...
Пишу:
AlexВыводится:
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1, in <module>
NameError: name 'Alex' is not defined

Почему?

Пользователь решил продолжить мысль 19 Июня 2013, 19:29:38:
Надо писать 'Alex'
« Последнее редактирование: 19 Июня 2013, 19:29:38 от AlexRyzhenko »

Оффлайн Jack Sparrow

  • Активист
  • *
  • Сообщений: 641
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #12 : 20 Июня 2013, 00:07:05 »
Не надо писать 'Alex'. Здесь происходит ввод данных, который автоматически вводится в формате string.
Код: (Python) [Выделить]
>>> b=input('My name is... ')
My name is... Alex
>>> b
'Alex'
>>> type(b)
<class 'str'>
>>>
Не совсем понятно, почему у вас возникает ошибка.
Ага, это Python 2.7. В 3-ем все нормально.
Linux is only free if your time has no value (c) Jamie Zawinski

Оффлайн Phlya

  • Старожил
  • *
  • Сообщений: 2219
  • Фля, Цыганский барон, Винни Пух
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #13 : 20 Июня 2013, 00:11:36 »
В 2.X надо писать raw_input вместо input.
Ubuntu 14.04 (Unity), MSI GE40

Оффлайн san-alex

  • Забанен
  • Старожил
  • *
  • Сообщений: 7726
  • Ex-CNC programmer
    • Просмотр профиля
Re: Уроки по Python, часть 1, основы
« Ответ #14 : 20 Июня 2013, 00:17:35 »
Чистый, а, может, уроки в Вики перенести, а в теме только обсуждение оставить.
А то, со временем, тема канет в недрах форума, а в Вики останется надолго.

 

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