|
Все, что дано в материалах к этому разделу также есть в открытом доступе к моему Google Colab блокноту (см. Google Colab) – там можно запускать ячейки с кодом и видеть как это работает!
См. также
The Python Standard Library
Built-in Functions
# -*- coding: utf-8 -*-
"""База от pashelp.ipynb
Automatically generated by Colab.
Original file is located at
https://colab.research.google.com/drive/1s_4D7x-JUbB7os798t_fXm38G-0UGEG5
# ctrl + / (бэкслеш) -- закоментировать /раскомментировать код
#Проверка на зарезервированные слова python
help ('keywords')
# Печать на экран
print ('Текст')
print (3+2)
print ('Текст', str(3+2)) # или
print ('Текст ' + str(3+2))
print(f'Форматированный текст {3+2}')
'Вывод на экран без команды print (последней строчкой кода)'
# Преобразование в типы данных
number = 5
print (int(number), type(int(number)))
print (float(number), type(float(number))) #по умолчанию числа с плавающей запятой в питоне с десятичным разделителем "."
print (str(number), type(str(number)))
# isinstance -- проверка типа переменной
callNumber = 23457800
print ("callNumber имеет тип int?", isinstance (callNumber, int))
# Округлить число с помощью round / Округление
print (round(1.19)) #1
print (round(1.5)) #2
print (round(1.2345678345, 3)) #1.235
# Округлить с помощью форматированного текста
print(f'округлённое число 1.2345678345 до трёх знаков после запятой = {1.2345678345:.3f}')
# Деление без остатка //
print (7 / 2)
print (7 // 2)
# Остаток от целого
print (4 % 2 == 0)
print (5 % 2 == 0)
# абсолютное число
print(abs(-7))
# lower() - привести текст к нижнему регистру
print('ТЕКСТ'.lower())
# upper() - привести текст к верхнему регистру
print('текст'.upper())
# split() - метод разделения подстроки на элементы указанным разделителем
fio = 'Имя Отчество Фамилия'
print (fio.split()) #внутри скобок указывается разделитель, например '!', но если разделителем является пробел, то ничего не указывать
trafficLight = 'Красный!Жёлтый!Зелёный'
print (trafficLight.split('!'))
# replace() - заменяет все вхождения строки, указанной первым аргументом, на строку, указанную вторым аргументом
trafficLight = 'Красный!Жёлтый!Зелёный'
# Замена восклицательного знака на пробел
print(trafficLight.replace('!',' '))
# Замена восклицательного знака на запятую с пробелом
print(trafficLight.replace('!',', '))
# Замена восклицательного знака на вопросительный знак
print(trafficLight.replace('!','?'))
# Замена восклицательного знака на пустоту
print(trafficLight.replace('!',''))
# find() - метод поиска подстроки (возращает номер позиции в строке, если подстрока найдена или -1, если на найдена)
snack = 'компот, плюшка'
print(f'Номер позиции слова плюшка в переменной snack: {snack.find('плюшка')}') #8
print(f'Номер позиции слова компот в переменной snack: {snack.find('компот')}') #0
print(f'Номер позиции слова рогалик в переменной snack: {snack.find('рогалик')}') #-1
# count() - метод подсчёта значений в списке
numList = [1,2,2,2,5,6,7,8,9]
print (numList.count(2)) #3
letterList = ['a','b','b','c','d']
print (letterList.count('b')) #2
# Элементы списка
fio = ['Имя', 'Отчество', 'Фамилия']
print (fio[0]) #первый элемент
print (fio[-1]) #последний элемент
# Слайсинг строки по найденному индексу
print ('компот, плюшка'[0:6]) #напечатать от начала строки до 6-го символа включительно
print ('плюшка'[2:]) #напечатать со второго символа до конца строки
print ('плюшка'[0]) #напечатать первый символ
# Сохранить ввод в переменную (всегда сохраняется текст)
anything = input('Введите что-нибудь с клавиатуры, всё равно что: ')
# try except - обработать ошибку
anything = input('Введите что-нибудь с клавиатуры, всё равно что: ')
try:
if int(anything) % 2 == 0: #если введено число, то оно без проблем преобразуется в int
print ('И это чётное число')
else:
print ('И это нечётное число')
except ValueError: #если введено не число, то преобразование в int слетит, в таком случае выполняется except
print ('И это текст')
# type - вывод типа данных
anything = 456789
print (type(anything))
# Длина
anything = '1823634513975198'
print (len(anything))
# if
age = input ('Сколько лет ребёнку? ')
try:
age = int(age)
if age < 0:
print ('Ошибка')
else:
if age >= 18:
print ('Уже вырос')
else:
print ('Ещё растёт')
except ValueError:
print ('Ошибка ввода, введите число')
# if and
age = input ('Сколько лет ребёнку? ')
try:
age = int(age)
if age >= 18 and age < 61:
print ('Уже вырос, но ещё не пенсионер')
else:
if age < 18:
print ('Ещё растёт')
else:
print ('Уже пенсионер!')
except ValueError:
print ('Ошибка ввода, введите число')
# elif
passCount = input('Укажите число пассажиров ')
try:
passCount = int(passCount)
if passCount < 0:
print ('Ошибка, так не бывает')
elif passCount == 0:
print ('Никто не летит')
elif passCount < 2:
print ('Вам к этому пассажиру')
elif passCount < 3:
print ('Вам на доступное кресло для двух пассажиров')
elif passCount <= 20:
print ('Вам распределиться по свободным креслам')
else:
print ('Вам разбиться на группы и пройти опрос заново')
except ValueError:
print ('Ошибка ввода, укажите число пассажиров')
# elif
temperature = input ('Вы не скажете, сколько сейчас градусов ниже нуля? ')
try:
if temperature == 'Ты что?!':
print ('Я тренируюсь')
else:
temperature = int(temperature)
if temperature < 0:
print ('Ага, сейчас и правда ниже нуля')
elif temperature == 0:
print ('Ага, сейчас 0 градусов.')
else:
print ('Ага, сейчас выше нуля')
except ValueError:
print ('Ну и ладно')
# if not()
doings = input ('Как дела? ')
if not(doings):
print ('Главное не плохо!')
else:
print (f'Дела {doings}')
# if and not
doings = input ('Как дела? ').lower()
weather = input ('А какая погода? ')
if doings == 'хорошо' and not weather.lower() == 'дождь':
print ('Здорово, что', doings, 'и без дождя')
else:
print ('ОК')
# [] - list /список
# Создание списка
priceList = ['230', '440', '550', '120', '890']
priceList
# Элементы списка
priceList = ['230', '440', '550', '120', '890']
print (priceList[0]) #первый элемент
print (priceList[-1]) #последний элемент
# Работа со списком в цикле
priceList = ['230', '440', '550', '120', '890']
for price in priceList:
print (price)
# Заполнить список данными другого списка
# Заполнить lowPrice данными priceList
priceList = ['230', '440', '550', '120', '890']
lowCoeff = 85
# Просто добавить
lowPrice = [] + priceList
print(f'Коэффициент ещё не применён: {lowPrice}')
# Поэлементно
lowPrice = []
for price in priceList:
lowPrice.append(int(price) * lowCoeff / 100)
print(f'Коэффициент применён: {lowPrice}')
# Генератором list comprehension
lowPrice = [int(price) * lowCoeff / 100 for price in priceList]
print(f'Коэффициент применён: {lowPrice}')
# Заполнить список данными другого списка с условием
currentPrice = ['230', '440']
priceList = ['230', '440', '550', '120', '890']
# Дополнить currentPrice элементами priceList, которых ещё нет в currentPrice
for price in priceList:
if not price in currentPrice:
currentPrice.append(price)
print (f'Текущий дополненный прайслист: {currentPrice}')
# Добавить список в конец другого списка методом extend
list1 = [1, 2, 3, 4, 5]
print(f'Список 1: {list1}')
list2 = [6, 7, 8, 9, 10]
print(f'Список 2: {list2}')
# Расширяем список 1 значениями списка 2
list1.extend(list2)
print(f'Список 1 после extend: {list1}')
#Перевести текст в список слов
skazkaText = 'Жили-были дед да баба. И была у них курочка Ряба.'
skazkaList = skazkaText.lower().replace('.','').split(' ')
print (skazkaList) #получившийся список: ['жили-были', 'дед', 'да', 'баба', 'и', 'была', 'у', 'них', 'курочка', 'ряба']
print (skazkaList[0]) #первое слово из получившегося списка: жили-были
# Сортировка списка
skazkaList = ['жили-были', 'дед', 'да', 'баба', 'и', 'была', 'у', 'них', 'курочка', 'ряба']
print (sorted (skazkaList))
print (sorted(skazkaList, reverse=True))
# Сортировка кортежа
skazkaList = ['жили-были', 'дед', 'да', 'баба', 'и', 'была', 'у', 'них', 'курочка', 'ряба']
skazkaTuple = tuple(skazkaList)
print (sorted(skazkaTuple))
print (sorted(skazkaTuple, reverse=True))
# {} - dict /словарь /массив /мапа (map)
# Создать словарь, наполнить данными из списка skazkaList как {'слово': количество_букв_в_этом_слове}
skazkaList = ['жили-были', 'дед', 'да', 'баба', 'и', 'была', 'у', 'них', 'курочка', 'ряба']
skazkaDict = {}
for word in skazkaList:
skazkaDict[word] = len(word)
print (skazkaDict)
# Сортировка словаря по ключу
bananaDict = {'banana': 3, 'apple': 4, 'pear': 1}
bananaTuple = bananaDict.items() #перевести в список таплов
def sortKeyFunc(t):
return t[1]
print (sorted(bananaTuple, key=sortKeyFunc, reverse=True))
print (sorted(bananaTuple, key=sortKeyFunc, reverse=False))
# Сортировка словаря по значению
bananaDict = {'banana': 3, 'apple': 4, 'pear': 1}
bananaSorted = sorted(bananaDict, key=bananaDict.get)
bananaSorted
# Словарь со значениями в виде математических операций
k = {
'RUB-USD': 1/68.99, #1USD = 68.99RUB
'USD-CNY': 1*6.54 #1USD = 6.54CNY
}
#под ключом RUB-USD хранится значение 1/68.99
#под ключом USD-CNY хранится значение 1*6.54
#Конвертация RUB в USD
rubAmount = 3600
outAmount = round(rubAmount * k[f"{'RUB'}-{'USD'}"],2) #выполнено: 3600 * 1/68.99
print (f'На {rubAmount} {'RUB'} можно купить {outAmount} {'USD'}')
#конвертация USD в CNY
cnyAmount = 7
outAmount = round(cnyAmount * k[f"{'USD'}-{'CNY'}"],2) #выполнено: 7 * 1*6.54
print (f'На {cnyAmount} {'USD'} можно купить {outAmount} {'CNY'}')
# get() - поиск значения в словаре по указанному ключу
dictSample = {1: 'молоко', 2: 'сливки', 3: 'творог'}
print(f'Ищем значение по ключу 2: {dictSample.get(2, 'не найдено')}')
print(f'Ищем значение по ключу 4: {dictSample.get(4, 'не найдено')}')
# def - функции
# Значение переменной по умолчанию в определении функции
def funcCoeff (inputDigit, coeff=123): #123 значение переменной по умолчанию
return inputDigit + coeff
def funcNone (whatToReturn=None): #None обработает случай, когда ничего не передано
return whatToReturn
print (funcCoeff (111)) #напечатает 234, т.к. применится коэффициент 123 по умолчанию
print (funcCoeff (111, 333)) #напечатает 444, т.к. применится заданный коэффициент
print (funcNone ()) #напечатает None
print (funcNone (111)) #напечатает 111
# Функция как параметр другой функции
# Что такое return и print функции
# Функция может возвращать значение (return), к которому можно обращаться, а может печатать (print) и к этому нельзя обратиться
# Например:
# Есть функция, которая
# 1. Принимает в качестве параметра объект - другую функцию
# 2. Возвращает и return (к которму можно обратиться) и print
usd2rub = 75.05
usd2cny = 5.95
def convertRub2Usd (rubAmount): #конвертирует рубли в доллары
return rubAmount / usd2rub
def convertUsd2Cny (usdAmount): #конвертирует доллары в юани
return usdAmount * usd2cny
def convertAndPrint (inAmount, inCurrency, f, outCurrency): #f - функция конвертации
outAmount = f(inAmount)
print (f"было: {inAmount}{inCurrency}, стало: {outAmount}{outCurrency}")
return outAmount
convertAndPrint (4800, 'RUB', convertRub2Usd, 'USD') #вернёт подробности (print) и значение (return), к которому можно обращаться в других вычислениях
convertAndPrint (16, 'USD', convertUsd2Cny, 'CNY')
|