Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
51ba277
changes1
Sep 1, 2022
028369a
changes1
Sep 2, 2022
a01532c
changes1
Sep 2, 2022
893e007
Version 1
Sep 5, 2022
28820e6
Update 2.1.py
AleksandraG88 Sep 5, 2022
170567c
Version 1
Sep 5, 2022
ab0820a
Merge branch 'AlexGrishchenko' of https://github.com/IlyaOrlov/Python…
Sep 5, 2022
b4d9b75
Version 1
Sep 5, 2022
dd6a802
Update 2.1.py
AleksandraG88 Sep 6, 2022
5b088a2
Version 2
Sep 6, 2022
8d6d5c5
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
Sep 6, 2022
7a335f5
Merge branch 'AlexGrishchenko' of https://github.com/IlyaOrlov/Python…
Sep 7, 2022
4002e0f
Version 1
Sep 7, 2022
bbc000c
Version 1
Sep 7, 2022
18e9a0b
Version 2
Sep 8, 2022
35f043b
Version 1
Sep 13, 2022
51f0abb
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
Sep 13, 2022
9ff0238
Version 1
Sep 13, 2022
3abf1a3
Version 1
Sep 13, 2022
5a56e7f
Version 3
Sep 13, 2022
7686879
Version 3
Sep 13, 2022
3bfc44b
Version 3
Sep 13, 2022
3478f1c
Не получается оставить только один int(numbers_1)
Sep 14, 2022
541f31c
Version 2
Sep 14, 2022
c8877d5
Version 1
Sep 15, 2022
0360793
Version 2
Sep 15, 2022
a644901
Version 1
Sep 17, 2022
19f730e
Version 1
Sep 17, 2022
2e6f0db
Version 1
Sep 19, 2022
9cc28c2
Исправила 5.1 и 5.2
Sep 20, 2022
eb12806
Поправила 5.2
Sep 21, 2022
2090f32
Version 1
Sep 21, 2022
1488e61
Version 1
Sep 21, 2022
d6b159f
Исправила, теперь правильно удаляет
Sep 26, 2022
a920f23
Поправила, теперь правильно удаляет и i убрала
Sep 26, 2022
61c5ccf
Поправила
Sep 26, 2022
e363ea1
Поправила
Sep 26, 2022
ba7b2af
Задание 5 из 5 лекции и 1,2 из 6 лекции
Sep 29, 2022
62ca9c9
Merge branch 'main' of https://github.com/IlyaOrlov/PythonCourse2.0_A…
Sep 29, 2022
1fd6c15
Поправила
Sep 30, 2022
007feae
Поправила 6.2
Oct 3, 2022
1c3f8bf
Задание 6.3
Oct 3, 2022
97f4435
Поправила
Oct 11, 2022
be38b9e
Задания к 7 лекции
Oct 11, 2022
cb91fa8
Задания к 8 лекции
Oct 11, 2022
7a9d0e0
Задания к лекции 8
Oct 11, 2022
d23a711
Задания 1,2 к лекции 9
Oct 14, 2022
8c09263
Задания 1,2 к лекции 9
Oct 14, 2022
d9bb32c
Задания 1,2 к лекции 10
Oct 14, 2022
837c45c
Поправила
Oct 14, 2022
fefbdf5
Поправила
Oct 14, 2022
2311458
Поправила
Oct 14, 2022
1b713ba
Поправила
Oct 20, 2022
679b66c
Задания 11.1, 11.2, 12.1(сервер и клиент)
Oct 20, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/10.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
lst = ["10", "5", "a", "3", "b"]
lst1 = [x**2 for z in lst if z.isdigit() and (x := int(z))%5 == 0]
print(lst1)

17 changes: 17 additions & 0 deletions Practice/GrishchenkoA/10.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
#-*- coding: utf-8 -*-
import random

hello = ["Привет!", "Здравствуйте!", "Добрый день!"]
mood = ["Хорошо!", "Так себе", "Что-то не очень хорошо"]
weather = ["Сегодня ветренно", "Сегодня солнечно", "Дождь"]

while True:
match input('Что Вы хотели спросить: '):
case "Привет":
print(random.choice(hello))
case "Как дела?":
print(random.choice(mood))
case "Какая сегодня погода":
print(random.choice(weather))
case _:
print("Вопрос некорректен, попробуйте сформулировать его по-другому")
Empty file added Practice/GrishchenkoA/10.3.py
Empty file.
63 changes: 63 additions & 0 deletions Practice/GrishchenkoA/11.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# -*- coding: utf-8 -*-

import time
import threading
import multiprocessing

def find_primes(*args):
if len(args) == 1:
start = 3
end = args[0]
else:
start = args[0]
end = args[1]

lst = []
for i in range(start, end + 1):
if i > 1:
for y in range(2, i):
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Достаточно проверять делители до корня квадратного из i.

if i % y == 0:
break
else:
lst.append(i)
return lst

if __name__ == "__main__":
lst_time = []
start = time.perf_counter()
find_primes(10000)
find_primes(10001, 20000)
find_primes(20001, 30000)

