#6 python для data science

if __name__ == __main__ в Python

Вы наверняка встречали следующую конструкцию в программах на :

Копировать

Что она значит? В , начинающаяся с двух символов нижнего подчеркивания (), является специальной. Это зарезервированные значения, которые выполняют определенную роль в программе.

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

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

Если же ссылаться на файл как на модуль, то содержимое конструкции if не будет выполнено. Рассмотрим на примере.

Как использовать __name__ и __main__

Создадим новый скрипт на Python под названием В коде будем просить пользователя ввести его имя и проверять, не является ли его длина больше 5. Если символов не больше 5, то попросим ввести имя снова.

Начнем с определения глобальной переменной для хранения имени пользователя:

Копировать

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

Копировать

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

Копировать

После этого нужно добавить в инструкцию . Это значит, что при запуске файла прямо, интерпретатор . Если же запустить код в качестве модуля, то содержимое внутри исполнено не будет.

Копировать

Запустим код:

Он вернет следующее:

Этот код запускает функцию , а затем — . Если указать имя длиной меньше 4 символов, то ответ будет таким:

Будет предложено ввести другое имя. Если импортировать этот код в качестве модуля, то функция не запустится.

Условный оператор if/elif/else, ветвление кода программы.

Возможно, самый известный тип инструкций — это конструкция . Часто возникает необходимость, чтобы некоторый код выполнялся только при соблюдении определенного условия или код подлежащий выполнению, должен выбираться исходя из выполнения одного из нескольких взаимоисключающих условий.Например:

>>> x = int(input("Please enter an integer: "))
Please enter an integer 42
>>> if x < 
...     x = 
...     print('Negative changed to zero')
... elif x == 
...     print('Zero')
... elif x == 1
...     print('Single')
... else
...     print('More')
...
More
>>>

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

Составная инструкция , и обеспечивает условное выполнение блоков инструкций.Она имеет следующий синтаксис:

if выражение:
    блок кода
elif выражение:
    блок кода
elif выражение:
    блок кода
...
...
else:
    блок кода

Конструкция вычисляет и оценивает выражения одно за другим, пока одно из них не окажется истинным, затем выполняется соответствующий блок кода . После выполнения блока кода первого истинного () выражения, последующие инструкции / не вычисляются и не оцениваются, а блоки кода в них не выполняется. Если все выражения ложны (), выполняется блок кода инструкции , если он присутствует.

В предложениях и в качестве условия можно использовать любое выражение Python. В подобных случаях говорят, что условие используется в логическом контексте. В логическом контексте любое выражение рассматривается как истинное или ложное. Любое ненулевое число или любой непустой контейнер (строка, кортеж, список, словарь, множество) расценивается как истинное значение. Нуль (любого числового типа), и пустой контейнер расцениваются как ложные значения. Для тестирования значения в логическом контекстеиспользуйте следующий стиль написания кода:

if x

Это наиболее ясная и соответствующая духу Python форма кода.

Примеры конструкций

Использование в конструкции :

a = None
if a is not None
    print('a НЕ равно None')
else
    print('a равно None')

Использование и в конструкции :

bul = False
if bul
    print('bul = True')
else
    print('bul = False')

Использование числа 0 в конструкции :

number = 
if number
    print('number не равно 0')
else
    print('number = 0')

Использование числовых сравнений в конструкции :

a = 10
b = 20
if  a != b and a > b
    print('a не равно b и a больше b')
else
    print('a не равно b и a меньше b')

Вложенные конструкции :

a = 15
b = 3
if  a != b 
    if a > b
        print('a больше b')
    else
        print('a меньше b')
else
    print('a равно b')

Проверка наличия слова в строке с помощью конструкции :

string1 = 'Привет мир'
string2 = 'мир'
if string2 in string1
    print('Слово "мир" присутствует в строке "Привет мир"')
else
    print('Слово "мир" отсутствует в строке "Привет мир"')

Проверка вхождения элемента в список с помощью конструкции :

a = 'bc'
lst = list'ac', 'bc', , 1, 3, 'abc'
if a in lst
    print('Значение "bc" входит в список', lst)
else
    print('Значение "bc" не входит в список', lst)

Проверка вхождения элемента в кортеж с помощью конструкции :

a = 'bc'
tpl = tuple('ac', 'bc', , 1, 3, 'abc')
if a in tpl
    print('Значение "bc" входит в кортеж', tpl)
else
    print('Значение "bc" не входит в кортеж', tpl)

