Введение
В этом разделе рассматривается создание вашей первой программы, запуск интерпретатора и некоторые базовые методы отладки.
This tutorial is from open-source community. Access the source code
💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал
В этом разделе рассматривается создание вашей первой программы, запуск интерпретатора и некоторые базовые методы отладки.
Программы на 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()
в конце не имеет отступа, она не относится к циклу. Пустая строка нужна только для улучшения читаемости. Она не влияет на выполнение программы.
Единственное требование 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
.
if a > b:
pass
else:
print('Computer says false')
Это также называется "операцией ничего не делающей" (no-op). Она ничего не делает. Она служит в качестве заготовки для инструкций, которые, возможно, будут добавлены позже.
Это первая серия упражнений, где вам нужно создавать файлы на Python и запускать их. Начиная отсюда, предполагается, что вы редактируете файлы в директории ~/project/
. Чтобы помочь вам найти правильное место, были созданы несколько пустых начальных файлов с соответствующими именами файлов. Ищите файл bounce.py
, который используется в первом упражнении.
Регулярный резиновый мяч бросается с высоты 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
Следующий фрагмент кода содержит код из задачи с башней Сирс. В нем также есть ошибка.
## 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, чтобы улучшить свои навыки.