Prod1gal / Conspectus

0 stars 0 forks source link

WEBforMyself (Python) #1

Open Prod1gal opened 12 months ago

Prod1gal commented 12 months ago

print(30 % 2) #0

print(7 % 2) #1

print(7 // 2) #3

print(100 ** 0.5) #10

Prod1gal commented 12 months ago

многострочный комментарий

verse = """первая строка вторая строка третья строка"""

print(verse)

verse = "первая строка\n\ вторая строка\n\ третья строка"

print(verse)

Prod1gal commented 12 months ago

""" сырая строка """

path = r"C:\Program Files (x86)\dotnet" print(path)

Prod1gal commented 12 months ago

Срез строк и индексы

s = "Hello world!" print(s[0]) #H print(s[-1]) #! print(s[-12]) #H s[0] = str(D) # str[0] = "D" будет ошибка, потому что строки неизменяемые

print(s)

s = "Hello world!" print(s[0:12]) # Hello world! print(s[0:5]) # Hello print(s[:5]) # Hello print(s[6:]) # world! print(s[::]) # Hello world! print(s[::2]) # Hlowrd print(s[::-1]) # !dlrow olleH перевернуть строку print(s[:5] + s[6:]) # Helloworld!

Prod1gal commented 12 months ago

Методы строк

s = "hello" print(len(s)) # 5 длина строки

s = "HELLO" print(s.capitalize()) # Hello - переводит все символы в маленькие, а первый - в большой print(s) # метод не перезаписывает строку, а создает новый объект

s = 'hello' print(s.center(20)) # hello метод позволяет отцентрировать строку, по умолчанию слева и справа - пробелы, но можно задать любые символы

s = 'hello' print(s.center(20, "*")) # ***hello****

s = 'hello' print(s.count("l")) # 2 - метод возвращает количество вхождений символов в строку (диапазон можно указать [x:y:z] print(s.count("l", 0, 3)) # 1 - взять символ с первого по третий

s = "hello" print(s.find("l")) # 2 - возвращает подстроку в строке - первый индекс вхождения или -1 print(s.find("a")) # -1 - подстроки нет

s = 'hello' print(s.index("h")) # 0 - метода тоже возвращает индекс, но если символа нет - будет ошибка

s = 'hello' print(s.replace("l", "d")) # heddo - метод заменяет подстроку на другу

s = 'hello world' print(s.split()) # ['hello', 'world'] - символ, по которому происходит разделение, пробел по умолчанию print(s.split("*")) # ['hello world'] - если символа такого нет, то строка будет без изменений print(s.split("l")) # ['he', '', 'o wor', 'd']

s = 'hello' print(s.isdigit()) # False - метод проверяет состоит ли строка из цифр (полностью) print(s.isalpha()) # True - метод проверяет состоит ли строка из букв (полностью) если запятая, то тоже будет False

Prod1gal commented 12 months ago

""" ФОРМАТИРОВАНИЕ СТРОК """

name = "John" age = 30 print("My name is " + name + ". I'm " + str(age)) print("My name is %(name)s, I'm %(age)d" %{"name":name, "age":age}) # d - digit, s - string print("My name is %s, I'm %d" %(name, age))

print("Title: %s. Price: %.2f" %("Sony", 40)) # Title: Sony. Price: 40.00

print("My name is {}. I'm {}.".format(name, age))

""" F-strings """

print(f"My name is {name}, I'm {age}") print(f"My name is {name}, I'm {age + 5}") # удобство в том, что при ф-форматировании можно менять значения внутри скобок

print(f"5 + 2 = {5 + 2}")

Prod1gal commented 12 months ago

""" Оператор IF """

x = 0 if x: print("Переменная х вернула ИСТИНУ") else: print("Переменная х вернула ЛОЖЬ") # этот вариант

if 1: print("Выражение ИСТИННО") # этот вариант else: print("Выражение ЛОЖНО")

light = "red"

if light == "red": print("STOP") elif light == "yellow": print("Wait") elif light == "green": print("GO!!!") else: print("!??!? WAAAT")

age = int(input("Сколько Вам лет?: "))

if age >= 18: print("Добро пожаловать!") else: print("Вам ещё рано :)")

age = int(input("Сколько Вам лет?: "))

if age >= 18: print("Добро пожаловать!") elif age <= 18: print(f"Вам {age} лет. До совершеннолетия не хватает {18 - age} года:)")

Prod1gal commented 12 months ago

"""циклы FOR | While """

i = 1 while i <= 10: print(i) i += 1 # i = i + 1

i = 1 while i <= 10: print(i, end=" ") i += 1 # горизонтальный набор цифр 1 2 3 4 5 6 7 8 9 10

s = "Hello world" for l in s: # для каждой буквы в строке print(l, end=' ')

H e l l o w o r l d

s = "Hello World" for l in s: if l == " ": continue # продолжаем, игнорируя пробел print(f"'{l}'", end=" ")

'H' 'e' 'l' 'l' 'o' 'W' 'o' 'r' 'l' 'd'

Prod1gal commented 11 months ago

""" СПИСКИ """

l = [1, 2, 3, ["test", 10], "world"] print(type(l))

<class 'list'>

l2 = list("hello") print(l2)

['h', 'e', 'l', 'l', 'o']

l3 = list((1, 2, 3)) # создание списка, двойные скобки как кортеж print(l3)

[1, 2, 3]

l4 = [i for i in "hello"] print(l4)

['h', 'e', 'l', 'l', 'o']

l5 = [i for i in "hello world" if i != " " and i != "e" and i != "o"]

l5 = [i for i in "hello world" if i not in ["e", "o", " "]] print(l5)

['h', 'l', 'l', 'w', 'r', 'l', 'd']

l6 = [i*2 for i in "hello world" if i not in ["e", "a", "o", "i", "u", " "]] print(l6)

['hh', 'll', 'll', 'ww', 'rr', 'll', 'dd']

Prod1gal commented 11 months ago

print(list(range(1, 10)))

[1, 2, 3, 4, 5, 6, 7, 8, 9] - генератор заполнит список

print(list(range(11)))

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

print(list(range(0, 11, 2))) # start/end/step

[0, 2, 4, 6, 8, 10]

for i in range (1, 3): print(f"Внешний цикл # {i}") for j in range(1, 3): print(f'\tВнутренний цикл # {j}')

Внешний цикл # 1

Внутренний цикл # 1

Внутренний цикл # 2

Внешний цикл # 2

Внутренний цикл # 1

Внутренний цикл # 2

Prod1gal commented 11 months ago

"""Методы для работы со списками"""

l = [1, 2, 3, "hello", ["test", 10], "world", True] print(len(l)) # количество элементов списка

names = ["Ivanov", "Petrov", "Sidorov"] print(names[1])

Petrov

print(l[3])

hello

print(l[4][0])

test

срез элементов

print(l[0:3])

[1, 2, 3]

список в отличие от строк являются изменяемыми последовательностями

"""как изменить элементы списка"""

l = [1, 2, 3, "hello", ["test", 10], "world", True] l[2] = "WOHO" l[:2] = [10, 15] print(l)

[1, 2, 'WOHO', 'hello', ['test', 10], 'world', True]

[10, 15, 'WOHO', 'hello', ['test', 10], 'world', True]

Prod1gal commented 11 months ago

l = [1, 2, 3, "hello", ["test", 10], "world", True]

l.append("new") # метод добавляет элемент в конец списка print(l)

[1, 2, 3, 'hello', ['test', 10], 'world', True, 'new']

l.extend([9, 8, 7]) # метод добавляет все элементы нового списка в конец старого списка print(l)

l2 = ["hi", 19] # сложение списков l += l2 print(l)

[1, 2, 3, 'hello', ['test', 10], 'world', True, 'new', 9, 8, 7, 'hi', 19]

l.insert(1, "1000") # метод добавляет элемент в выбранный индекс (1 - это индекс, 1000 - это элемент на замену. Все индексы также сдвигаются print(l)

[1, '1000', 2, 3, 'hello', ['test', 10], 'world', True, 'new', 9, 8, 7, 'hi', 19]

l.remove("hello") # метод удаляет выбранный элемент print(l)

test_list = l.pop() # метод удаляет последний элемент (или по индексу в скобках) и переносит его из списка в переменную print(test_list) print(l)

19

[1, '1000', 2, 3, ['test', 10], 'world', True, 'new', 9, 8, 7, 'hi']

test_list = l.pop(1) print(test_list) print(l)

1000

[1, 2, 3, ['test', 10], 'world', True, 'new', 9, 8, 7, 'hi']

a = l.index(9) # метод возвращает индекс выбранного элемента print(a)

7

l = [1, 2, 3, "hello", ["test", 10], 1, "world", True, 1]

b = l.count(1) # метод возвращает количество элементов с выбранным значением print(b)

4 потому что True тоже считается:)

