Первый Программа

PythonPythonBeginner
Практиковаться сейчас

This tutorial is from open-source community. Access the source code

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

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


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/DataStructuresGroup(["Data Structures"]) python/BasicConceptsGroup -.-> python/comments("Comments") python/BasicConceptsGroup -.-> python/python_shell("Python Shell") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/ControlFlowGroup -.-> python/for_loops("For Loops") python/ControlFlowGroup -.-> python/while_loops("While Loops") python/DataStructuresGroup -.-> python/lists("Lists") python/DataStructuresGroup -.-> python/tuples("Tuples") python/FunctionsGroup -.-> python/build_in_functions("Build-in Functions") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") subgraph Lab Skills python/comments -.-> lab-132701{{"Первый Программа"}} python/python_shell -.-> lab-132701{{"Первый Программа"}} python/conditional_statements -.-> lab-132701{{"Первый Программа"}} python/for_loops -.-> lab-132701{{"Первый Программа"}} python/while_loops -.-> lab-132701{{"Первый Программа"}} python/lists -.-> lab-132701{{"Первый Программа"}} python/tuples -.-> lab-132701{{"Первый Программа"}} python/build_in_functions -.-> lab-132701{{"Первый Программа"}} python/standard_libraries -.-> lab-132701{{"Первый Программа"}} end

Запуск Python

Программы на Python всегда запускаются внутри интерпретатора.

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

python3
Python 3.6.1 (v3.6.1:69c0db5050, Mar 21 2017, 01:21:04)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>

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

Режим интерактивной работы

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

Если вы начинаете вводить инструкции, они будут выполняться немедленно. Нет цикла редактирования/компиляции/запуска/отладки.

>>> print('hello world')
hello world
>>> 37*42
1554
>>> for i in range(5):
...     print(i)
...
0
1
2
3
4
>>>

Этот так называемый цикл чтения-выполнения-печати (или REPL) очень полезен для отладки и исследования.

СТОП: Если вы не можете понять, как взаимодействовать с Python, прекратите то, что делаете, и выясните, как это сделать. Если вы используете IDE, оно может быть скрыто за пунктом меню или другим окном. Многие части этого курса предполагают, что вы можете взаимодействовать с интерпретатором.

Давайте более внимательно рассмотрим элементы REPL:

  • >>> - это приглашение интерпретатора для начала новой инструкции.
  • ... - это приглашение интерпретатора для продолжения инструкции. Введите пустую строку, чтобы закончить ввод и выполнить введенное.

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

Подчеркивание _ хранит последний результат.

>>> 37 * 42
1554
>>> _ * 2
3108
>>> _ + 50
3158
>>>

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

Создание программ

Программы сохраняются в файлах с расширением .py.

## hello.py
print('hello world')

Вы можете создать файл hello.py в директории /home/labex/project с помощью любимого текстового редактора.

Запуск программ

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

$ python hello.py
hello world
bash %

Или из оболочки Windows:

C:\SomeFolder>hello.py
hello world

C:\SomeFolder>c:\python36\python hello.py
hello world

Примечание: В Windows вам может потребоваться указать полный путь к интерпретатору Python, например, c:\python36\python. Однако, если Python установлен обычным способом, вы можете просто ввести имя программы, например, hello.py.

Примерная программа

Решим следующую задачу:

Однажды утром вы вышли на улицу и положили доллар на тротуар у Сирс-башни в Чикаго. Каждый день после этого вы вышли на улицу и удваивали количество купюр. Через сколько дней количество купюр превысит высоту башни?

Вот решение, которое заключается в создании файла sears.py в директории /home/labex/project:

## sears.py
bill_thickness = 0.11 * 0.001 ## Meters (0.11 mm)
sears_height = 442 ## Height (meters)
num_bills = 1
day = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)

Когда вы запускаете его, получаете следующий вывод:

$ python3 sears.py
1 1 0.00011
2 2 0.00022
3 4 0.00044
4 8 0.00088
5 16 0.00176
6 32 0.00352
...
21 1048576 115.34336
22 2097152 230.68672
Number of days 23
Number of bills 4194304
Final height 461.37344

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

Инструкции

Программа на Python представляет собой последовательность инструкций:

a = 3 + 4
b = a * 2
print(b)

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

Комментарии

Комментарии - это текст, который не будет выполняться.

a = 3 + 4
## This is a comment
b = a * 2
print(b)

Комментарии обозначаются символом # и продолжаются до конца строки.

Переменные

Переменная - это имя для значения. В качестве имени переменной можно использовать буквы (как строчные, так и прописные) от a до z, а также символ нижнего подчеркивания _. Числа также могут быть частью имени переменной, но не могут быть первым символом.

height = 442 ## допустимо
_height = 442 ## допустимо
height2 = 442 ## допустимо
2height = 442 ## недопустимо

Типы

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

height = 442           ## Целое число
height = 442.0         ## Вещественное число
height = 'Really tall' ## Строка

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

