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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
Стандартная программа для языков программирования 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
3. PyCharm — IDE(среда разработки) для python
|
https://www.jetbrains.com/ru-ru/pycharm/download/#section=windows |
4. Переменные
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
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 \ строки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
|
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32
|
# 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
# (----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. Ввод данных пользователя
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
|
#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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
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. Использование модулей
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
# Все функции во втором файле 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
|
#---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. Работа с файлами
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
|
#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. Ошибки
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
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. Аргументы / Командная строка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
|
# Как послать аргументы нашим скриптам/программе ? # 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
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 Управление картинкой
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# Двигаем картинку 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
|
# Двигаем картинку плавно 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 снегопад
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
# !!! Открываем 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
# ставим модуль 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
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 / запросы
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
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 / установка
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
# 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 / Аппликации / странички
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
#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 / Пример добавление страниц
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
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("<center> <h2>Hello world from django ! :) </h2> </center>") 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'] |