Проверка вхождения элемента в множество с помощью конструкции :

a = 'bc'
set_ = set'ac', 'bc', , 1, 3, 'abc'
if a in set_
    print('Значение "bc" входит в множество', set_)
else
    print('Значение "bc" не входит в множество', set_)

Проверка наличия ключа в словаре с помощью конструкции :

What is if…else statement in Python?

Decision making is required when we want to execute a code only if a certain condition is satisfied.

The statement is used in Python for decision making.

Python if Statement Syntax

if test expression:
    statement(s)

Here, the program evaluates the and will execute statement(s) only if the test expression is .

If the test expression is , the statement(s) is not executed.

In Python, the body of the statement is indicated by the indentation. The body starts with an indentation and the first unindented line marks the end.

Python interprets non-zero values as . and are interpreted as .

Example: Python if Statement

When you run the program, the output will be:

3 is a positive number
This is always printed
This is also always printed.

In the above example, is the test expression.

The body of is executed only if this evaluates to .

When the variable num is equal to 3, test expression is true and statements inside the body of are executed.

If the variable num is equal to -1, test expression is false and statements inside the body of are skipped.

The statement falls outside of the block (unindented). Hence, it is executed regardless of the test expression.

Конструкция switch – case

Данная инструкция в Python не используется. Вместо этого можно применять конструкции с несколькими elif. Например, программист хочет написать код, чтобы программа ставила оценку за пройденный студентами тест. При этом оценок может быть несколько. Тогда можно оформить так:

if grade >= 50:
    print("Оценка 5 с плюсом")
elif grade >= 45:
    print("Оценка 5")
elif grade >= 35:
    print("Оценка 4")
elif grade >= 25:
    print("Оценка 3")
else:
    print("Тест провален")

В этом случае значение переменной grade будет сравниваться со всеми условиями подряд. Однако когда условие станет истинным, выполнение кода остановится и на экране появится сообщение об оценке. Например, если grade равен 30, то на дисплей будет выведена надпись: Оценка 3; если же переменная будет ниже 25, то пользователь увидит: Тест провален.

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

AND, OR, NOT in Python if Command

You can also use the following operators in the python if command expressions.

Operator Condition Desc
and x and y True only when both x and y are true.
or x or y True if either x is true, or y is true.
not not x True if x is false. False if x is true.

 
The following example shows how we can use the keyword “and” in python if condition.

# cat if8.py
x = int(input("Enter a number > 10 and < 20: "))
if x > 10 and x < 20:
  print("Success. x > 10 and x < 20")
else:
  print("Please try again!")

In the above:

The if statement will be true only when both the condition mentioned in the if statement will be true.
i.e x should be greater than 10 AND x should also be less than 20 for this condition to be true. So, basically the value of x should be in-between 10 and 20.

The following is the output when if condition becomes true. i.e When both the expressions mentioned in the if statement is true.

# python if8.py
Enter a number > 10 and < 20: 15
Success. x > 10 and x < 20

The following is the output when if condition becomes false. i.e Only one of the expression mentioned in the if statement is true. So, the whole if statement becomes false.

# python if8.py
Enter a number > 10 and < 20: 5
Please try again!

Что такое функция main()?

Main — это специальная функция, которая позволяет добавить больше логики в структуру программ. В Python можно вызвать функцию в нижней части программы, которая и будет запущена. Рассмотрим такой пример:

Копировать

Запустим этот код:

Можно увидеть, что выражение «Дайте печенье.» выводится до «Печенье вкусное!», потому что метод не вызывается вплоть до последней строки, а именно в этой функции хранится предложение «Печенье вкусное!».

Такой код работает, но его довольно сложно читать. В таких языках программирования, как C++ и Java весь основной код программы хранится внутри основной функции. Это хороший способ для распределения всего кода программы. Те, кто только знакомится с Python, но уже работал, например, с C++ будут благодарны за использование функции .

Спецификация оператора for/in/else:

for_stmt :: = "for" target_list "in" expression_list ":" suite
              "else" ":" suite

Список выражений для перебора инструкцией вычисляется один раз и должен давать объект поддерживающий итерацию. Итератор создается для результата . Каждый элемент из в свою очередь присваивается целевой переменной , значение которой передается в блок кода внутри инструкции . Затем код блока выполняется один раз для каждого элемента. Когда элементы исчерпаны, что происходит сразу же, когда последовательность пуста или итератор вызывает исключение , выполняется набор в предложении , если он присутствует, и цикл завершается.

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

