Главная страница

Самоучитель PythonВыпуск 2Дмитрий Мусинмая 07, 2017


Скачать 0.74 Mb.
НазваниеСамоучитель PythonВыпуск 2Дмитрий Мусинмая 07, 2017
Дата20.01.2019
Размер0.74 Mb.
Формат файлаpdf
Имя файлаPython3.pdf
ТипПрограмма
#64480
страница2 из 12
1   2   3   4   5   6   7   8   9   ...   12
4.2. Несколько специальных случаев
14

Глава
5
Программа не работает. Что делать?
Моя программа не работает! Что делать? В данной статье я постараюсь собрать наибо- лее частые ошибки начинающих программировать на python 3, а также расскажу, как их исправлять.
Проблема: Моя программа не запускается. На доли секунды появляется чёрное окошко,
а затем исчезает.
Причина: после окончания выполнения программы (после выполнения всего кода или при возникновении исключения программа закрывается. И если вы её вызвали двойным кликом по иконке (а вы, скорее всего, вызвали её именно так), то она закроется вместе с окошком, в котором находится вывод программы.
Решение: запускать программу через
IDLE
или через консоль.
Проблема: Не работает функция input. Пишет SyntaxError.
Пример кода:
>>> a = input()
hello world
File "", line 1
hello world
^
SyntaxError: unexpected EOF while parsing
Причина: Вы запустили Python 2.
Решение:
Установить Python 3
Проблема: Где-то увидел простую программу, а она не работает.
Пример кода:
15

Самоучитель Python, Выпуск 0.2
name
=
raw_input()
print name
Ошибка:
File
"a.py"
, line
3
print name
^
SyntaxError
: invalid syntax
Причина: Вам подсунули программу на Python 2.
Решение: Прочитать об отличиях Python 2 от Python 3
. Переписать её на Python 3. Напри- мер, данная программа на Python 3 будет выглядеть так:
name
=
input
()
print
(name)
Проблема: TypeError: Can’t convert ‘int’ object to str implicitly.
Пример кода:
>>>
a
=
input
()
+
5 8
Traceback (most recent call last):
File
""
, line
1
, in
TypeError
: Can't convert 'int' object to str implicitly
Причина: Нельзя складывать строку с числом.
Решение: Привести строку к числу с помощью функции int(). Кстати, заметьте, что функ- ция input() всегда возвращает строку!
>>>
a
=
int
(
input
())
+
5 8
>>>
a
13
Проблема: SyntaxError: invalid syntax.
Пример кода:
a
=
5
if a
==
5
print
(
'Ура!'
)
Ошибка:
File
"a.py"
, line
3
if a
==
5
^
SyntaxError
: invalid syntax
16

Самоучитель Python, Выпуск 0.2
Причина: Забыто двоеточие.
Решение:
a
=
5
if a
==
5
:
print
(
'Ура!'
)
Проблема: SyntaxError: invalid syntax.
Пример кода:
a
=
5
if a
=
5
:
print
(
'Ура!'
)
Ошибка:
File
"a.py"
, line
3
if a
=
5
^
SyntaxError
: invalid syntax
Причина: Забыто равно.
Решение:
a
=
5
if a
==
5
:
print
(
'Ура!'
)
Проблема: NameError: name ‘a’ is not defined.
Пример кода:
print
(a)
Причина: Переменная “a” не существует. Возможно, вы опечатались в названии или за- были инициализировать её.
Решение: Исправить опечатку.
a
=
10
print
(a)
Проблема: IndentationError: expected an indented block.
Пример кода:
a
=
10
if a
>
0
:
print
(a)
Причина: Нужен отступ.
17

Самоучитель Python, Выпуск 0.2
Решение:
a
=
10
if a
>
0
:
print
(a)
Проблема: TabError: inconsistent use of tabs and spaces in indentation.
Пример кода:
a
=
10
if a
>
0
:
print
(a)
print
(
'Ура!'
)
Ошибка:
File
"a.py"
, line
5
print
(
'Ура!'
)
^
TabError
: inconsistent use of tabs and spaces in indentation
Причина: Смешение пробелов и табуляции в отступах.
Решение: Исправить отступы.
a
=
10
if a
>
0
:
print
(a)
print
(
'Ура!'
)
Проблема: UnboundLocalError: local variable ‘a’ referenced before assignment.
Пример кода:
def f
():
a
+=
1
print
(a)
a
=
10
f()
Ошибка:
Traceback (most recent call last):
File
"a.py"
, line
7
,
in
<
module
>
f()
File
"a.py"
, line
3
,
in f
a
+=
1
UnboundLocalError
: local variable
'a'
referenced before assignment
Причина: Попытка обратиться к локальной переменной, которая ещё не создана.
Решение:
18

Самоучитель Python, Выпуск 0.2
def f
():
global a
a
+=
1
print
(a)
a
=
10
f()
Проблема: Программа выполнилась, но в файл ничего не записалось / записалось не всё.
Пример кода:
>>>
f
=
open
(
'output.txt'
,
'w'
, encoding
=
'utf-8'
)
>>>
f write(
'bla'
)
3
>>>
Причина: Не закрыт файл, часть данных могла остаться в буфере.
Решение:
>>>
f
=
open
(
'output.txt'
,
'w'
, encoding
=
'utf-8'
)
>>>
f write(
'bla'
)
3
>>>
f close()
>>>
Проблема: Здесь может быть ваша проблема. Комментарии чуть ниже :)
Также вам может быть полезно это описание:
19

