| ||||||||||||||||
| ||||||||||||||||
| ||||||||||||||||
Глава 3. Неформальное введение в Python В следующих примерах ввод и вывод различаются наличием или отсутствием приглашения ( 3.1 Использование Python в качестве калькулятора Давайте испробуем несколько простых команд Python. Запустите интерпретатор и дождитесь появления первичного приглашения " 3.1.1 Числа Интерпретатор работает как простой калькулятор: Вы можете набрать выражение, и он выдаст результат. Синтаксис выражений прост: операторы >>> 2+2 4 >>> # Это комментарий ... 2+2 4 >>> 2+2 # и комментарий в той же строке, что и код 4 >>> (50-5*6)/4 5 >>> # Целочисленное деление ... 7/3 2 >>> 7/-3 -3 >>> Подобно С, знак равенства (=) используется для присваивания значения переменной. Присвоенное значение не выводится: >>> width=20 >>> height=5*9 >>> width*height 900 >>> Значение может быть одновременно присвоено нескольким переменным: >>> x=y=z=0 # x, y, и z равны нулю >>> x 0 >>> y 0 >>> z 0 >>> Имеется полная поддержка вещественных чисел; операторы со смешанными типами операндов конвертируют целочисленные операнды к числам с плавающей точкой: >>> 4*2.5/3.3 3.0303030303 >>> 7.0/2 3.5 >>> 3.1.2 Строки Кроме чисел, Python также манипулирует со строками (string), заключенными в одинарные или двойные кавычки: >>> ’spam eggs’ ‘spam eggs’ >>> ’doesn\’t’ "doesn’t" >>> ’"Да," сказал он.’ ’"Да," сказал он.’ >>> "\"Да,\" сказал он." ’"Да," сказал он.’ >>> ’"Isn\’t," she said.’ ’"Isn\’t," she said.’ >>> Строки пишутся точно также, как они набраны для ввода: внутри кавычек и с кавычками, и другими специальными символами, выводимыми с помощью обратного слэша ( \ ), который необходим для показа точного значения. Строка заключается в двойные кавычки, если она сама содержит одинарные кавычки и не содержит двойных, в противном случае - в апострофах (одинарных кавычках). Оператор Строки можно конкатенировать (сцеплять друг с другом) с помощью оператора >>> word=’Help’+’A’ >>> word ‘HelpA’ >>> ’<’+word*5+’>’ ‘ Строки можно индексировать; первый символ строки имеет индекс 0, так же как и в С. Отдельного символьного типа не существует; символ - это просто строка длины 1. Подобно Icon, подстроки могут быть специфицированы в кусочной нотации: два индекса, разделенных двоеточием. >>> word[4] ‘A’ >>> word[0:2] ‘He’ >>> word[2:4] ‘lp’ >>> Кусочная индексация имеет полезные значения по умолчанию: опущенный первый индекс считается равным 0, опущенный второй индекс - длине строки. >>> word[:2] # Первые два символа 'He' >>> word[2:] # Все кроме первых двух символов 'lpA' >>> Полезный инвариант кусочных операций: >>> word[:2]+word[2:] 'HelpA' >>> word[:3]+word[3:] 'HelpA' >>> Некорректные индексы обрабатываются без проблем: слишком большой индекс заменяется длиной строки; если верхняя граница меньше нижней границы, то возвращается пустая строка. >>> word[1:100] 'elpA' >>> word[10:] '' >>> word[2:1] '' >>> Индексы могут быть отрицательными, для начала отсчета справа. Например: >>> word[-1] # Последний символ 'A' >>> word[-2] # Предпоследний символ 'p' >>> word[-2:] # Два последних символа 'pA' >>> word[:-2] # Все, кроме двух последних символов 'Hel' >>> Но -0 все равно, что 0, и не будет никакого отсчета справа! >>> word[-0] # (поскольку -0 равен 0) 'H' >>> Отрицательные индексы вне диапазона отсекаются, но не пытайтесь это использовать для простых (не кусочных) индексов: >>> word[-100:] 'HelpA' >>> word[-10] # ошибка Traceback (innermost last): File " Лучший способ для запоминания того, как работает кусочное выделение - это считать индексы указывающими между символами, с номером 0 на левой границе первого символа. А правая граница последнего символа строки длины +---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1 Первая строка чисел дает позицию индексов 0..5 в строке; вторая строка - соответствующие отрицательные индексы. Кусок от Для неотрицательных индексов длина куска равняется разности индексов, если они оба в пределах диапазона, например, длина куска Встроенная функция >>> s=’supercalifragilisticexpialidocious’ >>> len(s) 34 >>> 3.1.3 Списки В Python имеется несколько составных типов данных, используемых для группирования вместе нескольких значений. Самым универсальным является список (list), который может быть записан в виде перечня значений (элементов), разделенных запятыми, между квадратными скобками. Элементы списка не обязаны быть одного типа. >>> a=[‘spam’,‘eggs’,100,1234] >>> a [‘spam’,‘eggs’,100,1234] >>> Как и строковые индексы, индексы списка начинаются с 0, и список может быть конкатенирован (сцеплен), из него можно выделить кусок, и т.д. : >>> a[0] ‘spam’ >>> a[3] 1234 >>> a[-2] 100 >>> a[1:-1] [‘eggs’,100] >>> a[:2]+[‘bacon’,2*2] [‘spam’,‘eggs’,‘bacon’,4] >>> 3*a[:3]+[‘Boe!’] [‘spam’,‘eggs’,100,‘spam’,‘eggs’,100,‘spam’,‘eggs’,100,‘Boe!’] >>> В отличие от строк, которые неизменяемы (немутируемы), существует возможность изменения отдельных элементов списка: >>> a [‘spam’,‘eggs’,100,1234] >>> a[2]=a[2]+23 >>> a [‘spam’,‘eggs’,123,1234] >>> Присваивания кускам также возможны, и это даже может менять размер списка: >>> # Замена нескольких элементов: ... a[0:2]=[1,12] >>> a [1,12,123,1234] >>> # Удаление нескольких: ... a[0:2]=[] >>> a [123,1234] >>> # Вставка: ... a[1:1]=[‘bletch’,‘xyzzy’] >>> a [123,‘bletch’,‘xyzzy’,1234] >>> a[:0]=a # Вставка копии самого себя в начало >>> a [123,‘bletch’,’xyzzy’,1234,123,‘bletch’,’xyzzy’,1234] >>> Встроенная функция >>> len(a) 8 >>> Списки могут быть вложенными (списки, содержащие другие списки), например: >>> q=[2,3] >>> p=[1,q,4] >>> len(p) 3 >>> p[1] [2,3] >>> p[1][0] 2 >>> p[1].append(‘xtra’) # См. раздел 5.1 >>> p [1,[2,3,’xtra’],4] >>> q [2,3,’xtra’] >>> В последнем примере 3.2 Первые шаги в программировании Безусловно, мы можем использовать Python для намного более сложных задач, нежели сложения 2 плюс 2. Например, мы можем вывести первые члены последовательности чисел Фибоначчи: >>> # Числа Фибоначчи: ... # сумма двух элементов определяет следующий член последовательности ... a,b=0,1 >>> while b<10: ... print b ... a,b=b,a+b ... 1 1 2 3 5 8 >>> Этот пример знакомит с несколькими новыми особенностями.
Запятая в хвосте позволяет избежать перехода на новую строку: >>> a,b=0,1 >>> while b<1000: ... print b, ... a,b=b,a+b ... 1 1 2 3 4 8 13 21 34 55 89 144 233 377 610 987 >>> Интерпретатор сам вставляет новую строку перед выдачей приглашения, если последняя строка не была завершена. [Назад][Содержание][Вперед] |
|
| ||||||||||||||||
|