0. Установка
https://www.python.org/ https://www.python.org/ftp/python/3.8.2/python-3.8.2.exe https://www.youtube.com/watch?v=gJfYu1R8TL8&list=PLg5SS_4L6LYtHCActBzbuGVYlWpLYqXC6&index=1 - video по python от avd-it При установки на windows обязательно установить галку add python PATH, для избежания проблем с запуском скриптов на python Для проверки работы python откройте cmd и введите python. https://github.com/b14esh/python
1. Начало работы c python
Стандартная программа для языков программирования Hello World
>>> print("hello world")
hello world
Калькулятор
>>> 3+5
8
>>> 3-2
1
>>> 3*50
150
>>> 44/2
22.0
>>> 200*76754
15350800
>>> (2+2)*4-100
-84
exit()
2. Запуск скриптов python
python name_script.py
3. PyCharm — IDE(среда разработки) для python
https://www.jetbrains.com/ru-ru/pycharm/download/#section=windows
4. Переменные
a = "Hello"
b = 25
print(a)
print(b)
f_name = "Vasiliy"
l_name = "Pupkin"
age = 25
full_name = (f_name + " " + l_name)
print(f_name + " " + l_name)
print(full_name + " " + str(age))
f_name = "Vas"
F_NAME = "VAS"
print(f_name + " \= " + F_NAME)
num1 = 1111111111111111
num2 = 2222222222222222
num3 = num1 + num2
print(num1+num2)
print("num3" + " == " + str(num3))
5. Стринг \ string \ строки
mystring = "BLA BLA BLA"
name = "mr vAsya Pupkin"
print(name.title())
print(name.upper())
print(name.lower())
print("----------------------------------------------")
print("Privet stroka nomer 1 \nProivet stroka nomer 2 \nprivet stroka nomer 3 ")
print("\n")
print("messages:\n\tMessage1\n\tmessage2\n\tmessgag2\nEnd")
print("lower name:" + name.lower())
print("----------------------------------------------")
a = " sd ... dadya Vasya .. dsd "
b = "... dadya Vasya ...."
print(a)
print(a.rstrip())
print(a.lstrip())
print(a.strip())
print("----------------------------------------------")
print(b.strip("."))
print("----------------------------------------------")
a = "... dadya Vasya ...."
print(a)
a = a.strip(".")
a = a.strip()
print(a.title())
6. Числа \ Номера \ numbers
num1 = 30 num2 = 45 num3 = num1 + 10 print(num1 + num2) print(num3) x1 = 55555555555555555555555555555555555666666666666 x2 = 969687685764454545454446546446546546546546565465 print(x1+x2) print(x1*x2+10) print(num2/3) x1 = 6 x2 = 4 print(x1 / x2) print(10*2/5+100) print(10+2/(5*100))
7. Циклы \ loop
print("******")
print("******")
print("******")
print("******")
print("******")
print("******")
print("------------------------------------")
for x in range(0, 100):
print("******")
print("x1x1x1")
print("------------------------------------")
for x in range(0, 100 + 1):
print(x)
print("------------------------------------")
for x in range(10, 100, 2):
print(x)
print("------------------------------------")
for x in range(0, 100, 10):
print(x)
print("------------------------------------")
for x in range(-100, 10, 10):
print(x)
print("------------------------------------")
for x in range(-100, 100, 20):
print("Number x =" + str(x))
print("------------------------------------")
for x in range(-50, 100, 10):
print("Number x =" + str(x))
if x == 50:
break
print("------------------------------------")
for x in range(0, 10, 2):
print("Echo X=" + str(x))
print("------------------------------------")
for x in range(100, 200, 50):
print("echo number x=" + str(x))
if x == 100:
break
print("------------------------------------")
for x in range(-10, 10, 3):
print("echo x=" + str(x))
print("------------------------------------")
x = 9
while True:
print(x)
x = x + 1
if x == 10:
break
print("------------------------------------")
y = 0
while True:
print("echo y=" + str(y))
y = y + 1
if y == 100:
break
print("------------------------------------")
x = 0
while True:
print("Echo x = " + str(x))
x = x + 1
if x == 2:
break
print("------------------------------------")
for x in range (5,100,5):
print("Echo x=" + str(x))
if x == 15:
break
7.1 Циклы \ loop — основные for и while
for x in range (0,10,1):
print("Echo x=" + str(x))
x = 0
while True:
print("Echo x = " + str(x))
x = x + 1
if x == 10:
break
8. Массивы \ list \ часть 1
cities = ['New York', 'Mosckow', 'new dehli', 'Simferopol', 'Toronto'] - массив
print(cities) - напечатать массив
print(len(cities))
print(cities[0])
print(cities[4])
print(cities[-1])
print(cities[-2])
print(cities[2].title()) - напечатать массив, заглавная буква
print(cities[2].upper()) - напечатать массив, все буквы большие
cities[2] = 'Tula' - изменить третье значение в массиве на Tula
print(cities)
cities.append('Kursk') - добавить в массив в конец
print(cities)
cities.append('Yalta') - добавить в массив в конец
print(cities)
cities.insert(0, 'Zorcia') - вставить в начало массива
print(cities)
cities.insert(2, 'Feadosya') - вставить в массив
print(cities)
del cities[-1] - удалить последнее значение из массива
print(cities)
del cities[-2] - удалить последнее значение из массива
print(cities)
cities.remove('Tula') - удалить из массива Tula
print(cities)
deleted_city = cities.pop() - удалить последнее значение из массива
print("Delieted city is: " + deleted_city)
print(cities)
cities.sort() - от сортировать массив
print(cities)
cities.sort(reverse=True) - от сортировать массив наоборот
print(cities)
cities.reverse() - от сортировать массив наоборот
print(cities)
9. Массивы \ list \ часть 2
# 0 1 2 3 4
cars = ['bmw', 'vw', 'seat', 'skoda', 'lada' ]
for x in cars:
print(x.upper())
for x in range(1,6):
print(x)
my_number_list = list(range(0, 10))
print(my_number_list)
for x in my_number_list:
x = x * 2
print(x)
my_number_list.sort(reverse=True)
print(my_number_list)
print(max(my_number_list))
print("Max number is: " + str(max(my_number_list)))
print("Min number is: " + str(min(my_number_list)))
print("Sum of lis: " + str(sum(my_number_list)))
# 0 1 2 3 4
cars = ['bmw', 'vw', 'seat', 'skoda', 'lada' ]
mycars = cars[1:4]
print(mycars)
mycars = cars[:4]
print(mycars)
mycars = cars[-3:]
print(mycars)
mycars = cars[-3:-1]
print(mycars)
# 0 1 2 3 4
cars = ['bmw', 'vw', 'seat', 'skoda', 'lada' ]
# mycars = cars - не правильно, соединение...
mycars = cars[:] # правильное - копирование массива
10. Условия, if, elif, else
print("---------------------------------------")
x = 25
if x == 25:
print("YES you right")
else:
print("No you are wrong")
print("---------------------------------------")
age = 20
if (age <= 4):
print(("You are baby, you age: ") + str(age))
elif (age >4) and (age < 12):
print("You are kid, You age: " + str(age))
elif (age >= 12) and (age < 19):
print("You age teenager, you age: " + str(age))
else:
print("You are old!")
print("---------------------------------------")
all_cars = ['chrusler', 'dacia', 'bmw', 'KIA', 'vw', 'seat', 'skoda', 'lada', 'audi', 'ford', 'Chevrolett']
german_cars = ['bmw', 'vw', 'audi']
if 'lada' in all_cars:
print("YES LADA is in the list")
else:
print("No in list")
print("---------------------------------------")
all_cars = ['chrusler', 'dacia', 'bmw', 'KIA', 'vw', 'seat', 'skoda', 'lada', 'audi', 'ford', 'Chevrolett']
german_cars = ['bmw', 'vw', 'audi']
for xxxx in all_cars:
if xxxx in german_cars:
print(xxxx + "is german cars")
#else:
# print(xxxx + "is not German cars")
print("---------------------------------------")
11. Работа со словарями часть 1
# str используется только для цифр
# (----item------)
# (key) (value)
enemy = {
'loc_x': 70,
'loc_y': 50,
'color': 'green',
'health': 100,
'name': 'Mudillo',
}
print(enemy)
print("Location x = " + str(enemy['loc_x']))
print("Location Y= " + str(enemy['loc_y']))
print("His name is: " + enemy['name'])
enemy['rank'] = 'Admiral'
print(enemy)
del enemy['rank']
print(enemy)
enemy['loc_x'] = enemy['loc_x'] + 40
enemy['health'] = enemy['health'] - 30
if enemy['health'] < 80:
enemy['color'] = 'yellow'
print(enemy) # вывести содержимое словаря
print(enemy.keys()) # вывести ключи
print(enemy.values()) # вывести значения ключей
12. Работа со словарями часть 2
# (----item------)
# (key) (value)
enemy = {
'loc_x': 70,
'loc_y': 50,
'color': 'green',
'health': 100,
'name': 'Mudillo',
'awards': ['nagrada1', 'nagrada2'],
'image': ['image1.jpg','image2.jpg','image3.jpg'],
}
print(enemy)
print(enemy['loc_x'])
pp = "-----------------------------------------------"
#массивы
all_enemies = []
#all_enemies.append(enemy)
#all_enemies.append(enemy)
#all_enemies.append(enemy)
#print(all_enemies)
for x in range(0,10):
# all_enemies.append(enemy) ошибка выполняется клонирование. и если в дольнейшем использовать это то будут проблемы
all_enemies.append(enemy.copy())
print(all_enemies)
print(pp)
for x2 in all_enemies:
print(x2)
print(pp)
all_enemies[5]['health'] = 30
all_enemies[1]['name'] = 'Vasya'
all_enemies[3]['name'] = 'Petre'
all_enemies[6]['name'] = 'Ot'
all_enemies[8]['name'] = 'Kozel'
#all_enemies[2]['loc_x'] = all_enemies[2]['loc_x'] + 10
all_enemies[2]['loc_x'] += 10
for x2 in all_enemies:
print(x2)
print(pp)
print(all_enemies[5])
print(pp)
13. Ввод данных пользователя
#name = input("Please enter your name: ")
#print("Privet " + name)
#print(f" Привет {name} !")
#!!! input всегда читает строки. НЕ ЦИФРЫ!!!!
pp = "-----------------------------------------------------------"
print(pp)
#num1 = input("Enter X: ")
#num2 = input("Enter Y: ")
######summa = num1 + num2
######Будет ошибка. Так как input читает и подстовляет строки.
# требуется выполнить int (преоброзование строки в число)
#summa = int(num1) + int(num2)
#print(summa)
print(pp)
message = ""
#while message != 'secret':
# message = input("Enter Password: ")
# print(message + "Password Not Correct")
print(pp)
#while True:
# message = input("Enter Password: ")
# if message == 'secret' : break
# print(message + " <<<< Password Not Correct")
print(pp)
mylist = []
msg = ""
while msg != 'stop'.upper():
msg = input("Enter new item, and STOP to finish: ")
mylist.append(msg)
print(mylist)
14. Функции 1
pp = "--------------------------------------------"
#def napechat_privetstvie():
def napechat_privetstvie(name):
"""Print Privetstvie"""
#print("Congratuletion, vish all the best")
print("Congratuletion " + name + ", vish all the best!")
#print("Hello Hello Hello Hello Hello Hello Hello Hello !!!")
#def aaaa():
# print("AAAA")
#-------------------------------------------------
print(pp)
#napechat_privetstvie()
#napechat_privetstvie()
#aaaa()
print(pp)
napechat_privetstvie("Denis")
napechat_privetstvie("Vasiii")
napechat_privetstvie("Purty")
print(pp)
def summa(x,y):
print(x+y)
summa(10, 20)
print(pp)
def summa1(x , y):
s = x + y
return s
x = summa1(33, 22)
print(x)
print(pp)
def summa1(x , y):
return x + y
x = summa1(77, 22)
print(x)
print(pp)
# фактор
#2! = 1 * 2
#3! = 1 * 2 * 3
#4! = 1 * 2 * 3 * 4
def factorial(x):
"""calculate factorial namber x """
otvet = 1
for i in range(1, x + 1):
otvet = otvet * i
return otvet
print(factorial(1))
print(factorial(5))
print(pp)
for i in range(1,10):
#print(str(i) + "!\t = " + str(factorial(i)))
print(f"{i} + !\t = {factorial(i)}")
print(pp)
15. Функции 2
pp = "________________________________________________________________________"
def create_record(name, telephon, address):
"""Create record"""
record = {
'name' : name,
'phone': telephon,
'address': address,
}
return record
user1 = create_record("Vasya", "+73420342305820358","Tunis")
user2 = create_record("Petia", "+324235252626", "sadsad")
print(user1)
print(user2)
print(pp)
# * перед persons не определенное количество
def give_award(medal, *persons):
"""Give medal persons"""
for person in persons:
#print("Tovarish " + person.title() + "nagrojdaetsa" + medal)
print(f"Tovarish {person.title()} nagrojdaetsa {medal}")
give_award("Za berlin", "Vasia", "Petya")
give_award("Za london", "Valentin", "Petya", "Alexander")
print(pp)
16. Использование модулей
# Все функции во втором файле mod16.py
###import mod16
#START----------- это переехало в файл mod16.py
#def aaa():
# print("AAAA")
#def bbb():
# print("BBBB")
#def ccc():
# print("CCCC")
#def ddd():
# print("DDDD")
#def pp():
# print("_______________________________________________")
# END ---------- это переехало в файл mod16.py
# ---- MAIN так мы вызывали когда модули жили тут
#aaa()
#bbb()
#ccc()
#ddd()
#pp()
#!!! чет с ходу нехера не заработало пошол разбиратся почему .......
#import sys
#print(sys.path) # хотелось увидеть окружения env
#import pkgutil # а этим модулем хотелось увидеть все модули каторые загрузились
#search_path = ['.'] # Используйте None, чтобы увидеть все модули, импортируемые из sys.path
#all_modules = [x[1] for x in pkgutil.iter_modules(path=search_path)]
#print(all_modules) # Увидел что моудль mdd16 подрубается ...... но всеравно нехера не работает.....
## почитали почитали.....
# вызывается следуещим образом имя_модуля.имя_функции ......... :)
#---------MAIN
###mod16.aaa()
###mod16.bbb()
###mod16.ccc()
###mod16.ddd()
###mod16.pp()
#что бы не писать mod16.aaa() делается так
from mod16 import *
# можно вызвать что то конретное например aaa
#from mod16 import aaa
aaa()
bbb()
ccc()
ddd()
pp()
17 Классы 1
from hero import Hero
### Утащили все файл hero.py
#class Hero():
# """ Class to create Hero for our Game"""
# def __init__(self, name, level, race):
# """"Initiate our hero"""
# self.name = name
# self.level = level
# self.race = race
# self.health = 100
# def show_hero(self):
# """Print all parameters of this hero"""
# #discription = (self.name + ", Level is: " + str(self.level) + ", Race is: " + self.race + str(self.health)).title()
# discription = (f" {self.name}, Level is: {self.level}, Race is: {self.race}, Health is: {self.health}").title()
# print(discription)
#
# def level_up(self):
# """ Upgrade Level of Hero"""
# #self.level = self.level +1
# self.level += 1
#
# def move(self):
# """ Start moving Hero"""
# print("Hero " + self.name + " start moving...")
#
# def set_health(self, new_health):
# self.health = new_health
#---------------------------
# ------------- MAIN
myhero1 = Hero("Vurdalak", 5, "Orc")
myhero2 = Hero("Alex", 4, "Humman")
myhero1.show_hero()
myhero2.move()
myhero1.level_up()
myhero1.show_hero()
#myhero1.health = 70 # не стоит так делать. лутше моздать set_health
#myhero1.show_hero()
myhero1.move()
myhero1.set_health(60)
myhero1.show_hero()
18 Классы 2
#---hero.py---
class Hero():
""" Class to create Hero for our Game"""
def __init__(self, name, level, race):
""""Initiate our hero"""
self.name = name
self.level = level
self.race = race
self.health = 100
def show_hero(self):
"""Print all parameters of this hero"""
# discription = (self.name + ", Level is: " + str(self.level) + ", Race is: " + self.race + str(self.health)).title()
discription = (f" {self.name}, Level is: {self.level}, Race is: {self.race}, Health is: {self.health}").title()
print(discription)
def level_up(self):
""" Upgrade Level of Hero"""
# self.level = self.level +1
self.level += 1
def move(self):
""" Start moving Hero"""
print("Hero " + self.name + " start moving...")
def set_health(self, new_health):
self.health = new_health
class SuperHero(Hero):
""" Class create super Hero"""
def __init__(self, name, level, race, magiclevel):
"""Initiate our Super hero"""
super().__init__(name, level, race)
self.magiclevel = magiclevel
#self.magic = 100 # __magic - два андерскора __ перед magic запретит инкапсуляцию.... изменятся будет только из класса
self.__magic = 100
def makemagic(self):
"""Use magic"""
#self.magic -= 10
self.__magic -= 10
def show_hero(self):
discription = (
#f" {self.name}, Level is: {self.level}, Race is: {self.race}, Health is: {self.health}, Magic is: {self.__magic}").title()
f" {self.name}, Level is: {self.level}, Race is: {self.race}, Health is: {self.health}, Magic is: {self.__magic}").title()
print(discription)
#---/hero.py---
#---file18---
from hero import *
from mod16 import pp
# ------------- MAIN
myhero1 = Hero("Vurdalak", 5, "Orc")
myhero2 = Hero("Alex", 4, "Humman")
mysuperhero = SuperHero("Mosia", 10, "elf", 5)
pp()
myhero1.show_hero()
pp()
myhero2.show_hero()
pp()
mysuperhero.show_hero()
pp()
mysuperhero.makemagic()
mysuperhero.makemagic()
mysuperhero.makemagic()
mysuperhero.makemagic()
mysuperhero.show_hero()
mysuperhero.magic = 250
pp()
19. Работа с файлами
#input_file = "../myfile.txt"
# mode - есть несколько режимов открытия файла
# r - read - чтение
# w - write - запись
# a - append - добовлять
# r+ - read pluse - читать и писать
# encoding
# кодировка
# utf8
# ascii
from mod16 import pp
pp()
input_file = "myfile.txt" # файл который будем читать
output_file = "outfile.txt" # файл в который будем записывать
password_to_look_for = "Hyponi111"
#myfile1 = open(input_file, mode='r', encoding='ascii')
myfile1 = open(input_file, mode='r', encoding='utf_8') # Это строка открывает файл на чтение
myfile2 = open(input_file, mode='r', encoding='utf_8') # Это строка открывает файл на чтение
myfile3 = open(input_file, mode='r', encoding='utf_8') # Это строка открывает файл на чтение
myfile4 = open(input_file, mode='r', encoding='utf_8') # Это строка открывает файл на чтение
#myfile5 = open(output_file, mode='w', encoding='utf_8') # Эта строка создает новый файл для записи, если файл закрыт то он будет перезаписан
myfile5 = open(output_file, mode='a', encoding='utf_8') # Эта строка позволит дописывать в файл (mode='a')
#print(myfile1.read()) # прочитаем файл
for line in myfile1: # прочитаем файл построчно, скажим всем привет, выволим на экран, strip обрежит лишнии пробелы
print("Hello " + line.strip())
pp()
for num, line in enumerate(myfile2,1): # прономеруем
print("Line № " + str(num) + " : "+ line.strip())
myfile2.close()
pp()
for num, line in enumerate(myfile3,1): # распечатаем если есть lolol2
if "lolol2" in line:
print("Line № " + str(num) + " : "+ line.strip())
pp()
myfile3.close()
for num, line in enumerate(myfile4,1): # Читается файл и записывается в другой файл искомая строка со словом Hyponi111
if "Hyponi111" in line:
print("Line № " + str(num) + " : "+ line.strip())
myfile5.write(f"Found password: {line}")
myfile4.close()
myfile5.close()
pp()
20. Ошибки
https://docs.python.org/3/tutorial/errors.html
https://docs.python.org/3.2/library/exceptions.html
import sys
#filename = "myfile.txt" #правильно имя
filename = "myfile_error.txt" # ошиблись в имени файла :)
#myfile = open(filename, mode='r', encoding='utf_8')
#print(myfile.read())
while True:
try:
print("Inside Try")
myfile = open(filename, mode='r', encoding='utf_8')
except Exception:
print("Inside EXCEPT")
print(">>>>> Error Found! :( <<<<<<<<<<<<<<")
#sys.exit() #завершит дальнейшие выполнение программы
print(sys.exc_info()[1])
filename = input("Enter correct file name!: ")
else:
print("Inside ELSE")
print(myfile.read())
sys.exit() # если тут не поставить выход то будет бесконечный цыкл :)
finally:
print("Inside FINALLY")
print("=============EOF==========================")
21. JSON
import json
filename = "user_setting.txt" # имя файла в который сохраняем
myfile = open(filename, mode='w', encoding="utf-8") # открываем файл для записи
player1 = {
'PlayerName': "Chuvak",
'Score': 345,
'Awards': ["OR", "New", "ZZ"],
}
player2 = {
'PlayerName': "Osip",
'Score': 345,
'Awards': ["WI", "TX", "Miss"],
}
mayplayer = [] # создали пустой массив
mayplayer.append(player1) # добавляем в массив словарь player1
mayplayer.append(player2) # добавляем в массив словарь player2
# ---------------- SAVE by JSON ---------------------
json.dump(mayplayer, myfile)
myfile.close()
# ----------------- LOAD
myfile = open(filename, mode='r', encoding='utf-8')
json_data = json.load(myfile)
for user in json_data:
print("Player Name is: " + str(user['PlayerName']))
print("Player Score is: " + str(user['Score']))
print("Player Award is: " + str(user['Awards'][0]))
print("Player Award is: " + str(user['Awards'][1]))
print("Player Award is: " + str(user['Awards'][2]))
print("--------------------------------------")
22. Аргументы / Командная строка
# Как послать аргументы нашим скриптам/программе ?
# myprog.py argument argument argument
# argument - передается в виде массива
# ---Пример 0 -------
# код на python
import sys
print("hello")
print(sys.argv)
# выполнение скрипта 22_Argumets_cmd.py в cmd
O:\pycharm4\python>22_Argumets_cmd.py arg1 arf2 arg3 # напечатали это в cmd windows
hello #вывод скрипта
['O:\\pycharm4\\python\\22_Argumets_cmd.py', 'arg1', 'arf2', 'arg3' ]#вывод скрипта
#---------------------
# --- Пример 1 ---
# так как аргументы в программу передаются в виде массива то и обратится к ним можно как к массиву
import sys
print("hello")
print(sys.argv)
print(sys.argv[1:]) # напечатать аргумент от первого и до конца
print(sys.argv[1]) # напечатать второй (так как отсчет идет от нуля)
print(sys.argv[2]) # напечатать третий (так как отсчет идет от нуля)
print(sys.argv[3]) # напечатать четвертый (так как отсчет идет от нуля)
print(sys.argv[-1]) # напечатать последний аргумент
print(sys.argv[-2]) # напечатать предпоследний аргумент
print(sys.argv[0]) # распечатает первый аргумент ( это обычно путь исполняемого скрипта )
#----------------
# --- Пример 2 ---
x = len(sys.argv)
if x > 1:
print("Tital arg enter: " + str(x))
print(sys.argv)
else:
print("Not enter arguments")
#-----------------
# --- Пример 3 ---
x = len(sys.argv)
if x > 1:
if sys.argv[1] == "/?":
print("Help requested")
print("Usage of this program: enter argument for pogram \n\t myprogram.py /? for help \n\t myprogram.py YO print HELLO ")
#print("Total arg enter: " + str(x))
elif sys.argv[1] == "YO":
print("\n\t HELLO YO")
print("Argument enter: " + str(sys.argv[1:]))
#print(sys.argv)
else:
print("Not enter arguments")
#-----------------
# --- Пример 4 ---
# а теперь прикольное выполнение команд OS из python
import os # позволяет использовать встроенные программы текущей ОС
import sys
os.system("dir") # выполнит команду dir из ОС Windows
# os.system("dir > cmd_dir.txt") # перенаправить вывод команды dir в файл cmd_dir.txt
# os.mkdir("mydir") # создать каталог средствами python и назвать ее mydir
os.system("ping ya.ru > pingyaru.txt") # запустить ping windows пинговать ya.ru и записать результат в файл pingyaru.txt
sys.exit()
#-----------------
23. Регулярные выражения / RegExpression 1
import re
def pp():
"""" xxxx """
print("#-----------------------------------------------")
pp()
mytext = "Vasia aaaaaaaa 1972, Koli - 1972 : Olesy 1981, aaaa@intel.com, " \
"bbbbbb@intel.com, PPP hhhhh, 1982, ccccccccccccccccc@ya.ru, Olesya , " \
"hgjgfjfyj@incte.com, vasya@yandex.net, hello hello, Misha #43 1984" \
"Vladimir 1977, Irina, 2001, annnn@intel.com, eeeeee@yandex.com" \
"oooooo@hotmail.gov, gggggggg@gov.gov, tutututut@giv.hot"
"""
\d = Any Digit 0-9 / Любая цифра
\D = Any non DIGIT / Любой символ но не цифра
\w = Any Alphabet simvol / Любая буква [A-Z a-z]
\W = Any non Alphabet simvol / Любой символ но не буквы
\s = breakespace / пробел
\S = breakespace / не пробел
[0-9][0-9][0-9][0-9] - четыре цифры подряд
[0-9][0-9][0-9] - три цыфры
[0-9]{3} - три цыфры
[0-9]{4} - четыри цыфры
\w{6} - любые слова из шести символов
[A-Z][a-z] - первый символ большой второй маленткий
[A-Z][a-z]+ - первый большой а далее мелких букв сколько угодно
\. - точка
\w+\.\w+ - искать домены
\w+@\w+\.\w+ - искать почтовые адресса
"""
textlookfor = r"yandex" #шаблон
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"\d\d\d" #шаблон
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"[0-9][0-9][0-9]"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"[0-9]{3}"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"\w{6}"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"\w{6}\s"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"[A-Z][a-z]+"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"\w+\.\w+"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"@\w+\.\w+"
allresults = re.findall(textlookfor, mytext)
print(allresults)
pp()
textlookfor = r"\w+@\w+\.\w+"
allresults = re.findall(textlookfor, mytext)
print(allresults)
24. Регулярные выражения / RegExpression 2
import re
input_filename = "dumpfile.txt"
result_filename = "result.txt"
inputfile = open(input_filename, mode='r', encoding='utf_8')
resultfile = open(result_filename, mode='w', encoding='utf_8')
mytext = inputfile.read()
# не моного офтопа https://regex101.com/ - сайт поможет с регулярными выражениями
#lookfor = r"[\w.-]+@[\w.-]+"
#lookfor = r"[\w.-]+@[A-Za-z-]+\.[\w.]+"
lookfor = r"[\w.-]+@(?!intel\.com)[A-Za-z-]+\.[\w.]+" # исключаем запись intel.com (?!intel\.com)
lookfor2 = r"[A-Z][a-z]+\s[A-Z][a-z]+" # ищем Имена
results = re.findall(lookfor, mytext) # что искать, где искать
results2 = re.findall(lookfor2, mytext)
#print(results)
#print(results2)
#for item in results:
# print(item)
#resultfile.write(item) запишет все в кучу
#resultfile.write(item + "\n") # запишет покрасивее красиво
#uniq = [1,2,3,4,5]
#fifa = ['a','b','c','d','e']
#uniq_and_fifa = dict(zip(uniq, fifa))
totalresult = dict(zip(results2, results))
#print(totalresult)
for item in totalresult:
print(item + totalresult[item])
resultfile.write(item + totalresult[item] + "\n")
print(f"Total: {str(len(results))}")
25. PyGame Начало Установка
# Picharm -> settings -> pluse -> search pygame -> install
# windows cmd -> python -m pip install --user pygame
#import pygame.examples.stars # установим игруху из примеров stars
#import pygame.examples.cursors
#pygame.examples.stars.main() # запуск игры
#pygame.examples.cursors.main()
import pygame
pygame.init()
screen = pygame.display.set_mode((640, 480))
while True:
pygame.display.flip()
26. Pygame Управление картинкой
# Двигаем картинку
import pygame
MAX_X = 800
MAX_Y = 600
#MAX_X = 2560
#MAX_Y = 1440
game_over = False
bg_color = (0,0,0) #RGB цвет фона сейчас черный
pygame.init()
screen = pygame.display.set_mode((MAX_X, MAX_Y)) # в окне
#screen = pygame.display.set_mode((MAX_X, MAX_Y)), pygame.FULLSCREEN # на весь экран
pygame.display.set_caption("My first Py game! :)")
# по умолчанию pygame понимает bmp картинки
print(pygame.image.get_extended())
x = 500
y = 100
myimage = pygame.image.load("1.png").convert()
myimage = pygame.transform.scale(myimage, (100, 100)) # изменить размер изображения
# ---------------------- MAIN GAME LOOP
while game_over == False:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
game_over = True
if event.key == pygame.K_LEFT:
x -= 20
if event.key == pygame.K_RIGHT:
x += 20
if event.key == pygame.K_UP:
y -= 20
if event.key == pygame.K_DOWN:
y += 20
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
screen.fill(bg_color) # закрашиваем фон
screen.blit(myimage, (x, y)) # координаты картинки
pygame.display.flip()
27. Pygame move
# Двигаем картинку плавно
import pygame
MAX_X = 800
MAX_Y = 600
IMG_SIZE = 100
game_over = False
bg_color = (0,0,0) #RGB цвет фона сейчас черный
pygame.init()
screen = pygame.display.set_mode((MAX_X, MAX_Y)) # в окне
#screen = pygame.display.set_mode((MAX_X, MAX_Y)), pygame.FULLSCREEN # на весь экран
pygame.display.set_caption("My first Py game! :)")
# по умолчанию pygame понимает bmp картинки
print(pygame.image.get_extended())
x = 500
y = 100
move_right = False
move_left = False
move_up = False
move_down = False
myimage = pygame.image.load("1.png").convert()
myimage = pygame.transform.scale(myimage, (IMG_SIZE, IMG_SIZE)) # изменить размер изображения
# ---------------------- MAIN GAME LOOP
while game_over == False:
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
game_over = True
if event.key == pygame.K_LEFT:
move_left = True
if event.key == pygame.K_RIGHT:
move_right = True
if event.key == pygame.K_UP:
move_up = True
if event.key == pygame.K_DOWN:
move_down = True
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT:
move_left = False
if event.key == pygame.K_RIGHT:
move_right = False
if event.key == pygame.K_UP:
move_up = False
if event.key == pygame.K_DOWN:
move_down = False
if event.type == pygame.MOUSEBUTTONDOWN:
x, y = event.pos
if move_left == True:
x -= 1
if x < 0:
x = 0
if move_right == True:
x += 1
if x > MAX_X - IMG_SIZE:
x = MAX_X - IMG_SIZE
if move_up == True:
y -= 1
if y < 0:
y = 0
if move_down == True:
y += 1
if y > MAX_Y - IMG_SIZE:
y = MAX_Y - IMG_SIZE
screen.fill(bg_color) # закрашиваем фон
screen.blit(myimage, (x, y)) # координаты картинки
pygame.display.flip()
28. Pygame снегопад
import pygame
import random
import sys
import time
MAX_X = 800
MAX_Y = 600
MAX_SNOW = 100
SNOW_SIZE = 64
TIME_SLEEP = 0.010
class Snow():
def __init__(self, x, y):
self.x = x
self.y = y
self.speed = random.randint(1,3)
self.img_number = random.randint(1,3)
self.image_filename = "snow" + str(self.img_number) + ".png"
self.image = pygame.image.load(self.image_filename).convert_alpha()
self.image = pygame.transform.scale(self.image, (SNOW_SIZE,SNOW_SIZE))
def move_snow(self):
self.y = self.y + self.speed
if self.y > MAX_Y:
self.y = (0 - SNOW_SIZE)
i = random.randint(1, 3)
if i == 1: #MOVE RIGHT
self.x +=1
if self.x > MAX_X:
self.x = (0 - SNOW_SIZE)
elif i == 2: #MOVE LEFT
self.x -= 1
if self.x < (0 - SNOW_SIZE):
self.x = MAX_X
def draw_snow(self):
screen.blit(self.image, (self.x, self.y))
def initialize_snow(max_snow, snowfall):
for i in range(0, max_snow):
xx = random.randint(0, MAX_X)
yy = random.randint(0, MAX_Y)
snowfall.append(Snow(xx, yy))
def check_for_exit():
for event in pygame.event.get():
if event.type == pygame.KEYDOWN:
sys.exit()
# --------------- MAIN
pygame.init()
screen = pygame.display.set_mode((MAX_X, MAX_Y),pygame.FULLSCREEN)
#screen = pygame.display.set_mode((MAX_X, MAX_Y))
bg_color = (0, 0, 0)
snowfall = []
initialize_snow(MAX_SNOW, snowfall)
while True:
screen.fill(bg_color)
check_for_exit()
for i in snowfall:
i.move_snow()
i.draw_snow()
time.sleep(TIME_SLEEP)
pygame.display.flip()
29. Python Конвертирование py в exe / convet *.py to *.exe
# !!! Открываем cmd # !!! Команда pip list может не \ ошибка не известная команда .... # !!! Если python установлен попробуй python -m pip list / py -m pip list # !!! И так с остальными командами .... py -m pip list - покажет какие модули python установлены pip list - покажет какие модули python установлены py --version - узнать версию python # !!! Далее нам надо pywin32 (sourceforge) # !!! https://github.com/mhammond/pywin32/releases - вот отсюда берем под нашу версию установленного python Скачиваем и устанавливаем # !!! Далее нам понадобится скачать pyinstaller # !!! https://www.pyinstaller.org/ - вот отсюда берем под нашу версию установленного python Распаковываем и переносим в каталог к нашему скрипту. (То есть содержимое прям вытряхиваем в каталог нашего скрипта(Наш скрипт - это который мы собрались конвертировать в exe)) # !!! Устанавливаем pefile pip install pefile # !!! Еще может понадобится pywin32-ctypes pip install pywin32-ctypes # !!! При ошибках конвертации еще иногда помогает до установка pyinstaller pip install pyinstaller # !!! Собственно конвертация python pyinstaller.py helloworld.py --onefile - запустили питоном файл pyinstalle.py с аргументами helloworld.py(тот самый наш скрипт) --onefile (сказать pyinstaller что мы хотим что бы он сделал один файл) # !!! Где искать наш exe ???? В каталоге нашего проекта появится папка с именем нашего проекта. В примере выше это будет каталог helloworld. Внутри этого каталога будет еще папка dist, в котором будет лежать файл helloworld.exe
30. Работа с базами данных SQL Server ODBC
# ставим модуль pypyodbc
# ставим SQL Server 2016 express edition(бесплатная версия)
# https://github.com/Microsoft/sql-server-samples/tree/master/samples/databases/northwind-pubs
# https://docs.microsoft.com/ru-ru/dotnet/framework/data/adonet/sql/linq/downloading-sample-databases
# https://www.woinfo.ru/soft/ustanovka-i-podklyuchenie-k-baze-dannyx-northwind.html
# https://visualstudio.microsoft.com/ru/downloads/
# MYWIN\SQLEXPRESS - мой тестовый сервер(MYWIN) и имя инстанс SQL (SQLEXPRESS)
# northwind - база данных для обучения
# https://docs.microsoft.com/ru-ru/sql/connect/python/pyodbc/step-3-proof-of-concept-connecting-to-sql-using-pyodbc?view=sql-server-ver15
import pypyodbc
mySQLServer = "MYWIN\SQLEXPRESS"
myDatabase = "northwind"
#connection = pypyodbc.connect(driver='{SQL Server}', server='localhost', database='test', uid='user', pwd='password')
# Если не указываем uid и pwd будут использоватся учетные данные пользователя запустившего скрипт
#connection = pypyodbc.connect(driver='{SQL Server}', server='MYWIN\SQLEXPRESS', database='Northwind')
connection = pypyodbc.connect(driver='{SQL Server}', server= mySQLServer, database= myDatabase)
cursor = connection.cursor()
mySQLQuery = ("""
SELECT CompanyName, ContactName, country
FROM dbo.Customers
WHERE country = 'USA'
""")
cursor.execute(mySQLQuery)
results = cursor.fetchall()
#print(results)
for row in results:
companyname = row[0]
contactname = row[1]
contryname = row[2]
#print("Welcome: " + str(companyname) + "User:" + str(contactname) + "Frome: " + str(contryname))
print(f"Welcome: {companyname} User: {contactname} From: {contryname} ")
connection.close
31. Конвертирование .py в Linux bin
0. Предварительно
whereis pyhton3 - команда покажет где ваши файлы python
touch myscript.py - создали пустой файл будущего скрипта
chmod +x myscript.py - разрешили запуск файла
nano myscript.py - пошли писать скрипт
Содержимое myscript.py
------myscript.py
#!/usr/bin/python3
print("Hello World from Python bin in Linux!")
----------------
1. Устанавливаем и обновляем библиотеки Python:
sudo apt-get install --reinstall python-pkg-resources
sudo apt-get install build-essential python-dev
2. Качаем PyInstaller:
wget https://github.com/pyinstaller/pyinstaller/releases/download/v3.6/PyInstaller-3.6.tar.gz
3. Распаковываем PyInstaller:
tar -xvf PyInstaller-3.2.tar.gz
4. Заходим в распакованный PyInstaller:
cd PyInstaller-3.2
5.Устанавливаем PyInstaller:
./pyinstaller.py setup.py
6. Конвертируем ваш .py файл в bin:
./pyinstaller.py myscript.py --onefile
Ваш бинарный файл будет в /PyInstaller-3.2/myscript/dist
32. Pycharm Linux
0. Скачать файл https://www.jetbrains.com/ru-ru/pycharm/download/#section=linux 1. Распаковать файл tar -xvf pycharm-community-*.tar.gz 2. Перейти в директорию где запускаемый скрипт cd pycharm-community-* cd bin 3. Запустить PyCharm из директории где лежит PyCharm ./pycharm.sh
33. Работа с Интернетом: GET, POST, Download / request / запросы
from urllib import request
myUrl = "https://b14esh.com"
otvet = request.urlopen(myUrl)
mytext1 = otvet.readlines()
mytext2 = otvet.read()
print(otvet)
print("---------------------------------------------------------------------")
print(mytext2)
print("---------------------------------------------------------------------")
for line in mytext1:
print(line)
33.1 Работа с Интернетом: GET, POST, Download / request
from urllib import request
myUrl = "https://b14esh.com"
otvet = request.urlopen(myUrl)
mytext1 = otvet.readlines()
mytext2 = otvet.read()
print(otvet)
print(mytext2)
for line in mytext1:
print(line)
33.2 Работа с Интернетом: GET, POST, Download / request / post
from urllib import request, parse
import sys
myUrl = "https://www.google.com/search?"
value = {'q': 'ANDESA Soft'}
myheader = {}
myheader['User-Agent'] = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36'
try:
mydata = parse.urlencode(value)
print(mydata)
myUrl = myUrl + mydata
req = request.Request(myUrl, headers=myheader)
otvet = request.urlopen(req)
otvet = otvet.readlines()
for line in otvet:
print(line)
except Exception:
print("Error occuried during web request!!")
print(sys.exc_info()[1])
33.3 Работа с Интернетом: GET, POST, Download / download
from urllib import request
import sys
myUrl = "https://b14esh.com/img/b14esh/200w1.png" # что качаем
myFile = "O:\\mykartinka.png" # куда качаем
try:
print(f"Start download from: >>> {myUrl} \n\t\t\t\t To: >>> {myFile}")
request.urlretrieve(myUrl, myFile)
except Exception:
print("AHTUNG!!!")
print(sys.exc_info()[1])
exit()
print(f"File Downloaded and saved >>> {myFile}")
34. Django / установка
# CMD windows #https://www.djangoproject.com/ #pip install django #pip install django-admin # на windows 7 все заработало без проблем, #на windows 10 была ошибка с просьбой установить Microsoft Visual C++ 14.0 ( скачал https://visualstudio.microsoft.com/ru/vs/ и установил "Средство сборки C++" (На самом деле нужен был компонент windows 10 SDK) # django --version - проверяем что django установился !!! Создание сайта mysite #o: - перешли на нужный диск o #cd O:\pycharm5\python\django - перешли в каталог нашего будущего проекта #django-admin startproject mysite - создаем проект будущего сайта mysite !!! Создаем базу для сайта mysite #cd mysite - перешли в директорию нашего сайта mysite (ну тесть вот сюда O:\pycharm5\python\django\mysite) #python manage.py migrate !!! Запуск сервера с сайтом mysite #python manage.py runserver #При запуске он напишет на каком порту он стартовал #http://127.0.0.1:8000/
35. Django / Аппликации / странички
#django-admin startproject mysite - создаем проект будущего сайта mysite settings.py - файл настройки urls.py - файл настройки страниц #python manage.py runserver - запуск проекта #http://127.0.0.1:8000/ #cd mysite - перешли в каталог python manage.py startapp page1 - создали страничку views.py urls.py - файл настройки страниц #http://127.0.0.1:8000/page1 python manage.py startapp page2 - создали views.py urls.py - файл настройки страниц #http://127.0.0.1:8000/page2
36. Django / Пример добавление страниц
0. редактируем файл setting.py в корне проекта чтобы добавить новые аппликации (python manage.py startapp page1)
....... куча текста .....
# Application definition - ищем это
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Add my web page1
'page1', - добавляем станицу page1
'page2', - добавляем станицу page2
]
1. редактируем файл urls.py в корне проекта ( что бы мы могли зайти на страничку http://127.0.0.1:8000/page1 и т.д.)
from django.urls import include, path
from django.contrib import admin
urlpatterns = {
path('admin/', admin.site.urls), - админка по умолчанию в джанго
path('', include('page1.urls')), - вот так страничка page1 будет открываться как главная страница
#path('hello', include('page1.urls')), - вот так только когда переходят на нее вот так http://127.0.0.1:8000/page1
}
2. для работы аппликации page1 нужно отредактировать следующие файл page1\urls.py
from django.conf.urls import url
from . import views
urlpatterns = [
url(r'^$', views.index, name='index'),
]
3. также для того что бы аппликация page что то показала нужно отредактировать файл page1\views.py
#from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def index(request):
return HttpResponse(" Hello world from django ! :)
")
4. Запускаем проект и проверяем что все работает
python manage.py runserver
Пример запуска django
Запустите сервер с локальным хостом или системным IP-адресом, как показано ниже. python manage.py runserver 192.168.6.7:8000 python manage.py runserver 0.0.0.0:8000 python manage.py runserver 127.0.0.1:8000 Добавьте хосты в settings.py для доступа из другой системы в сети. ALLOWED_HOSTS = ['127.0.0.1', 'localhost','192.168.6.7']