Глава
6
Инструкция if-elif-else, проверка истинности, трехместное выражение if/else
Условная инструкция if-elif-else (её ещё иногда называют оператором ветвления) - ос- новной инструмент выбора в Python. Проще говоря, она выбирает, какое действие следу- ет выполнить, в зависимости от значения переменных в момент проверки условия.
Синтаксис инструкции if
Сначала записывается часть if с условным выражением, далее могут следовать одна или более необязательных частей elif, и, наконец, необязательная часть else. Общая форма записи условной инструкции if выглядит следующим образом:
if test1:
state1
elif test2:
state2
else
:
state3
Простой пример (напечатает ‘true’, так как 1 - истина):
>>>
if
1
:
print
(
'true'
)
else
:
print
(
'false'
)
true
20

Самоучитель Python, Выпуск 0.2
Чуть более сложный пример (его результат будет зависеть от того, что ввёл пользова- тель):
a
=
int
(
input
())
if a
< -
5
:
print
(
'Low'
)
elif
-
5
<=
a
<=
5
:
print
(
'Mid'
)
else
:
print
(
'High'
)
Конструкция с несколькими elif может также служить отличной заменой конструкции switch - case в других языках программирования.
Проверка истинности в Python
• Любое число, не равное 0, или непустой объект - истина.
• Числа, равные 0, пустые объекты и значение None - ложь
• Операции сравнения применяются к структурам данных рекурсивно
• Операции сравнения возвращают True или False
• Логические операторы and и or возвращают истинный или ложный объект-операнд
Логические операторы:
X
and
Y
Истина, если оба значения X и Y истинны.
X
or
Y
Истина, если хотя бы одно из значений X или Y истинно.
not
X
Истина, если X ложно.
Трехместное выражение if/else
Следующая инструкция:
if
X:
A
=
Y
else
:
A
=
Z
6.2. Проверка истинности в Python
21

Самоучитель Python, Выпуск 0.2
довольно короткая, но, тем не менее, занимает целых 4 строки. Специально для таких случаев и было придумано выражение if/else:
A
=
Y
if
X
else
Z
В данной инструкции интерпретатор выполнит выражение Y, если X истинно, в против- ном случае выполнится выражение Z.
>>>
A
=
't'
if
'spam'
else
'f'
>>>
A
't'
6.3. Трехместное выражение if/else
22

