Первые шаги в Python

Откройте IDLE и начните писать код:

print("Hello world")

НажмитеEnter. Как видите, в результате выполнения команды появилась надпись, Hello world, а также новое поле, в которое мы можем ввести другую команду.

Команда print()отвечает (в данном примере) за написание текста, который мы помещаем в между скобок, сопровождающих команду, и дополнительно в кавычки. Теперь введите и выполните ( Enter) следующую команду:

text = "Hello world"

На этот раз такого эффекта нет. Итак, выполните следующую команду:

print(text)

В результате мы увидим:

Hello world

Сравните первую команду с последней. Они разные, хотя результат один и тот же. В первом мы передавали print()текст непосредственно команде, которая затем выводилась. Мы дали слово второму text. Вообще-то надо было писать не «слово», а переменную . У переменной есть имя, в данном случае text. Мы можем присвоить ему некоторое значение, которое он затем сохранит. В данном случае это был короткий текст, но есть и другие возможности, о которых речь пойдет позже. Значение переменной было присвоено с помощью оператора =. По обе стороны от оператора есть пробелы, это не обязательно, но повышает читабельность кода.

В приведенном выше примере textмы ранее присвоили переменной текст «Hello World!». Затем мы передали переменную команде print(), которая вывела на экран хранящийся в ней текст.

Однако вы можете задаться вопросом, откуда команда print()«знала», что ей не следует печатать текст «text», а использовать переменную с именем tekst. Запустите следующую команду:

print("text")
text

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

print(Hello world)
  File "<python-input-12-aebb45e2da23>", line 1
    print(Hello world) ^ SyntaxError: invalid syntax 

На этот раз текст не был напечатан, но появилось сообщение об ошибке. SyntaxError: invalid syntaxуказывает на синтаксическую ошибку, в данном случае, конечно, кавычки были опущены.

Здесь стоит отметить, что команда print()на самом деле является вызовом функции с таким именем. О функциях мы поговорим позже, а пока стоит знать, что это некие куски кода, имеющие имя. Мы можем предоставить им данные, которые можно обрабатывать в функциях, функции также могут возвращать данные.

Цифры и простые расчеты в Python

Давайте проверим, как команда print()отреагирует на ввод числа вместо текста или переменной.

print(7)
7

Число (введенное без кавычек) было напечатано правильно. Теперь попробуем что-нибудь еще:

print(7+3)
10

Как видите, оба числа были сложены, и результат был напечатан.

Выше мы использовали команду print(), но если мы хотим просто получить результат, то теперь можем проверить и некоторые другие действия:

print(7-3)
print(7*3)
print(7**3)
print(7/3)
print(7//3)
print(7%3)
4
21
343
2.3333333333333335
2
1

Подведем итог изученным нами арифметическим операторам:

Оператор значение пример результат
+ добавление 7+3 10
вычитание 7-3 4
* умножение 7*3 21
** возведение в степень 7**3 343
/ разделение 7/3 2.33…
// целочисленное деление 7//3 2
% остаток от деления 7%3 1

Если мы работаем в JupyterLabинтерактивном IPythonрежиме или Python (см. ниже) и хотим увидеть результат, нам не обязательно использовать команду, print()если она является единственным или последним выражением в последовательности команд. Просто введите действие напрямую, и результат будет отображен:

print(7*7)
2*2
49
4

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

Переменные и числа

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

x = 11
y = 123
print(x)
print(x * y)
11
1353

Результат расчета также можно сохранить в переменной:

z = x * y
print(z)
1353

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

x = 2
z = y**2
print(x)
print(z)
2
15129

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

Давайте посмотрим на следующую серию команд:

x = 20
print(x)
y = x
print(y)
x = 10
print(x)
print(y)
20
20
10
20

Последовательно были выполнены следующие действия:

  1. Был создан объект, хранящий значение 20, а затем была создана «метка» (переменная) с именем, xуказывающим на этот объект.
  2. Значение, хранящееся в объекте, на который указывает переменная, было напечатано x.
  3. Была создана еще одна переменная, yуказывающая на тот же объект (со значением 20).
  4. Значение, хранящееся в объекте, на который указывает переменная, было напечатано y.
  5. Был создан еще один объект, хранящий число 10, и xэтому объекту была присвоена переменная.
  6. Были напечатаны значения, хранящиеся в объектах, которым были присвоены обе переменные.

Как видите, значение, возвращаемое после вызова переменной, не изменилось y.

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

Последовательность действий

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

result = 10+10*2**3
print(result)
90

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

result = ((10+10)*2) / (1+3) 
print(result)
10.0

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

Действие с скобками, конечно, можно поместить прямо в команду print():

print(((10+10)*2) / (1+3))
10.0

Типы данных в Python

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

Давайте проверим, как работать с числами с плавающей запятой и объединять их с целыми числами:

1.2+1.0
2.2
1.2+1
2.2
1.0+1
2.0

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

Во многих языках программирования (например, Java, C), когда мы вводим в программу новую переменную, мы должны объявить ее тип. В Python тип получается из присвоенных значений (помните, что переменная указывает только на объект, хранящий значение). Мы можем проверить тип переменных, а точнее значения, указанные переменными, с помощью команды type():

a = 1
b = 1.0
c = a+b
d = a/a
e = "tekst"
print(type(a))
print(type(b))
print(type(c))
print(type(d))
print(type(e))
<class 'int'>
<class 'float'>
<class 'float'>
<class 'float'>
<class 'str'>

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

Возможно присвоение значений нескольким переменным в одной строке:

a, b, c, d = 1, 1.0, 5, "Ala"
print(a)
print(b)
print(c)
print(d)
1
1.0
5
Ala

Однако это не способствует ясности кода, особенно когда переменные принимают данные разных типов.

Следующий тип — логический тип, также известный как логический тип. Он может принимать одно из двух значений: True(истина) или False(ложь). Вопреки тому, что может показаться в начале изучения программирования, это чрезвычайно полезно и важно. Более подробно мы обсудим это позже в курсе, а пока ограничимся основной информацией.

prawda = True
print(prawda)
True
type(prawda)
bool

Функция bool()позволяет преобразовать значение в логический тип. Обратите внимание, что 0он преобразуется в False, другие числа в True. Строка преобразуется в True.

print(bool(1))
print(bool(0))
print(bool(-17))
print(bool())
print(bool('DNA'))
print(bool(False))
print(bool('False'))
True
False
True
False
True
False
True

Рассмотрим, почему последняя команда вернула значение True.

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

Преобразование данных

Выше мы вызвали команду bool(), которая преобразовывала заданные значения в логический тип. Также возможны преобразования в другие типы. Для этого используются следующие команды: int()— для целых чисел, float()— для чисел с плавающей запятой, str()для строк.

Давайте посмотрим, как это работает:

a = 1
print(type(a))
b = float(a)
print(b)
print(type(b))
c = bool(a)
print(c)
print(type(c))
d = str(a)
print(d)
print(type(d))
e = float("1")
print(e)
print(type(e))
f = "7"
print(f)
print(type(f))
g = int(f)
print(g)
print(type(g))
<class 'int'>
1.0
<class 'float'>
True
<class 'bool'>
1
<class 'str'>
1.0
<class 'float'>
7
<class 'str'>
7
<class 'int'>

Теперь проверьте:

f = int("DNA")
---------------------------------------------------------------------------

ValueError                                Traceback (most recent call last)

<python-input-11-83a0f7f10596> in <module>
----> 1 f = int("DNA")

ValueError: invalid literal for int() with base 10: 'DNA'

Как видите, числовые тексты в данном случае не удались DNA, что не должно вызывать удивления.

Неточные значения

При расчете вы можете столкнуться со странным результатом:

1.0 - 1.1
-0.10000000000000009

Мы должны были получить -0.1, и мы это сделали -0.10000000000000009. Это «условие», возникающее в результате того, как компьютер хранит числа, и ни в коем случае не ограничивается Python. Подробнее об этом можно прочитать в документации Python: https://docs.python.org/3/tutorial/floatingpoint.html .

Округление чисел

Один из способов справиться с подобными случаями — округлить числа. Это также один из способов отображения чисел без ненужного расширения десятичной части чисел с плавающей запятой. Это можно сделать с помощью функции round():

print(round(3.1415926535))
print(round(3.1415926535, 3))
liczba = 10/7
print(liczba)
zaokraglona = round(liczba)
print(zaokraglona)
zaokraglona_2 = round(liczba, 2)
print(zaokraglona_2)
3
3.142
1.4285714285714286
1
1.43

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

Имена переменных

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

Основные правила, которые необходимо соблюдать, следующие:

  • Имя переменной может состоять из букв, цифр и символов подчеркивания ( _), также называемых символами подчеркивания.
  • Имя переменной не может содержать пробелов (это следует из вышесказанного, но стоит подчеркнуть)
  • Имя переменной не может начинаться с цифры, т. е. оно может начинаться с буквы или подчеркивания.
  • Избегайте слов , зарезервированных в Python для целей программирования ( , FalsedefifraiseNonedelimportreturnTrueelifintry, , and, , elseiswhileasexceptlambdawith, , , assertfinallynonlocalyield, , , , ) и встроенных функций имен , , )breakfornotclassfromorcontinueglobalpassprinttype
  • Python различает множество букв, например family, Family ,FAMILYразные строки символов и, например, разные имена переменных.

Следующие правила позволяют вам сохранить, среди прочего: читаемость кода и соблюдение соглашений об именах Python:

  • Имена переменных должны четко определять хранимые значения. Не поддавайтесь искушению, особенно при написании длинных и сложных программ, давать переменным короткие имена, которые ничего не значат. Например, если вы хотите сохранить название вида, пусть переменная будет называться gatunekили nazwa_gatunku, а не gли ng. Когда вы пишете программу, вы будете знать, что происходит, возможно, вы даже сэкономите несколько секунд на наборе текста на клавиатуре, но когда вы вернетесь к коду через несколько дней, недель или месяцев, вы, вероятно, потратите впустую гораздо больше времени будет пытаться выяснить, что означают такие имена, как ng, или z, особенно если вы также решите «экономить время», не записывая комментарии к коду (подробнее об этом позже).
  • Имя переменной не должно быть слишком общим, но и не должно быть слишком длинным. Необходимо найти баланс между слишком общими названиями и слишком длинными, но точными именами.
  • Если имя состоит из нескольких слов, Python использует подчеркивание для их разделения. Следовательно, переменная, хранящая имя последовательности белка, должна называться, например, nazwa_sekwencji_bialkaне nazwasekwencjibialka(нечитаемо) или nazwaSekwencjiBialka(читабельно, а скорее принято, например, в Java, иначе см. ниже).
  • Имена переменных не должны содержать заглавные буквы.
  • Избегайте использования букв, выходящих за рамки основного набора, принятого для английского языка, в том числе: «Польские буквы» ą, и т. д. Поэтому назовите переменную, óа не . Вы также можете просто использовать английские имена, особенно если ваш код смогут прочитать люди, не говорящие по-польски.Żroznicaróżnica

Позже мы обсудим соглашения об именах для других элементов языка, таких как классы, функции и константы.

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

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

Заполните поле
Заполните поле
Пожалуйста, введите корректный адрес email.