Применим оператор и в коде и посмотрим на их поведение. Будем создавать список четных чисел из последовательности чисел от 0 до 14.

lst = []
for item in range(15) 
    # если число 10 есть в списке
    if 10 in lst
        # прерываем цикл, при этом блок else не выполнится
        break
    # остаток от деления элемента списка
    a = item % 2
    # если элемент списка не четный или равен 0
    if a !=  or item == 
        # пропускаем оставшийся код
        continue
    # добавление числа в список
    lst.append(item)
else
    print ("Напечатает, если убрать условие с break")

print(lst)
# Код выведет:
2, 4, 6, 8, 10

Цикл выполняет назначения переменным в целевом списке. Это перезаписывает все предыдущие назначения этим переменным, включая те, которые были сделаны в блоке :

Пример:

for i in range(10):
    print(i)
    i = 5
    # это не повлияет на цикл for так как переменная i
    # будет перезаписана следующим итерируемым элементом

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

Подсказка: встроенная функция возвращает итератор целых чисел, подходящий для эмуляции эффекта языка Pascal например, возвращает список .

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

Существует внутренний счетчик, который используется для отслеживания того, какой элемент используется следующим, и он увеличивается на каждой итерации. Когда этот счетчик достигнет длины последовательности, цикл завершается. Это означает, что если код внутри цикла удаляет текущий (или предыдущий) элемент из последовательности, по которой идет итерация, следующий элемент будет пропущен, так как он получает индекс текущего элемента, который уже был обработан.

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

Оператор elif

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

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

Но помните, что первое условие всегда задается с

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

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

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

Python if..elif..else in one line

Now as I told this earlier, it is not possible to use in one line using ternary expressions. Although we can hack our way into this but make sure the maximum allowed length of a line in Python is 79 as per

Syntax

We have this where we return expression based on the condition check:

if condition1:
    expr1
elif condition2:
    expr2
else:
    expr

We can write this in one-line using this syntax:

expr1 if condition1 else expr2 if condition2 else expr

In this syntax,

  • First of all is evaluated, if return then is returned
  • If returns then is evaluated, if return then is returned
  • If also returns then else is executed and is returned

As you see, it was easier if we read this in multi-line while the same becomes hard to understand for beginners.

We can add multiple in this syntax, but we must also adhere to PEP-8 guidelines

expr1 if condition1 else expr2 if condition2 else expr-n if condition-n else expr

Python Script Example-1

In this sample script we collect an integer value from end user and store it in «». The order of execution would be:

  • If the value of is less than then «» is returned
  • If the value of is greater than then «» is returned.
  • If both the condition return , then «» is returned
#!/usr/bin/env python3

b = int(input("Enter value for b: "))
a = "neg" if b <  else "pos" if b >  else "zero"

print(a)

The multi-line form of the code would be:

#!/usr/bin/env python3

b = int(input("Enter value for b: "))

if b < :
   a = "neg"
elif b > :
   a = "pos"
else:
   zero

print(a)

Output(when condition is )

# python3 /tmp/if_else_one_line.py
Enter value for b: -5
neg

Output(when condition is and condition is )

# python3 /tmp/if_else_one_line.py
Enter value for b: 5
pos

Output(when both and condition are )

# python3 /tmp/if_else_one_line.py
Enter value for b: 0
zero

Python script Example-2

We will add some more else blocks in this sample script, the order of the check would be in below sequence:

  • Collect user input for value which will be converted to integer type
  • If value of is equal to 100 then return «», If this returns then next condition would be executed
  • If value of is equal to 50 then return «», If this returns then next condition would be executed
  • If value of is equal to 40 then return «», If this returns then next condition would be executed
  • If value of is greater than 100 then return «», If this returns then next go to block
  • Lastly if all the condition return then return «»
#!/usr/bin/env python3

b = int(input("Enter value for b: "))

a = "equal to 100" if b == 100 else "equal to 50" if b == 50 else "equal to 40" if b == 40 else "greater than 100" if b > 100 else "less than 100"
print(a)

The multi-line form of this example would be:

#!/usr/bin/env python3

b = int(input("Enter value for b: "))

if b == 100:
   a = "equal to 100"
elif b == 50:
   a = "equal to 50"
elif b == 40:
   a = "equal to 40"
elif b > 100:
   a = "greater than 100"
else:
   a = "less than 100"

print(a)

Output:

