Урок 1. Первые шаги Python.

Basics of Python and Django. -> Ввод данных с клавиатуры. Первая программа с условием.

Ввод с клавиатуры. Условия.

Оператор input.

Для того, чтобы получить данные от пользователя в консоле, вводимые с клавиатуры, используется оператор input.

Например.

print('Enter your name:')
x = input()
print('Hello, ' + x)

При этом все что вводит пользователь присвоится переменной x.

if input

print('Инициализация')
q = 'Какой у вас вес?'
print(q)
print("Сбор данных")
ves = input()
print("Анализ данных"
print("Вы весите " + ves + " кг.")
ves = int(ves)
if ves < 30:
    print("Вы худой")

elif ves >30 and ves<60:
    print("Так держать!")

else:
    print("Многовато однако!")
Basics of Python and Django. -> История языка. Приемущества и недостатки.

История языка. Приемущества и недостатки.

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

История языка программирования Python началась в конце 1980-х. Гвидо ван Россум задумал Python в 1980-х годах, а приступил к его созданию в декабре 1989 года в центре математики и информатики в Нидерландах.

Язык Python был задуман как потомок языка программирования ABC, способный к обработке исключений и взаимодействию с операционной системой Амёба.

Цель проекта Amoeba — создать систему распределённых вычислений, которая предоставляла бы пользователю сеть компьютеров как одну рабочую станцию.

Гвидо Ван Россум, работая над разработкой языка ABC в Голландском институте CWI, понял, что хотел бы создать нечто новое.

Программа на языке ABC, возвращающая список слов в документе:

PUT {} IN collection
FOR line IN document:
  FOR word IN split line:
    IF word not.in collection:
      INSERT word IN collection
RETURN collection

Первый рабочий прототип Python был создан на домашнем Макинтоше Гвидо за пару выходных.

Что касается распространения, то делалось это с помощью Интернет.

Язык получил название «Python» не в честь вида змей, как ошибочно считают многие разработчики.

Во времена разработки «Питона» Гвидо любил смотреть комедийное шоу «Воздушный цирк Монти Пайтона», поэтому и назвал своей проект в честь Монти Пайтона.

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

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

Уже в 1991 году стали появляться первые средства ООП разработки.

Далее Гвидо принял решение искать спонсора, который даст возможность работать только над развитием языка.

Так как к тому времени в интернете уже существовало немалое сообщество пользователей, фирма BeOpen решила принять участие в продвижении Python.

Через некоторое время в компании BeOpen начались проблемы и свое финансирование ему предложила компания Digital Creations.

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

В том же году был выпущена версия 2.1. Теперь в питоне появились новые объекты с языков closures и иерархия: функции можно вкладывать друг в друга,

сохраняя при этом доступ к переменным окружающих функций.

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

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

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

Основные этапы развития.

Python 1.0 появился в январе 1994 года.

Основными новыми возможностями, включёнными в этот релиз, были средства функционального программирования: лямбда-исчисление, map, filter и свёртка списка.

Ван Россум утверждал, что «Python приобрёл lambda, reduce(), filter() и map() благодаря любителю Lisp, которому их не хватало, и он предоставил патчи, реализующие эти функции».

Lambda

def identity(x):
    return x+1

lambda x: x+1

Map map(fun, iter)

def addition(n): 
    return n + n

# We double all numbers using map() 
numbers = (1, 2, 3, 4) 
result = map(addition, numbers)

Filter filter(function, sequence)

def fun(variable): 
    letters = ['a', 'e', 'i', 'o', 'u'] 
    if (variable in letters): 
        return True
    else: 
        return False


# sequence 
sequence = ['g', 'e', 'e', 'j', 'k', 's', 'p', 'r']

Reduce reduce(function, iterable[, initializer])

func – Функция, которую требуется применить к элементам последовательности.

Должна принимать два аргумента, где первый аргумент — аккумулированное ранее значение, а второй — следующий элемент последовательности.

def reducer_func(el_prev, el):
    # el_prev - предшествующий элемент
    # el - текущий элемент
    return el_prev + el
from functools import reduce #python 3
print(reduce(reducer_func, [1, 2, 3]))

В версии Python 2.0 появилось списковое включение — функция, заимствованная из функциональных языков программирования SETL и Haskell.

# Чётные числа от 2 до 9998 включительно
[n for n in range(1, 10000) if n % 2 == 0]

Python 2.2 Python стал полностью объектно-ориентированным языком. Тогда же были добавлены генераторы.

def my_gen():
    n = 1
    print('This is printed first')
    # Generator function contains yield statements
    yield n

    n += 1
    print('This is printed second')
    yield n

    n += 1
    print('This is printed at last')
    yield n

for item in my_gen(): print(item)

В ноябре 2014 было объявлено, что Python 2.7 будет поддерживаться до 2020 года, и подтверждено, что релиза 2.8 не будет, так как предполагается,

что пользователи должны переходить на версию 3.4+ при первой же возможности.

Python 3.0 разрабатывался с той же философией, что и предыдущие версии. Однако, поскольку в Python скопились новые и, ставшие избыточными, старые способы решения одних и тех же задач,

в Python 3.0 был сделан упор на удалении дублирующихся конструкций и модулей, следуя принципу: «должен существовать один и, желательно, только один очевидный способ сделать это».

Тем не менее, Python оставался «мультипарадигменным» языком. Программист всё ещё мог выбирать между объектно-ориентированным, структурным, функциональным программированием и другими парадигмами.

Приемущества Python.

Низкий порог вхождения.

Логичный, лаконичный и понятный.

Кроссплатформенный.

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

Существует реализация под названием Micro Python, оптимизированная для запуска на микроконтроллерах (можно писать инструкции, логику взаимодействия устройств, организовывать связь, реализовывать умный дом).

Сильное комьюнити.

Мощная поддержка компаний-гигантов IT-индустрии. Такие компании, как Google, Facebook, Dropbox, Spotify, Quora, Netflix, на определенных этапах разработки использовали именно Python.

Высокая востребованность на рынке труда.

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

Python отличается строгим требованием к написанию кода (требует отступы), что является преимуществом, т.к. язык способствует писать код организованно и красиво.

Недостатки

import pdb; pdb.set_trace()

x = ‘2’ y = 3 z = x+y

Basics of Python and Django. -> Введение.

Введение.

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

Python поддерживает структурное, объектно-ориентированное, функциональное, императивное и аспектно-ориентированное программирование.

Сферы использования.

Существует множество областей применения Python, но в некоторых он особенно хорош.

  1. Веб-разработка

Относительно недавно в веб-разработке стали очень популярны Python-фреймворки, такие как Django и Flask. Они облегчают процесс написания на языке Python кода серверной части приложений. Это тот код, который запускается на сервере, а не на устройствах и браузерах пользователей (frontend-код).

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

Django – это сервис типа «все включено». Из коробки в нем уже есть админ-панель, интерфейсы баз данных, ORM (объектно-реляционное отображение) и структура каталогов для ваших проектов.

  1. data science: машинное обучение, анализ данных и визуализация;

Решение задач распознавания изображений.

Существуют разные библиотеки и фреймворки для машинного обучения на Python. Две самые популярные – это scikit-learn и TensorFlow.

Построение графиков и визуализация.

Одна из самых популярных библиотек для визуализации – Mathplotlib.

  1. Автоматизация процессов.

Одна из самых популярных сфер применения Python – это написание небольших скриптов для автоматизации различных рабочих операций и процессов.

В качестве примера можно привести систему обработки электронной почты. Для сбора статистики и анализа данных требуется подсчитывать количество входящих писем, содержащих определенные ключевые слова. Это можно делать вручную, или же написать простой скрипт, который все посчитает сам.

Python и игры.

Несмотря на то, что существует библиотека PyGame, популярность применения Python для создания игр невелика.

Для серьезных проектов он не подходит.

Python 3 или Python 2

Python 3 – это более современный и популярный выбор.

Благодаря своей ясности и лаконичности python используется многими вузами в качестве первого языка при изучении программирования.

Еще один аргумент в пользу Python это его сообщество.

Это одно из самых доброжелательных, активных и дружественных сообществ в которое входят ученые, специалисты по анализу данных, веб- разработчики, системные администраторы и специалисты по теории данных на каждом континенте.

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

Установка с выбором версии.

sudo apt update -y

$ sudo apt install python3.7

$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2


$ sudo update-alternatives --config python3
Basics of Python and Django. -> Python. Типы данных.

Типы данных.

Простые типы.

  • логические

  • числа

  • строки

Сложные типы.

  • списки

  • словари

  • кортежи

  • множества

Basics of Python and Django. -> Работа в консоле. Команды bash.

Команды BASH

Вывод на экран

echo $переменная | строка | "строка $переменная"

Переменные и их вывод в консоль.

#!/bin/bash 
STR="Hello World!"
echo $STR
echo $PATH # переменная поиска команд
echo "$PATH - переменная поиска" # форматирование строки

Команда переправления вывода

echo 'hello' > filename.txt
echo 'hello' >> filename.txt

Переменная PATH

echo $PATH
  • это мета где система ищет исполняемые файлы-команды, например python

    whereis python

  • выведет все места где находятся файлы для питона

Команда pwd.

  • вывод текущей директории

Смена директории. Команда cd

cd ~ # домашняя директория

cd / # корневая директория

cd dirname/subdir # смена директории

cd .. # поднятие на уровень вверх

Просмотр директории. Команда ls.

ls # краткий список
ls -l # полный список
ls -la # включая скрытые файлы
ls -lh # c кратким размером

Команда grep.

grep -rn 'string' # поиск файлов со строкой с указанием номера строки

Обединение команд оператор |.

ls -la | grep 'substr' # поиск файлов и директорий содержащих подстроку

Команда mkdir (создание директории).

mkdir dirname

Команда rm.

rm ./filename # удаление файла
rm -R dirname # удаление директории и ее содержимого

Команда nano.

nano ./filename # редактирование файла
  • ctrl+o - запись в файл

  • ctrl+x - выход из редактора

Команда cat

cat filename

вывод содержимого файла

Системная переменная $PS1

echo $PS1
PS1='>>>'
export PS1='<<<'

Команда chmode.

chmode +x ./filename # сделать файл исполняемым
chmod 777 ./filename # изменение прав на файл
chmod 667 -R dirname # изменение прав на содержимое директории

Команда chown.

chown -R user:user dirname # изменение владельца и группы директории и всего содержимого рекурсивно

Строка, определяющая содержимое файла (на каком языке python, php, bash и т.д.).

#!/bin/bash
#!/usr/bin/env python

Язык bash

Справочник по встроенным командам

Перенаправление ввода-вывода

>> > - перенаправляет в файл

| - соединяет вывод одной команды со вводом другой

Команда source и запуск bash скриптов.

myscript # запуск команды (файла) из системных директорий
./myscript # запуск файла из текущей дериктории
source ./myscript # запуск скрипта в текущей сессии терминала (оболочки) shell в ТЕКУЩЕМ процессе
. ./myscript # аналог предыдущей команды

Использование точки говорит о текущей директории (не находящейся в переменной PATH) без точки интерпретатор будет искать файл в $PATH.

Использование source позволяет менять окружение оболочки т.к. выполняется не в новом процессе как при обычном запуске (без source).

Условие. Файл .bashrc

cd () {
    builtin cd ${1:+"$@"} # выполняем оригинальную команду с параметрами
    if [ -f "env.sh" ] # проверяем существование файла
    then
     . ./env.sh # запускаем файл
    fi  
}