lst_time.append(time.perf_counter() - start)
print(f"Общее время обычного расчета занял в секундах: {lst_time}")

start = time.perf_counter() # считаем что-то много раз с разными параметрами
lst_time1 = []
thr1 = threading.Thread(target=find_primes, args=(10000,))
thr2 = threading.Thread(target=find_primes, args=(10001, 20000))
thr3 = threading.Thread(target=find_primes, args=(20001, 30000))
thr1.start() # если 'забыть' выполнить start, то будет ошибка RuntimeError: cannot join thread before it is started
thr2.start()
thr3.start()
thr1.join() # если 'забыть' выполнить join, то ошибки не будет, но выполнится только один поток
thr2.join()
thr3.join()
lst_time1.append(time.perf_counter() - start)
print(f"Общее время расчета через многопоточность занял в секундах: {lst_time1}")

start = time.perf_counter()
lst_time2 = []
p1 = multiprocessing.Process(target=find_primes, args=(10000,))
p2 = multiprocessing.Process(target=find_primes, args=(10001, 20000))
p3 = multiprocessing.Process(target=find_primes, args=(20001, 30000))
p1.start() # если 'забыть' выполнить start, то будет ошибка AssertionError: can only join a started process
p2.start()
p3.start()
p1.join() # если 'забыть' выполнить join, то ошибки не будет, но выполнится только один процесс
p2.join()
p3.join()
lst_time2.append(time.perf_counter() - start)
print(f"Общее время расчета через многопроцессорность занял в секундах: {lst_time2}")

# Быстрее всего данная задача решается через многопоточность
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Стоит получше присмотреться к результатам! У многопоточности здесь вообще не оснований выбиться в лидеры.
Интересно, кстати, зачем хранить единственное значение - время работы алгоритма - в списке?

28 changes: 28 additions & 0 deletions Practice/GrishchenkoA/11.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# -*- coding: utf-8 -*-
from multiprocessing import Pool

def addition(data):
t = data[0]
match t:
case int(t):
res = 0
for y in data:
res += y
case str(t):
res = ""
for y in data:
res += y
case list(t):
res = []
for y in data:
res += y
return res



if __name__ == '__main__':
data = ([1, 2, 4], [[1, 2], [4, 7], [9, 0]], ["Hello", "world"])
pool = Pool(processes=3)
res = pool.map(addition, data)
print(res)

Empty file added Practice/GrishchenkoA/11.3.py
Empty file.
Empty file added Practice/GrishchenkoA/12.1 k.py
Empty file.
26 changes: 26 additions & 0 deletions Practice/GrishchenkoA/12.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# -*- coding: utf-8 -*-
import socket
import pickle


s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = '192.168.1.35'
port = 64698
s.bind((host, port))
s.listen(2)
conn, addr = s.accept()
print('Server got connection from {}'.format(addr))
while True:
data = conn.recv(1024)
if not data:
break
data1 = pickle.loads(data)
d = {"house": "дом", "car": "машина", "three": "дерево", "cat": "кошка", "apple": "яблоко"}
c = d.keys()
a = []
for i in c:
for y in data1:
if y == i:
a.append(d[i])
conn.send(pickle.dumps(a))
conn.close()
10 changes: 10 additions & 0 deletions Practice/GrishchenkoA/2.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import math


def square(r):
Comment thread
IlyaOrlov marked this conversation as resolved.
return math.pi * r ** 2


radius = input("Введите радиус: ")
result = square(int(radius))
print(f"Площадь круга: {result}")
6 changes: 6 additions & 0 deletions Practice/GrishchenkoA/2.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
start = input("Топлива было: ")
end = input("Топлива осталось: ")
distance = input("Расстояние: ")
diff = int(start) - int(end)
result = diff / int(distance)
print(f"Средний расход бензина: {result}")
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/3.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
a = int(input("Введите длину прямоугольника: "))
b = int(input("Введите ширину прямоугольника: "))
p = 2*(a + b)
print(f"Периметр прямоугольника: {p}")
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/3.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
time = int(input("Введите время, проведенное в пути: "))
distance = int(input("Введите пройденное расстояние: "))
speed = distance / time
print(f"Средняя скорость автомобиля равна: {speed}")
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/3.3.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
password = int(input("Введите пароль :"))
key = 888
result = password ^ key
print(result)
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/3.3.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
code = int(input("Введите зашифрованный код :"))
key = 888
password = code ^ key
print(password)
4 changes: 4 additions & 0 deletions Practice/GrishchenkoA/3.4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
word = input("Введите слово: ")
corrected_word = word.replace("А" , "*")
print(corrected_word)

7 changes: 7 additions & 0 deletions Practice/GrishchenkoA/3.5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
word = input("Введите слово для проверки: ")
_lower = word.lower()
left = _lower
rights = _lower[::-1]
print(left == rights)