Prod1gal commented 11 months ago

""" КОРТЕЖИ """

t1 = 1, 2, 3 # упаковка кортежа t1 = tuple((1, 2, 3)) t1 = () # пустой кортеж t1 = (1,)

print(type(t1))

t2 = tuple("hell0") print(t2)

('h', 'e', 'l', 'l', '0')

t1 = tuple("hello") t2 = tuple("world") t3 = t1 + t2

print(t3)

('h', 'e', 'l', 'l', 'o', 'w', 'o', 'r', 'l', 'd')

t1 = (10, 11, [1, 2, 3], ["hello", 'hi']) t1[2][0] = "new" # сработает только в том случае, если мы обратимся к изменяемому элементу неизменяемого кортежа print(t1)

(10, 11, ['new', 2, 3], ['hello', 'hi'])

распаковка кортежа

t1 = (1, 2, 3) x = t1[0] y = t1[1] z = t1[2]

print(x, y, z)

1 2 3

x, y, z = t1 # та же самая операция, что и сверху в три строчки (распаковка кортежа)

трюк как поменять местами значения переменных с помощью кортежа

x = 1 y = 2 print(x, y) x, y = y, x print(x, y)

Prod1gal commented 11 months ago

l = list(range(1, 10)) l2 = list("hello")

print(l)

s = " - ".join(map(str, l)) s2 = " - ".join(l2) print(s)

