Skip to content

Commit 4deafaa

Browse files
committed
all works
0 parents  commit 4deafaa

File tree

244 files changed

+12005
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

244 files changed

+12005
-0
lines changed

Diff for: README.md

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
# Программирование 1 семестр
2+
## Инфокоммуникационные технологии
3+
### Лекции
4+
5+
[Теоретические материалы и примеры](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/lectures)
6+
7+
1 - Простейшие программы
8+
9+
- [Hello](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_1/hello%20-%201.py)
10+
11+
- [Фаренгейт в Цельсия](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_1/temperature%20-%202.py)
12+
13+
- [Площадь по формуле Герона](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_1/geron%20-%203.py)
14+
15+
- [Черепашка](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_1/cherepaha%20-%204.2.py)
16+
17+
- [Секунды в нормальный вид времени](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_1/sec%20-%205.py)
18+
19+
2 - Типы данных, ветвления, циклы
20+
21+
- [Имя и возраст](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/name%20and%20age%20-1.py)
22+
23+
- [Время года](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/season%20-%202.py)
24+
25+
- [Високосный год](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/visok%20god%20-%203.py)
26+
27+
- [Новый год](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/new%20year%20-%204.py)
28+
29+
- [Калькулятор](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/calc%20-%205.py)
30+
31+
- [Время суток](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_2/morning%20-%206.py)
32+
33+
3 - Работа с числами
34+
35+
- [Четное/нечетное](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_3/chet_nechet%20-%201.py)
36+
37+
- [Простые числа в диапазоне](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_3/simple%20-%202.py)
38+
39+
- [Максимальное число из 3](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_3/max%20-%203.py)
40+
41+
- [Четверть координаты](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_3/koord%20-%204.py)
42+
43+
- [Угадай число от 1 до 100](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_3/ugad%20-%205.py)
44+
45+
Контрольная 1 - Реализация алгоритмических конструкций
46+
47+
- [Акронимы](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr1/akron%20-%201.py)
48+
49+
- [Метод zip](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr1/zip%20-%202.py)
50+
51+
- [Разделение массива имен на 2 части: до Л и после](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr1/imena%20-%203.py)
52+
53+
- [Умножение чисел до 10 и после на разные числа](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr1/koef%20-%204.py)
54+
55+
4 - Обработка строк и массивов
56+
57+
- [Сокращение имени и отчества](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/fio%20-%201.py)
58+
59+
- [Изменение регистра](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/register%20-%202.py)
60+
61+
- [Сумма цифр в строке](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/linesum%20-%203.py)
62+
63+
- [Транслитерация](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/translit%20-%204.py)
64+
65+
- [Логин в базе](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/login%20-%205.py)
66+
67+
- [Количество элементов в списке, среднее значение, сумма, минимальное/максимальное значение и произведение между ними](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/kolvospisok%20-%206.py)
68+
69+
- [Сдвиг в массиве](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/sdvig%20-%207.2.py)
70+
71+
- [Построение по росту](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_4/rost%20-%208.py)
72+
73+
Контрольная 2 - Функции
74+
75+
- [Возведение числа в степень 2 способами (обычный и рекурсия)](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr2/step%20-%201.py)
76+
77+
- [Среднее значение температур в списке с ошибками](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr2/temp%20-%202.py)
78+
79+
- [Расстояние, которое проехала машина](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr2/rast%20-%203.py)
80+
81+
- [Считалка](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_kr2/counting%20-%204.py)
82+
83+
5 - Процедурное программирование
84+
85+
- [Корни квадратного уравнения](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_5/korni%20-%201.py)
86+
87+
- [Площади фигур](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_5/square%20-%202.py)
88+
89+
- [Сложность пароля](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_5/hardpass%20-%203.py)
90+
91+
- [Шифровальщик](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_5/shifr%20-%204.py)
92+
93+
Домашнее задание
94+
95+
- [Реализация программной модели инфокоммуникационной системы](https://github.com/VeraKasianenko/Programming_1_term_ICT/blob/main/prog_dz)
Binary file not shown.
Binary file not shown.
Binary file not shown.

Diff for: lectures/2_2_Алгоритмы.pdf

1.84 MB
Binary file not shown.
Binary file not shown.

Diff for: lectures/4_2_Введение в ООП.pdf

2.9 MB
Binary file not shown.
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
from random import randint
2+
3+
n_comp = randint(1, 100)
4+
print(n_comp)
5+
print('Компьютер "загадал" число в интервале от 1 до 100. Какое?')
6+
7+
def check_numder(numder, n_comp):
8+
if numder > n_comp:
9+
return 'Загаданное число меньше'
10+
elif otvet < n_comp:
11+
return 'Загаданное число больше.'
12+
else:
13+
return f'Правильно! Число попыток отгадывания - {n}'
14+
15+
n = 1 # Счетчик числа попыток
16+
while True:
17+
otvet = int(input('Введите Ваше число '))
18+
answer = check_numder(otvet, n_comp)
19+
print(answer)
20+
n = n + 1
21+
if otvet == n_comp:
22+
break
23+
24+
'''
25+
Замечания по реализации:
26+
главный цикл организует логику повторения попыток и считает их количество,
27+
вопрос - должен ли он считать или это обязанность самой функции?
28+
'''
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from random import randint
2+
#n = 0 # Счетчик числа попыток
3+
4+
n_comp = randint(1, 100)
5+
print(n_comp)
6+
print('Компьютер "загадал" число в интервале от 1 до 100. Какое?')
7+
8+
def check_numder(numder, n_comp):
9+
check_numder.n += 1
10+
if numder > n_comp:
11+
return 'Загаданное число меньше'
12+
elif otvet < n_comp:
13+
return 'Загаданное число больше.'
14+
else:
15+
return f'Правильно! Число попыток отгадывания - {check_numder.n}'
16+
check_numder.n = 0
17+
18+
while True:
19+
otvet = int(input('Введите Ваше число '))
20+
answer = check_numder(otvet, n_comp)
21+
print(answer)
22+
if otvet == n_comp:
23+
break
24+
25+
26+
'''
27+
Замечания по реализации:
28+
главный цикл организует логику повторения попыток,
29+
а функция считает их количество, добавляя себе атрибут и
30+
использует как статическую переменную
31+
'''
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
from random import randint
2+
#n = 0 # Счетчик числа попыток
3+
4+
n_comp = randint(1, 100)
5+
print(n_comp)
6+
print('Компьютер "загадал" число в интервале от 1 до 100. Какое?')
7+
8+
def check_numder(numder, n_comp):
9+
#if not hasattr(check_numder, "n"):
10+
# check_numder.n = 0
11+
#check_numder.n += 1
12+
check_numder.n = getattr(check_numder, 'n', 0) + 1
13+
if numder > n_comp:
14+
return 'Загаданное число меньше'
15+
elif otvet < n_comp:
16+
return 'Загаданное число больше.'
17+
else:
18+
return f'Правильно! Число попыток отгадывания - {check_numder.n}'
19+
20+
21+
while True:
22+
otvet = int(input('Введите Ваше число '))
23+
answer = check_numder(otvet, n_comp)
24+
print(answer)
25+
if otvet == n_comp:
26+
break
27+
28+
29+
'''
30+
Замечания по реализации:
31+
главный цикл организует логику повторения попыток,
32+
а функция считает их количество, добавляя себе атрибут и
33+
использует как статическую переменную
34+
'''
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
from random import randint
2+
#n = 0 # Счетчик числа попыток
3+
4+
n_comp = randint(1, 100)
5+
print(n_comp)
6+
print('Компьютер "загадал" число в интервале от 1 до 100. Какое?')
7+
8+
def static_vars(**kwargs):
9+
'''декоратор для добавления атрибута для функции'''
10+
def decorate(func):
11+
for k in kwargs:
12+
setattr(func, k, kwargs[k])
13+
return func
14+
return decorate
15+
16+
@static_vars(n=0)
17+
def check_numder(numder, n_comp):
18+
check_numder.n += 1
19+
if numder > n_comp:
20+
return 'Загаданное число меньше'
21+
elif otvet < n_comp:
22+
return 'Загаданное число больше.'
23+
else:
24+
return f'Правильно! Число попыток отгадывания - {check_numder.n}'
25+
26+
27+
while True:
28+
otvet = int(input('Введите Ваше число '))
29+
answer = check_numder(otvet, n_comp)
30+
print(answer)
31+
if otvet == n_comp:
32+
break
33+
34+
35+
'''
36+
Замечания по реализации:
37+
главный цикл организует логику повторения попыток,
38+
а функция считает их количество, используя декорирование
39+
'''
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
from random import randint
2+
n = 0 # Счетчик числа попыток
3+
4+
n_comp = randint(1, 100)
5+
print(n_comp)
6+
print('Компьютер "загадал" число в интервале от 1 до 100. Какое?')
7+
8+
def check_numder(numder, n_comp):
9+
global n
10+
n+=1
11+
if numder > n_comp:
12+
return 'Загаданное число меньше'
13+
elif otvet < n_comp:
14+
return 'Загаданное число больше.'
15+
else:
16+
return f'Правильно! Число попыток отгадывания - {n}'
17+
18+
19+
while True:
20+
otvet = int(input('Введите Ваше число '))
21+
answer = check_numder(otvet, n_comp)
22+
print(answer)
23+
if otvet == n_comp:
24+
break
25+
26+
27+
'''
28+
Замечания по реализации:
29+
главный цикл организует логику повторения попыток,
30+
а функция считает их количество,
31+
'''

Diff for: lectures/Demo/Demo_lec_04(22)/def/defAnnotation.py

+58
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
'''Аннотации являются полностью необязательной информацией метаданных о используемых типах,
2+
Для переменных аннотации типов пишутся не в комментариях или docstring,
3+
а непосредственно в коде.
4+
Аннотация содержит непосредственно ожидаемый тип.
5+
'''
6+
x: int = 10
7+
x = 'str' # можно присвоить
8+
s: str = 'hello'
9+
10+
print(x * 3)
11+
print(s.startswith('h'))
12+
13+
'''Параметры функции аннотируются так же как переменные,
14+
возвращаемое значение указывается после стрелки -> до завершающего двоеточия
15+
'''
16+
def sum_two_numbers(a: int, b: int) -> int:
17+
return a + b
18+
19+
def greet_all(names: list[str]) -> None:
20+
for name in names:
21+
print("Hello", name)
22+
'''До версии 3.9 для явного указания, что структура данных должна состоять
23+
только из эементов определенного типа, нужно было импортировать модуль typing:
24+
from typing import List, Dist
25+
'''
26+
27+
'''переменная может обладать свойствами, охватывающими нескольких типов.
28+
Этого можно достичь при помощи generic-типа Union из модуля typing'''
29+
from typing import Union
30+
31+
def get_room_temperature(a:Union[int, float], b:Union[int, float]) -> Union[int, float]:
32+
return a*b
33+
34+
'''возможно либо значение определенного типа, либо None'''
35+
from typing import Optional, Union
36+
37+
# это одно и то же, но первый вариант проще читается
38+
phone: Optional[str]
39+
phone: Union[str, None]
40+
41+
'''функция может принимать на вход абсолютно что угодно.
42+
Для этих случаев есть специальный объект typing.Any'''
43+
from typing import Any
44+
45+
def func(arg: Any) -> Any:
46+
return arg
47+
48+
49+
50+
if __name__ == '__main__':
51+
a: list = [7]
52+
names: list = ['Вася', 'Петя']
53+
sum = sum_two_numbers(a, a*2)
54+
print(sum)
55+
''' Аннотации хранятся в атрибуте функции __annotations__ как словарь
56+
и не влияют ни на какую другую часть функции'''
57+
print(sum_two_numbers.__annotations__)
58+
greet_all(names)

Diff for: lectures/Demo/Demo_lec_04(22)/def/def_sqrt.py

+74
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
''' Алгоритм расчета квадратного корня'''
2+
target = 2021
3+
x = 1
4+
oldx = 0
5+
while (oldx != x):
6+
oldx = x
7+
x = (x + target / x) / 2
8+
9+
print("x = ", x)
10+
print("x^2 = ", x*x)
11+
12+
def my_sqrt(trg):
13+
x = 1
14+
oldx = 0
15+
while (oldx != x):
16+
oldx = x
17+
x = (x + target / x) / 2
18+
return x
19+
20+
result = my_sqrt(target)
21+
print(result)
22+
23+
def my_out(x, y):
24+
#s = f'{Результат вычисления корня из {x} равен {y}}'
25+
s = "Результат вычисления корня из {0} равен {1:.2f}".format(x,y)
26+
print(s)
27+
28+
my_out(target, result)
29+
30+
''' Проверка элементов списка на четность '''
31+
def if_even(nums):
32+
'''с флагом проверки'''
33+
res = True
34+
for x in nums:
35+
if x % 2 != 0:
36+
res = False
37+
break
38+
return res
39+
40+
result = if_even([1,4,3,2])
41+
print(result)
42+
43+
def if_even(nums):
44+
'''без флага проверки'''
45+
for x in nums:
46+
if x % 2 != 0:
47+
return False
48+
return True
49+
50+
result = if_even([1,4,3,2])
51+
print(result)
52+
53+
def if_even(*nums):
54+
'''принимает несколько элементов и распаковывает'''
55+
for x in nums:
56+
if x % 2 != 0:
57+
return False
58+
return True
59+
60+
result = if_even(1,4,3,2)
61+
print(result)
62+
63+
def if_even(nums):
64+
'''Возврат нескольких значений'''
65+
for i, x in enumerate(nums):
66+
if x % 2 != 0:
67+
return False, i # tuple
68+
return True
69+
70+
result = if_even([2,4,3,2])
71+
print(result)
72+
73+
74+
print(if_even.__doc__)

0 commit comments

Comments
 (0)