# python3 /tmp/if_else_one_line.py
Enter value for b: 50
equal to 50

# python3 /tmp/if_else_one_line.py
Enter value for b: 110
greater than 100

# python3 /tmp/if_else_one_line.py
Enter value for b: -12
less than 100

# python3 /tmp/if_else_one_line.py
Enter value for b: 40
equal to 40

Присвоение функции переменной

С существующей функцией синтаксис максимально простой:

Переменным также можно присваивать встроенные функции. Таким образом позже есть возможность вызывать функцию другим именем. Такой подход называется непрямым вызовом функции.

Менять название переменной также разрешается:

В этом примере a1, a2 и имеют один и тот же id. Они ссылаются на один объект.

Практический пример — рефакторинг существующего кода. Например, есть функция , которая вычисляет квадрат значения:

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

Последний пример. Предположим, встроенная функция была переназначена:

Теперь к ней нельзя получить доступ, а это может стать проблемой. Чтобы вернуть ее обратно, нужно просто удалить переменную:

Python Conditions and If statements

Python supports the usual logical conditions from mathematics:

  • Equals: a == b
  • Not Equals: a != b
  • Less than: a < b
  • Less than or equal to: a <= b
  • Greater than: a > b
  • Greater than or equal to: a >= b

These conditions can be used in several ways, most commonly in «if statements» and loops.

An «if statement» is written by using the if keyword.

Example

If statement:

a = 33
b = 200
if b > a:  print(«b is greater than a»)

In this example we use two variables, a and b,
which are used as part of the if statement to test whether b is greater than a.
As a is 33, and b is 200,
we know that 200 is greater than 33, and so we print to screen that «b is greater than a».

Python If…Else Tutorial
If Indentation
Elif
Else
Shorthand If
Shorthand If Else
If AND
If OR
Nested If
The pass keyword in If

Арифметические операторы

Арифметические операторы обычно работают с числами. Есть операторы для сложения, вычитания, умножения, деления, модуля и экспоненциальных операций. Некоторые из этих операторов работают и со строками. Все арифметические операторы — специальные символы.

  • +: оператор сложения;
  • -: оператор вычитания;
  • *: оператор умножения;
  • /: оператор деления;
  • **: экспоненциальный оператор;
  • //: оператор деления этажей.

Давайте посмотрим на пример арифметических операторов в Python.

x = 15
y = 7

sum = x + y
print("addition =", sum)

subtraction = x - y
print("subtraction =", subtraction)

multiplication = x * y
print("multiplication =", multiplication)

division = x / y
print("division =", division)

modulus = x % y
print("modulus =", modulus)

exponent = x ** 2
print("exponent =", exponent)

floor_division = x // y
print("division =", floor_division)  # 2

Вывод:

Python поддерживает операторы сложения и умножения для строк.

print("addition of strings =", ("Python" + " " + "Operators"))
print("multiplication of strings =", ("Python" * 2))

Вывод:

addition of strings = Python Operators
multiplication of strings = PythonPython

Проверьте себя

Вот случайное целое число: .

Нужно узнать две вещи о нем:

  • Делится ли оно на 17 без остатка?
  • В нем больше 12 цифр?

Если оба условия верны, тогда вернем .

Если одно из них ложно, тогда стоит запустить второй тест:

  • Делится ли оно без остатка на 13?
  • В нем больше 10 цифр?

Если оба условия верны, тогда вернем .

Если оригинальное число не определяется ни как , ни как , тогда выведем просто .

Итак: является ли число или или это просто случайное число?

Решение

— это число .

Рассмотрим подробнее код:

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

После этого создается последовательность условия if-elif-else.

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

Выходит, что оба оригинальных условия были верны, потому что на экран вывелось . Но если бы это было не так, следующая строка проделала бы то же самое, но проверяла, делится ли число на 13 (а не 17), а символов должно было быть больше 10 (не 12).

Если бы и это условие оказалось ложным, инструкция запустила бы .

Не так уж и сложно, не правда ли?

4.8. Intermezzo: Coding Style¶

Now that you are about to write longer, more complex pieces of Python, it is a
good time to talk about coding style. Most languages can be written (or more
concise, formatted) in different styles; some are more readable than others.
Making it easy for others to read your code is always a good idea, and adopting
a nice coding style helps tremendously for that.

