• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта

Основы и методология программирования Cеминары группы 108-2

Помощь:
help('print') - помощь по синтаксису команды

Основы:
#,""" """" - комментарий
True, False - логические константы
and,or,not -логические операции с True и False
// - деление нацело
** - возведение в степень
== - сравнение
a,b=1,2 - присваивание

Операции с типом:
type() - определение типа
isinstance(n,int) - сравнение типа переменной с заданным типом
int('1')  str(1)   - преобразование типа
eval('1+2') - вычисление строки
ord - переводит символ в его ASCII код
chr - переводит ASCII код в соответствующий символ
structshape() - определение структуры данных

Ввод-вывод:

input("Input name:") - ввод с минимальным интерфейсом
print ('YES' if int(input())>0 else "NO") - параметрическая печать

Строки:
s='Python'
s1+s2 - конкатенация
s*2 - повтор
len(s) - длина

s[0]='P' - 0-й символ
s[:4] - с 0 по 3 символы
s[2:] - со 2 по последний символы
s[:]==s - вся строка
s[::2] - каждая 2 буква
s[::-1] - строка в обратном порядке

s.upper() - перевод в верхний регистр
s.lower() - перевод в нижний регистр
'P'.islower()   'p'.isupper()   - проверка символа на регистр
s.capitalize() - перевод в нижний регистр всех символов и перевод в верхний регистр первого символа.
s.find(t,p1,p2) - поиск строки t в интервале range(p1,p2)
s.split(' ') - формирование списка по разбиению строки s на слова, между которыми стоит разделитель

a,b=0,1
"{0:1d}={1:2d}".format(a,b)

from string import *
whitespace, punctuation
splitline() - для многострочного текста

split('-',number) - по номеру вхождения в подстроку
bytes = string1.encode('utf-8') - перевод в неизменяемую последовательность 0-255 ASCII кодов.
repr() - отображение спец. символов

Поиск символа в строке:
def find(word,letter):
      index=0
      while index<len(word):
              if word[index]==letter:
                      return index
             index=index+1
      return -1

Модуль:
import math - загрузка модуля
print(math)
math.pi
from math import pi
print(pi)
from math import * - загрузка пространства имен из модуль

def ro(i):
   print(round(pi,i))

if __name__ == "__main__":

    import sys
    ro(int(sys.argv[1]))

Структура условного оператора if elif else:
if ():
elif ():
else:

Определение функции, рекурсия:
def fac(n):
   if n==0:
       return 1
   else:
       return n*fac(n-1)