Глава
7
Циклы for и while, операторы break и continue, волшебное слово else
В этой статье я расскажу о циклах for и while, операторах break и continue, а также о слове else, которое, будучи употребленное с циклом, может сделать программный код несколько более понятным.
Цикл while
While - один из самых универсальных циклов в Python, поэтому довольно медленный.
Выполняет тело цикла до тех пор, пока условие цикла истинно.
>>>
i
=
5
>>>
while i
<
15
:
print
(i)
i
=
i
+
2 5
7 9
11 13
Цикл for
Цикл for уже чуточку сложнее, чуть менее универсальный, но выполняется гораздо быст- рее цикла while. Этот цикл проходится по любому итерируемому объекту (например стро-
23

Самоучитель Python, Выпуск 0.2
ке или списку), и во время каждого прохода выполняет тело цикла.
>>>
for i
in
'hello world'
:
print
(i
*
2
, end
=
''
)
hheelllloo wwoorrlldd
Оператор continue
Оператор continue начинает следующий проход цикла, минуя оставшееся тело цикла (for или while)
>>>
for i
in
'hello world'
:
if i
==
'o'
:
continue print
(i
*
2
, end
=
''
)
hheellll wwrrlldd
Оператор break
Оператор break досрочно прерывает цикл.
>>>
for i
in
'hello world'
:
if i
==
'o'
:
break print
(i
*
2
, end
=
''
)
hheellll
Волшебное слово else
Слово else, примененное в цикле for или while, проверяет, был ли произведен выход из цикла инструкцией break, или же “естественным” образом. Блок инструкций внутри else выполнится только в том случае, если выход из цикла произошел без помощи break.
>>>
for i
in
'hello world'
:
if i
==
'a'
:
break else
:
print
(
'Буквы a в строке нет'
)
Буквы a в строке нет
7.3. Оператор continue
24

Глава
8
Ключевые слова, модуль keyword
Сегодня я по-быстрому пробегусь по всем ключевым словам в Python, а заодно и по моду- лю keyword.
Ключевые слова
False - ложь.
True - правда.
None - “пустой” объект.
and - логическое И.
with / as - менеджер контекста
assert условие - возбуждает исключение, если условие ложно.
break - выход из цикла.
class - пользовательский тип
, состоящий из методов и атрибутов.
continue - переход на следующую итерацию цикла.
def - определение функции
del - удаление объекта.
elif - в противном случае, если.
else - см.
for/else или if/else
except - перехватить исключение.
25

Самоучитель Python, Выпуск 0.2
finally - вкупе с инструкцией try, выполняет инструкции независимо от того, было ли исключение или нет.
for - цикл for.
from - импорт нескольких функций из модуля.
global - позволяет сделать значение переменной, присвоенное ей внутри функции, до- ступным и за пределами этой функции.
if - если
import - импорт модуля.
in - проверка на вхождение.
is - ссылаются ли 2 объекта на одно и то же место в памяти.
lambda - определение анонимной функции.
nonlocal - позволяет сделать значение переменной, присвоенное ей внутри функции, до- ступным в объемлющей инструкции.
not - логическое НЕ.
or - логическое ИЛИ.
pass - ничего не делающая конструкция.
raise - возбудить исключение.
return - вернуть результат.
try - выполнить инструкции, перехватывая исключения
while - цикл while.
yield - определение функции-генератора.
Модуль keyword
В общем-то, keyword - не такой уж и модуль, но все же.
keyword.kwlist - список всех доступных ключевых слов.
keyword.iskeyword(строка) - является ли строка ключевым словом.
8.2. Модуль keyword
26

Глава
9
Встроенные функции
Краткий обзор встроенных функций в Python 3.
Встроенные функции, выполняющие преобразование типов
bool(x) - преобразование к типу bool, использующая стандартную процедуру проверки ис- тинности
. Если х является ложным или опущен, возвращает значение False, в противном случае она возвращает True.
bytearray([источник [, кодировка [ошибки]]]) - преобразование к bytearray
. Bytearray - из- меняемая последовательность целых чисел в диапазоне 0<=X<256. Вызванная без аргу- ментов, возвращает пустой массив байт.
bytes([источник [, кодировка [ошибки]]]) - возвращает объект типа bytes
, который явля- ется неизменяемой последовательностью целых чисел в диапазоне 0<=X<256. Аргументы конструктора интерпретируются как для bytearray().
complex([real[, imag]]) - преобразование к комплексному числу
dict([object]) - преобразование к словарю
float([X]) - преобразование к числу с плавающей точкой
. Если аргумент не указан, возвра- щается 0.0.
frozenset([последовательность]) - возвращает неизменяемое множество
int([object], [основание системы счисления]) - преобразование к целому числу
list([object]) - создает список
memoryview([object]) - создает объект memoryview.
object() - возвращает безликий объект, являющийся базовым для всех объектов.
27