For Python, PEP 8 has emerged as the style guide that most projects adhere to;
it promotes a very readable and eye-pleasing coding style. Every Python
developer should read it at some point; here are the most important points
extracted for you:

  • Use 4-space indentation, and no tabs.

    4 spaces are a good compromise between small indentation (allows greater
    nesting depth) and large indentation (easier to read). Tabs introduce
    confusion, and are best left out.

  • Wrap lines so that they don’t exceed 79 characters.

    This helps users with small displays and makes it possible to have several
    code files side-by-side on larger displays.

  • Use blank lines to separate functions and classes, and larger blocks of
    code inside functions.

  • When possible, put comments on a line of their own.

  • Use docstrings.

  • Use spaces around operators and after commas, but not directly inside
    bracketing constructs: .

  • Name your classes and functions consistently; the convention is to use
    for classes and for functions
    and methods. Always use as the name for the first method argument
    (see for more on classes and methods).

  • Don’t use fancy encodings if your code is meant to be used in international
    environments. Python’s default, UTF-8, or even plain ASCII work best in any
    case.

  • Likewise, don’t use non-ASCII characters in identifiers if there is only the
    slightest chance people speaking a different language will read or maintain
    the code.

Footnotes

Actually, call by object reference would be a better description,
since if a mutable object is passed, the caller will see any changes the
callee makes to it (items inserted into a list).

Basic Python if Command Example for String Comparison

Similar to the previous example, we can also use Python if command for string comparison as shown in the example below.

# cat if2.py
code = raw_input("What is the 2-letter state code for California?: ")
if code == 'CA':
  print("You passed the test.")
print("Thank You!")

In the above:

  • 1st line: Here we are getting the raw input from the user and storing it in the code variable. This will be stored as string.
  • 2nd line: In this if command, we are comparing whether the value of the code variable is equal to the string ‘CA’. Please note that we have enclosed the static string value in single quote (not double quote). The : at the end is part of the if command syntax.
  • 3rd line: As explained in the previous example, this line will get executed when the if command condition is true, as this line has indentation with spaces at the beginning.
  • 4th line: This will get executed whether the if command condition is true or false.

The following is the output of the above example code for both if condition true and false.

# python if2.py
What is the 2-letter state code for California?: CA
You passed the test.
Thank You!

# python if2.py
What is the 2-letter state code for California?: NV
Thank You!

8.3. The for statement¶

The statement is used to iterate over the elements of a sequence
(such as a string, tuple or list) or other iterable object:

for_stmt ::=  "for"  "in"  ":" 
              

The expression list is evaluated once; it should yield an iterable object. An
iterator is created for the result of the . The suite is
then executed once for each item provided by the iterator, in the order returned
by the iterator. Each item in turn is assigned to the target list using the
standard rules for assignments (see ), and then the suite is
executed. When the items are exhausted (which is immediately when the sequence
is empty or an iterator raises a exception), the suite in
the clause, if present, is executed, and the loop terminates.

A statement executed in the first suite terminates the loop
without executing the clause’s suite. A
statement executed in the first suite skips the rest of the suite and continues
with the next item, or with the clause if there is no next
item.

The for-loop makes assignments to the variables in the target list.
This overwrites all previous assignments to those variables including
those made in the suite of the for-loop:

for i in range(10):
    print(i)
    i = 5             # this will not affect the for-loop
                      # because i will be overwritten with the next
                      # index in the range

Names in the target list are not deleted when the loop is finished, but if the
sequence is empty, they will not have been assigned to at all by the loop. Hint:
the built-in function returns an iterator of integers suitable to
emulate the effect of Pascal’s ; e.g.,
returns the list .

Цикл for внутри цикла for — или просто вложенный цикл for

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

Предположим, что есть 9 сериалов в трех категориях: комедии, мультфильмы и драмы. Они представлены во вложенном списке Python («списки в списке»):

Необходимо посчитать символы в этих названиях и вывести результаты один за одним на экране в таком формате:

Как это можно сделать? Поскольку в основном списке есть три списка, чтобы получить их названия нужно перебрать элементы . Это нужно сделать и в основном списке, и в каждом вложенном:

Циклы for в Python может быть сложно понять вначале, а с вложенными циклами все еще сложнее. Поэтому чтобы разобраться с тем, что происходит, нужно взять ручку и бумагу и попробовать воспроизвести скрипт так, будто вы компьютер — пройти через каждый шаг и выписать результаты.

И еще кое-что:Синтаксис! Правила те же, что были при изучении простых циклов for

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

Попробуйте сделать следующее и обнаружить отличия в этих примерах:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *