Python | Основы

Все, что дано в материалах к этому разделу также есть в открытом доступе к моему 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))
 
# Перевести список в кортеж
addressList = ['133', '855', '299', '346', '788', '847', '112', '907', '344', '456']
addressTuple = tuple(addressList)
print(addressTuple)
 
# Сортировка кортежа
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)
 
# Сгенерировать словарь с помощью dict comprehension
digitDict = {x: x*5 for x in range (1,6)}
digitDict
 
# Сгенерировать словарь с помощью dict comprehension на основе массивов (fruit & price)
# Объединение списков с помощью метода zip()
fruits = ['banana', 'pear', 'apple']
prices = [300, 1000, 400]
 
fruit2price = {fruit: price for fruit, price in zip(fruits, prices)}
fruit2price
 
#Работа с элементами словаря
print (skazkaDict['жили-были']) #получение значения по ключу
 
skazkaDict['сказка'] = 7 #добавление ключа=значение
skazkaDict['сказка'] = 6 #изменение значения ключа
print (skazkaDict)
 
del skazkaDict['сказка'] #удаление значения по ключу 1
print (skazkaDict)
 
print(skazkaDict.values()) #отобразить все значения словаря
print(skazkaDict.keys()) #отобразить все ключи словаря
print(skazkaDict.items()) #отобразить все пары ключ-значение словаря
 
#сумма значений словаря
total = sum(skazkaDict.values())
total
 
#Перебор всех пар ключ-значение словаря
for k,v in skazkaDict.items(): #k — ключ, v — значение
percent = (v/total)*100
print(f'{k}: {round(percent,2)}')
 
# Заполнить словарь, используя данные кортежа
addressTuple = ('133', '855', '299', '346', '788', '847', '112', '907', '344', '456')
addressDict = {} #{'addrees1': 133, 'addrees2': 855, ...}
i = 1
for elem in addressTuple:
 addressDict['address' + str(i)] = elem
 i += 1
print (addressDict)
 
# Сортировка словаря по ключу
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
 
# Метод get() для dict - поиск значения в словаре по указанному ключу
dictSample = {1: 'молоко', 2: 'сливки', 3: 'творог'}
print(f'Ищем значение по ключу 2: {dictSample.get(2, 'не найдено')}')
print(f'Ищем значение по ключу 4: {dictSample.get(4, 'не найдено')}')
 
# Запрос в словарь по ключу в цикле
bananaPrice = {'banana': 300, 'apple': 400, 'pear': 1000}
bananaChosen = input("На какой banana показать price?")
exists = False
for fruit in bananaPrice:
if bananaChosen in fruit:
     exists = True
     break
if exists:
 print (f'price этого banana {fruit}: {bananaPrice[fruit]}')
else:
 print (f'Такого banana {bananaChosen} у нас нет')
 
#То же самое без цикла, с помощью метода get()
print (f'price этого banana {fruit}: {bananaPrice[fruit]}')
output = bananaPrice.get(bananaChosen, 'Такого товара нет в списке')
 
# Словарь со значениями в виде математических операций
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'}')
 
# Создание множества
setSample1 = set() #пустое множество
setSample2 = set([1,2,3]) #множество из списка
setSample3 = set('строка') #множество из строки
setSample4 = set((1,2,1)) #множество из кортежа
setSample5 = {1,2,3,10} #создание множества со значениями
print (f'Пустое: {setSample1}, Из списка: {setSample2}, Из строки: {setSample3}, Из кортежа: {setSample4}, Со значениями: {setSample5}')
 
# Функции со множествами
print (len(setSample3))
print (max(setSample5))
print (min(setSample5))
 
# Равенство множеств
print(set([88,89])==set([90,91]))
 
# Добавление элемента в множество
setSample5 = {1,2,3,10}
 
setSample5.add(100)
print (setSample5)
 
# Удаление элемента
setSample5.discard(10) #удаляет элемент со значением 100
print (setSample5)
 
# Проверка наличия элемента в множестве
10 in setSample5
 
#Пересечение множеств
setSample2 = set([1,2,3])
setSample4 = set((1,2,1))
 
setSample2 & setSample4 # или setSample2.intersection(setSample4)
 
#Объединение множеств
setSample2 = set([1,2,3])
setSample4 = set((1,2,1))
 
setSample2 | setSample4 # или setSample2.union(setSample4)
 
#Вычитание множеств
setSample2 = set([1,2,3,4])
setSample4 = set((1,2,1,6,7))
 
# что из setSample2 отсутствует в setSample4
setSample2 - setSample4 # или setSample2.difference(setSample4)
 
#Симметричное вычитание множеств
setSample2 = set([1,2,3,4])
setSample4 = set((1,2,1,6,7))
 
# что из setSample2 отсутствует в setSample4 и что из setSample4 отсутствует в setSample2
setSample2 ^ setSample4 # или setSample2.symmetric_difference(setSample4)
 
# Объединение множеств с помощью метода zip()
setSample2 = set([1,2,3,4])
setSample4 = set([1,2,6,7])
print (zip(setSample2, setSample4)) #вернёт <zip object at 0x7f6875f75f40>
list(zip(setSample2, setSample4)) #вернёт [(1, 1), (2, 2), (3, 6), (4, 7)]
 
# Перевести значения словаря во множество
bananaDict = {'banana': 3, 'apple': 4, 'pear': 1}
bananaSet = set()
for fruit in bananaDict.values():
   bananaSet.add(fruit)
print(bananaSet)
 
# Перевести ключи словаря во множество
bananaDict = {'banana': 3, 'apple': 4, 'pear': 1}
bananaSet = set()
for fruit in bananaDict.keys():
   bananaSet.add(fruit)
print(bananaSet)
 
# Сгенерировать элементы множества с помощью set comprehension
digitSet = set(str(x) for x in range (1,11))
print (f'digitsSet: {digitSet}')
 
bananaDict = {'banana': 3, 'apple': 4, 'pear': 1}
bananaSet = set(str(x) for x in bananaDict.values())
print (f'bananaSet: {bananaSet}')
 
# 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), к которому можно обращаться в других вычислениях
 
# Рекурсивные функции
#Написать функцию вычисления числа в степень
def powerNum(n,power):
if n != 0:
  return power * powerNum(n-1,power)
else:
  return 1
 
powerNum(1,2)
 
# Как это работает:
# powerNum(1,2) вернёт 2, т.к. 2 * powerNum(0,2) = 2 * 1 = 2
# powerNum(2,2) вернёт 4, т.к. 2 * powerNum(1,2) = 4
# powerNum(3,2) вернёт 8, т.к. 2 * powerNum(2,2) = 8
 
convertAndPrint (16, 'USD', convertUsd2Cny, 'CNY')
 
# Работа с файлами
# Положить файл в переменную
file = open('fileName.fileFormat', encoding='UTF-8')
 
# Положить содержимое файла в переменную
content = file.read()
 
# Вывести содержимое файла на экран
print(content)
 
# Закрыть файл
file.close()
 
# Проверить закрыт ли файл
file.closed
 
# Работа файлами через With (файл открывается только для блока кода и после его исполнения закрывается)
with open('fileName.fileFormat', encoding='UTF-8') as file:
   content = file.read()
 
with open('fileName.fileFormat') as file:
   content = (file.readlines()) #возвращает список строк файла
  content = (file.readline()) #считывает одну из строк



© 2006-2026 | Анна Петросян | pashelp@yandex.ru