print(fac(int(input()))


Цикл while  и команды break, continue:
def countdown(n):
    while n>0:
          n=n-1
          if n==0:
               break
          elif n==2:
               continue
          print (n+1)
    print('Blastoff!')

Структура цикла for:
fruit='pineapple'
for char in fruit:
    print(char)

Работа с файлом:
fin=open(input.txt) - открыть файл
line=fin.readline() - считать строку
word=line.strip() - убрать спец. символы конца строки
fin.seek(n) - перетик байту n+1
fin.close() - закрыть фаайл
 Dictionary

from os import *

path.abspath(' fn ' ) - полный путь
path.exists('fn') - проверка существования
path.isdir(), path.isfile() - проверка типа
listdir(getcwd()) - список каталогов и файлов


def walk(dirname):
    for name in os.listdir(dirname):
       
path = os.path.join(dirname, name)
        if os.path.isfile(path):
            print(path)
       else:
            walk(path)

with open('input.txt') as file:

Запуск процессов
import os
cmd = 'ls -l'
fp = os.popen(cmd)

Модули
if __name__ == '__main__':


Списки list:

a=[1,2,3]
b=[4,5,6]
print(a+b) - [1,2,3,4,5,6]   - сложение=объединение
l=['a','b','c']
l.append('d') - присоединение элемента= l+['d']
l.extend([1,2]) - присоединение списка
l.insert(number,element) - вставка на позицию с номером number
l.sort(reverse=True|False) - сортировка
sum(l) - сумма элементов списка
l.pop(number) - вынуть значение под номером number
del l[::] - удалить интервал с шагом
l.remove(element) - удаление элемента
l.count(element) - число вхождений
l.index(element,range1,range2) - индекс элемента

Множества:
s={1,2,3}
s2=set() - пусто множество (не словарь)
s2.add(1) - добавление
s2.add(4)
s.update(s2) - объединение без повторений
s.discard(5) - удаление без исключения
s.remove(4) - с исключением
s.pop(1)
s.clear() - очистка
s.add(3)
s.union({1,2,10}) - объединение
s.intersection(s2) - пересечение
s.difference({1}) - разность
s.issubset(set(range(0,20)) - подмножество
s.issuperset({2}) - надмножество (объемлющее)



Объекты
is - проверка хранения объектов
Присваивание строк, списков - по ссылке (константной или нет).
def del_list_first(l):
      return l[1:]
def del_list_first_BAD(l):
      l=l[1:]

Копирование списка по значению
k=l[:]

Время
from time import *
start=time()
...
end=time()
print(end-start,' seconds')

Словари
d=dict()
d['a']='aaa'
l=d.values() - значения в словаре в виде списка
l=d.keys() - индексы в словаре в виде списка
d.get('a',b) - возвращает значение по индексу 'a' или значение по умолчанию b
d.items() - список из наборов
def histogram(s):
      d=dict()
      for c in s:
          if c not in d:
             d[c]=1
          else:
             d[c]+=1
       return d

def invert_dict(d):
     inverse=dict()
     for key in d:
          val=d[key]
          if val not in inverse:
            inverse[val]=[key]
          else:
            inverse[val].append(key)
     return inverse


Исключения
raise Error, 'input error '

Глобальные переменны в теле функции
been_called=False
def gl():
     global been_called
     been_called=True


Наборы (tuple)
t='a','b' - не изменяем как и строка.
t=('A',)+t[1]
a,b=b,a
divmod(a,b) - a=bq+r, return q,r

addr='student@python.org'
name,domain=addr.split('@')

def printall(*args):
     print(args)

* - преобразование в набор
zip -список из наборов после слияния
def has_match(t1,t2):
     for x,y in zip(t1,t2):
       if x==y:
          return True
     return False

d=dict(zip('abc',range(len('abc')))


from random import *
random(), random(n,m), choice(list) - генератор случайных чисел; чисел в интервале; случайный выбор элемента из списка

from fractions import *
Fraction(2, 4)

Лямбда-функции
x = lambda x: x**2
x(3)

Генераторы:
s = set(range(10))
{x**2 for x in s if x % 2 == 1}
d = {'a': 1, 'b': 2, 'c': 3}
{value:key for key, value in d.items()}

def fib(n):
    a, b = 0, 1         
    while a < n:
        yield a         
        a, b = b, a + b

list(fib(1000))

None

Исключения:
try:
    x=1/int(input())
except DivisionError:
    x = None
else:
    print(x)

assert len(s) <= 79, 'Long string'

if len(s) > 79:
    raise AssertionError('Long string')



Регулярные выражения
from re import *
^,$  - символы начала, конца строки
.(точка)  – один произвольный символ, например:  a..a – произвольная цепочка из четырех символов, начинающаяся и оканчивающаяся на a;
[ ]– набор символов, т.е. любой символ из заданного набора, например: [a-e0] – любая буква от a до e или цифра 0;
a* – повторение цепочки a нуль и более раз, например: b* – последовательность из произвольного  количества букв b (в том числе – нулевого, т.е. пустая цепочка);
a+ – повторение цепочки a один и более раз, например: b+ – последовательность из произвольного, не равного нулю, количества букв b;
a? – опциональная цепочка a (входит 0 или 1 раз), например:  ab? – цепочка  a  или  ab;
a{n} –  повторение цепочки a ровно n раз;
a{n,} –  повторение a как минимум n раз;
a{n,m}  – вхождение a от n до m раз;
( )– группировка, например: (ab)+ – последовательность из произвольного, не равного нулю, числа повторений строки ab; 
a|b  –  альтернатива, например: b|a+ – буква b или последовательность букв a;
\  – экранирование следующего специального символа, чтобы он воспринимался как обычный символ, например: a\.b. – цепочка из четырех символов: буквы a, точки, буквы b  и произвольного символа. 

\b совпадает с границей слова
\d, \D - любая цифра, (любой символ, кроме цифры)

pattern=re.compile('^.$')
search(pattern,string) - поиск
search(pattern,string).groups() - небезопасный поиск групп в ()
sub(r'\bword\b','another_word') - замена
re.VERBOSE - подробное регулярное выражение

Классы

class T:
pass
def __init__(self, n): __all__ = [ ]
def __new__(self):
def __iter__(self):
def __next__(self):
def __repr__(self):
def __str__(self)print(x)

https://docs.python.org/3/tutorial/stdlib.html
https://docs.python.org/3/tutorial/stdlib2.html