1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9

print(s2)

h - e - l - l - o

Prod1gal commented 11 months ago

""" МНОЖЕСТВА """

s = {"apple", "orange", "apple", "pear", "orange", "banana"}

print(type(s))

<class 'set'>

print(s)

{'orange', 'apple', 'pear', 'banana'} дубли были удалены

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

{'pear', 'banana', 'orange', 'apple'}

{'apple', 'orange', 'pear', 'banana'}

s2 = set("hello") print(s2)

{'h', 'o', 'l', 'e'}

{'h', 'l', 'e', 'o'}

s3 = {i for i in range(1, 11)} print(s3)

s4 = {3, 10, 13, 4, 5, 7} print(s4)

{3, 4, 5, 7, 10, 13} цифры выстраиваются в последовательность по возрастанию

s5 = {} print(type(s5))

<class 'dict'> --------> будет создаваться словарь, если ставить пустые скобки

s6 = set() print(type(s6))

<class 'set'> --------> чтобы создать пустое множество, нужно ставить set()

nums = [1, 1, 2, 5, 6, 7, 8, 8, 8, 10] nums2 = set(nums) print(nums2)

{1, 2, 5, 6, 7, 8, 10}

a = set("abracadabra") b = set("alacazam") c = a - b # вычитание - убираем все буквы из а, которые есть в b d = a | b # объединение - буквы или а или буквы в b e = a & b # пересечение - буквы и в а, и в b f = a ^ b # множество из элементов - буквы в аб или в b, но не в обоих

print(a, b, sep="\n")

{'a', 'c', 'b', 'd', 'r'}

{'a', 'c', 'l', 'm', 'z'}

print(c)

{'b', 'd', 'r'}

print(d)

{'a', 'c', 'l', 'm', 'b', 'd', 'r', 'z'}

print(e)

{'a', 'c'}

print(f)

{'m', 'l', 'b', 'z', 'r', 'd'}

Prod1gal commented 11 months ago

set.copy() - возвращает копию множества set.add(elem) - добавляет элемент в множество set.remove(elem) - удаляет элемент из множества. KeyError, если такого элемента не существует set.discard(elem) - удаляет элемент, если он находится в множестве set.pop() - возвращает и удаляет первый элемент из множества. Так как множества не упорядочены, нельзя точно сказать, какой элемент будет первым. set.clear() - очистка множества

s = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'} s.clear() print(s) s2 = s.copy()

print(s, id(s)) print(s2, id(s2))

a = frozenset('hello') print(a)

Prod1gal commented 11 months ago

""" СЛОВАРИ """

ключи и значения

product1 = { "Title": "Sony", "Price": 400 }

print(product1)

product2 = dict(title="Sony", price=400) print(product2)

users = [ ["bob@gmail.com", "Bob"], ["GraceKelly@gmail.com", "Grace"], ["Jolie@mail.ru", "Angie"] ]

print(users)

[['bob@gmail.com', 'Bob'], ['GraceKelly@gmail.com', 'Grace'], ['Jolie@mail.ru', 'Angie']]

d_users = dict(users) print(d_users)

{'bob@gmail.com': 'Bob', 'GraceKelly@gmail.com': 'Grace', 'Jolie@mail.ru': 'Angie'}

product3 = dict.fromkeys(["price_1", "price_2", "price_3"], 500000) print(product3)

{'price_1': 500000, 'price_2': 500000, 'price_3': 500000}

nums = {i: i + 1 for i in range(1, 10)} print(nums)

{1: 2, 2: 3, 3: 4, 4: 5, 5: 6, 6: 7, 7: 8, 8: 9, 9: 10}

print(nums["1"]) # ERROR

print(nums[1]) # GOOD

product4 = { "Title": "Iphone", "Price": 100000 }

print(product4["Title"])

Iphone ---------> обращаемся к словарю и получаем значение по ключу

for key in product4: print(product4[key])

# Iphone
# # 100000

# print(f"{key}: {product4[key]}")

# Title: Iphone
# Price: 100000

print(product4.items())

for key, value in product4.items(): print(key, value)

# Title Iphone
# Price 100000
Prod1gal commented 11 months ago

""" МЕТОДЫ СЛОВАРЯ """

dict.clear() - очищает словарь

dict.copy() - возвращает копию словаря

dict.get(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None)

dict.items() - возвращает пары ( )

dict.keys() - возвращает ключи в словаре

dict.pop(key[, default]) - удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение)

dict.popitem() - удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены

dict.setdefault(key[, default]) - возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ с значением default (по умолчанию None)

dict.update([other]) - обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!)

dict.values() - возвращает значения в словаре

product1 = {'Title': "Sony", 'Price': 400} print(product1.items())

dict_items([('Title', 'Sony'), ('Price', 400)]) ------> ключ, значение

print(product1.keys())

dict_keys(['Title', 'Price']) --------> только ключи

print(product1.pop('Title'))

Sony

print(product1)

{'Price': 400}

product1.update({'Test': "vale"}) print(product1)

{'Price': 400, 'Test': 'vale'}

print(product1.values())

dict_values([400, 'vale'])