Самоучитель Python, Выпуск 0.2
range([start=0], stop, [step=1]) - арифметическая прогрессия от start до stop с шагом step.
set([object]) - создает множество
slice([start=0], stop, [step=1]) - объект среза от start до stop с шагом step.
str([object], [кодировка], [ошибки]) - строковое представление объекта. Использует метод
__str__.
tuple(obj) - преобразование к кортежу
Другие встроенные функции
abs(x) - Возвращает абсолютную величину (модуль числа).
all(последовательность) - Возвращает True, если все элементы истинные (или, если по- следовательность пуста).
any(последовательность) - Возвращает True, если хотя бы один элемент - истина. Для пу- стой последовательности возвращает False.
ascii(object) - Как repr(), возвращает строку, содержащую представление объекта, но заме- няет не-ASCII символы на экранированные последовательности.
bin(x) - Преобразование целого числа в двоичную строку.
callable(x) - Возвращает True для объекта, поддерживающего вызов (как функции).
chr(x) - Возвращает односимвольную строку, код символа которой равен x.
classmethod(x) - Представляет указанную функцию методом класса.
compile(source, filename, mode, flags=0, dont_inherit=False) - Компиляция в программный код, который впоследствии может выполниться функцией eval или exec. Строка не долж- на содержать символов возврата каретки или нулевые байты.
delattr(object, name) - Удаляет атрибут с именем ‘name’.
dir([object]) - Список имен объекта, а если объект не указан, список имен в текущей ло- кальной области видимости.
divmod(a, b) - Возвращает частное и остаток от деления a на b.
enumerate(iterable, start=0) - Возвращает итератор, при каждом проходе предоставляю- щем кортеж из номера и соответствующего члена последовательности.
eval(expression, globals=None, locals=None) - Выполняет строку программного кода.
exec(object[, globals[, locals]]) - Выполняет программный код на Python.
filter(function, iterable) - Возвращает итератор из тех элементов, для которых function воз- вращает истину.
format(value[,format_spec]) - Форматирование (обычно форматирование строки
).
getattr(object, name ,[default]) - извлекает атрибут объекта или default.
globals() - Словарь глобальных имен.
9.2. Другие встроенные функции
28

Самоучитель Python, Выпуск 0.2
hasattr(object, name) - Имеет ли объект атрибут с именем ‘name’.
hash(x) - Возвращает хеш указанного объекта.
help([object]) - Вызов встроенной справочной системы.
hex(х) - Преобразование целого числа в шестнадцатеричную строку.
id(object) - Возвращает “адрес” объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта в течение срока его существования.
input([prompt]) - Возвращает введенную пользователем строку. Prompt - подсказка поль- зователю.
isinstance(object, ClassInfo) - Истина, если объект является экземпляром ClassInfo или его подклассом. Если объект не является объектом данного типа, функция всегда возвращает ложь.
issubclass(класс, ClassInfo) - Истина, если класс является подклассом ClassInfo. Класс счи- тается подклассом себя.
iter(x) - Возвращает объект итератора.
len(x) - Возвращает число элементов в указанном объекте.
locals() - Словарь локальных имен.
map(function, iterator) - Итератор, получившийся после применения к каждому элементу последовательности функции function.
max(iter, [args ...] * [, key]) - Максимальный элемент последовательности.
min(iter, [args ...] * [, key]) - Минимальный элемент последовательности.
next(x) - Возвращает следующий элемент итератора.
oct(х) - Преобразование целого числа в восьмеричную строку.
open(file,
mode=’r’,
buffering=None,
encoding=None,
errors=None,
newline=None,
closefd=True) - Открывает файл и возвращает соответствующий поток.
ord(с) - Код символа.
pow(x, y[, r]) - ( x ** y ) % r.
reversed(object) - Итератор из развернутого объекта.
repr(obj) - Представление объекта.
print([object, ...], *, sep=” ”, end=’\n’, file=sys.stdout) - Печать.
property(fget=None, fset=None, fdel=None, doc=None)
round(X [, N]) - Округление до N знаков после запятой.
setattr(объект, имя, значение) - Устанавливает атрибут объекта.
sorted(iterable[, key][, reverse]) - Отсортированный список.
staticmethod(function) - Статический метод для функции.
1   2   3   4   5   6   7   8   9   ...   12


написать администратору сайта