Чувствительность к регистру

Python чувствителен к регистру. Большие и маленькие буквы считаются разными символами. Все эти переменные разные:

name = 'Jake'
Name = 'Elwood'
NAME = 'Guido'

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

while x < 0:   ## OK
WHILE x < 0:   ## Ошибка

Циклы

Инструкция while выполняет цикл.

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)

Инструкции, отступившиеся ниже while, будут выполняться, пока выражение после while истинно.

Отступы

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

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

print('Number of days', day)

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

    print(day, num_bills, num_bills * bill_thickness)
    day = day + 1
    num_bills = num_bills * 2

Поскольку инструкция print() в конце не имеет отступа, она не относится к циклу. Пустая строка нужна только для улучшения читаемости. Она не влияет на выполнение программы.

Лучшие практики по использованию отступов

  • Используйте пробелы вместо табуляции.
  • Используйте 4 пробела на каждый уровень вложенности.
  • Используйте текстовый редактор, поддерживающий Python.

Единственное требование Python - это то, чтобы отступы внутри одного блока были一致ны. Например, это ошибка:

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
        day = day + 1 ## ERROR
    num_bills = num_bills * 2

Условные операторы

Инструкция if используется для выполнения условного оператора:

if a > b:
    print('Computer says no')
else:
    print('Computer says yes')

Вы можете проверить несколько условий, добавив дополнительные проверки с использованием elif.

if a > b:
    print('Computer says no')
elif a == b:
    print('Computer says yes')
else:
    print('Computer says maybe')

Печать

Функция print выводит одну строку текста со значениями, переданными ей.

print('Hello world!') ## Выводит текст 'Hello world!'

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

x = 100
print(x) ## Выводит текст '100'

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

name = 'Jake'
print('My name is', name) ## Выводит текст 'My name is Jake'

print() всегда добавляет символ новой строки в конце.

print('Hello')
print('My name is', 'Jake')

В результате выводится:

Hello
My name is Jake

Можно подавить добавление новой строки:

print('Hello', end=' ')
print('My name is', 'Jake')

Теперь этот код выведет:

Hello My name is Jake

Ввод пользователя

Для чтения введенной пользователем строки используйте функцию input():

name = input('Enter your name:')
print('Your name is', name)

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

pass - инструкция

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

if a > b:
    pass
else:
    print('Computer says false')

Это также называется "операцией ничего не делающей" (no-op). Она ничего не делает. Она служит в качестве заготовки для инструкций, которые, возможно, будут добавлены позже.

Это первая серия упражнений, где вам нужно создавать файлы на Python и запускать их. Начиная отсюда, предполагается, что вы редактируете файлы в директории ~/project/. Чтобы помочь вам найти правильное место, были созданы несколько пустых начальных файлов с соответствующими именами файлов. Ищите файл bounce.py, который используется в первом упражнении.

Упражнение 1.5: Кошачий мяч

Регулярный резиновый мяч бросается с высоты 100 метров, и каждый раз, когда он падает на землю, он отскакивает вверх на 3/5 высоты, с которой он упал. Напишите программу bounce.py, которая выводит таблицу с высотой первых 10 отскоков.

Вот решение:

## bounce.py

height = 100
bounce = 1
while bounce <= 10:
    height = height * (3 / 5)
    print(bounce, round(height, 4))
    bounce += 1

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

1 60.0
2 36.0
3 21.599999999999998
4 12.959999999999999
5 7.775999999999999
6 4.6655999999999995
7 2.7993599999999996
8 1.6796159999999998
9 1.0077695999999998
10 0.6046617599999998

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

1 60.0
2 36.0
3 21.6
4 12.96
5 7.776
6 4.6656
7 2.7994
8 1.6796
9 1.0078
10 0.6047

Упражнение 1.6: Дебагинг

Следующий фрагмент кода содержит код из задачи с башней Сирс. В нем также есть ошибка.

## sears.py

bill_thickness = 0.11 * 0.001    ## Meters (0.11 mm)
sears_height   = 442             ## Height (meters)
num_bills      = 1
day            = 1

while num_bills * bill_thickness < sears_height:
    print(day, num_bills, num_bills * bill_thickness)
    day = days + 1
    num_bills = num_bills * 2

print('Number of days', day)
print('Number of bills', num_bills)
print('Final height', num_bills * bill_thickness)

Скопируйте и вставьте код, приведенный выше, в новый файл под названием sears.py. Когда вы запустите код, вы получите сообщение об ошибке, из-за которого программа будет аварийно завершаться так:

Traceback (most recent call last):
  File "sears.py", line 10, in <module>
    day = days + 1
NameError: name 'days' is not defined

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

  • Какой строке принадлежит ошибка?
  • Какая ошибка?
  • Исправьте ошибку
  • Запустите программу успешно

Резюме

Поздравляем! Вы завершили лабораторную работу "A First Program". Вы можете практиковаться в других лабораторных работах в LabEx, чтобы улучшить свои навыки.