11 changes: 11 additions & 0 deletions Practice/GrishchenkoA/4.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
number = 1
while number <= 100:
if number % 15 == 0:
print("FizzBuzz")
elif number % 5 == 0:
print("Buzz")
elif number % 3 == 0:
print("Fizz")
else:
print(number)
number += 1
3 changes: 3 additions & 0 deletions Practice/GrishchenkoA/4.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
numbers = input("Введите пятизначное число: ")
for i, d in enumerate(numbers):
print(f"{i+1} цифра равна {d}")
13 changes: 13 additions & 0 deletions Practice/GrishchenkoA/4.3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
numbers=""
while (symbol := input("Введите числовой символ: ")).lower() != "stop":
if symbol.isdecimal():
numbers += symbol
else:
print("Введен нечисловой символ")
else:
print(f"Сформированное число: {int(numbers)}")





5 changes: 5 additions & 0 deletions Practice/GrishchenkoA/4.4.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import random

answer = ["Ты сам-то понял, что написал?", "Аргументируй", "И?"]
while (request := input("Введите запрос: ")) != "хватит":
print(random.choice(answer))
23 changes: 23 additions & 0 deletions Practice/GrishchenkoA/4.5.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
import random

range = input("Введите диапазон чисел: ").split()
hidden_numbers = random.randint(int(range[0]), int(range[1]))
numbers_1 = input("Угадайте целое число: ")
while True:
if not numbers_1.isdigit():
print("Вы ввели нечисловой символ")
break
else:
numbers_1 = int(numbers_1)
if numbers_1 < hidden_numbers:
print("Загаданное число больше введенного")
elif numbers_1 > hidden_numbers:
print("Загаданное число меньше введенного")
else:
print("Вы угадали")
break
numbers_1 = input("Угадайте целое число: ")




19 changes: 19 additions & 0 deletions Practice/GrishchenkoA/4.6.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
def choose_max(a, b):
if a > b:
max_1 = a
else:
max_1 = b
print(f"Большее число из введенных: {max_1}")


def finds_max(a, b):
if a > b:
max_2 = a
else:
max_2 = b
return max_2


a, b = map(int, input("Введите два числа: ").split())
choose_max(a, b)
finds_max(a, b)
16 changes: 16 additions & 0 deletions Practice/GrishchenkoA/4.7.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
def decorator1(func):
def equality(*args, **kwargs):
print("===========")
res = func(*args, **kwargs)
print("===========")
return res
return equality


@decorator1
def func():
print("Привет")

func()


29 changes: 29 additions & 0 deletions Practice/GrishchenkoA/4.8.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
import random

play = ["камень", "ножницы", "бумага"]
while (player_1 := input("Введите ваш вариант: ").lower()) != "хватит":
player_2 = random.choice(play)
print(f"Вариант компьютера: {player_2}")
if player_1 == "камень":
if player_2 == "камень":
print("Ничья")
elif player_2 == "ножницы":
print("Вы выиграли")
elif player_2 == "бумага":
print("Вы проиграли")
elif player_1 == "ножницы":

if player_2 == "камень":
print("Вы проиграли")
elif player_2 == "ножницы":
print("Ничья")
elif player_2 == "бумага":
print("Вы выиграли")
elif player_1 == "бумага":

if player_2 == "камень":
print("Вы выиграли")
elif player_2 == "ножницы":
print("Вы проиграли")
elif player_2 == "бумага":
print("Ничья")
21 changes: 21 additions & 0 deletions Practice/GrishchenkoA/5.1.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
def find_min_index(lst):
for i,d in enumerate(lst):
d = min(lst[i:])
d, lst[i] = lst[i], d
Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Мы так элементы теряем. Не стоит здесь надеяться на стандартную функцию min.
Лучше в этой функции find_min_index просто найти индекс минимального элемента:

min_idx = 0
min_val = lst[min_idx]
for i, d in enumerate(lst):
    if d < min_val:
        min_val = d
        min_idx = i
return min_idx

А перестановку можно и за пределами функции сделать.



arr = [0, 3, 24, 2, 3, 7]
#for i in range(0, len(arr)):
find_min_index(arr)
print(arr)

#def find_min_index(lst):
# a = min(lst[i:])
# c = lst.index(a, i)
#lst[c], lst[i] = lst[i], lst[c]


#arr = [0, 3, 24, 2, 3, 7]
#for i in range(0, len(arr)):
# find_min_index(arr)
#print(arr)
15 changes: 15 additions & 0 deletions Practice/GrishchenkoA/5.2.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
def repeat(lst):
set_new = set()
for i in lst:
if not i in set_new:
set_new.add(i)
else:
print(i)
return i


lst_new = [2, 3, 4, 5, 3, 2]
repeat(lst_new)



14 changes: 14 additions & 0 deletions Practice/GrishchenkoA/5.3.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
str_new = "Петров - 2 , Иванов - 5 , Сидоров - 4"
lst = list(str_new.split())
dict_1 = {2: "неудовлетворительно", 3: "удовлетворительно", 4: "хорошо", 5: "отлично"}
for y, b in enumerate(lst):
if b.isdigit():
b = int(b)
if b in dict_1:
lst[y] = dict_1[b]
str_1 = ""
for i in lst:
print(str_1.join(i), end=" ")



Loading