From c2a65b2b9a9f7d8089d86818a793e65d2c78b189 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Tue, 12 Sep 2023 22:59:21 +0300 Subject: [PATCH 01/19] Task 10 --- HW_Seminar2.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 HW_Seminar2.py diff --git a/HW_Seminar2.py b/HW_Seminar2.py new file mode 100644 index 0000000..db28c58 --- /dev/null +++ b/HW_Seminar2.py @@ -0,0 +1,20 @@ +# Задача 10: На столе лежат n монеток. Некоторые из них лежат вверх решкой, +# а некоторые – гербом. Определите минимальное число монеток, которые нужно +# перевернуть, чтобы все монетки были повернуты вверх одной и той же стороной. +# Выведите минимальное количество монет, которые нужно перевернуть. + +n = int(input('Введите число монеток: ')) +from random import randint +a, b = 0, 0 +for i in range(n): + temp = randint(0, 1) + print(temp, end=' ') + if temp > 0: + a += 1 + else: + b += 1 +print() +if a > b: + print(f'Нужно перевернуть {b} монеток') +else: + print(f'Нужно перевернуть {a} монеток') From 446f81ec68a6d9dabb2f340abc6b392eca440f67 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Tue, 12 Sep 2023 23:14:05 +0300 Subject: [PATCH 02/19] Task 12 --- HW_Seminar2.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/HW_Seminar2.py b/HW_Seminar2.py index db28c58..5fb830c 100644 --- a/HW_Seminar2.py +++ b/HW_Seminar2.py @@ -18,3 +18,19 @@ print(f'Нужно перевернуть {b} монеток') else: print(f'Нужно перевернуть {a} монеток') + +# Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. +# Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), +# а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму +# этих чисел S и их произведение P. Помогите Кате отгадать задуманные Петей числа. + +s = int(input('Введите сумму чисел: ')) +p = int(input('Введите произведение чисел: ')) +a = 0 +for x in range(s): + for y in range(s): + if x + y == s and x * y == p: + a += 1 + print(x, y) +if a == 0: + print('Вы ввели некорректные данные!') From d89d5fbf8a3ea50c84be9938124408dc6810c1d1 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Tue, 12 Sep 2023 23:27:57 +0300 Subject: [PATCH 03/19] Task 14 --- HW_Seminar2.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/HW_Seminar2.py b/HW_Seminar2.py index 5fb830c..2af8d36 100644 --- a/HW_Seminar2.py +++ b/HW_Seminar2.py @@ -19,6 +19,8 @@ else: print(f'Нужно перевернуть {a} монеток') +# ========== + # Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. # Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), # а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму @@ -34,3 +36,16 @@ print(x, y) if a == 0: print('Вы ввели некорректные данные!') + +# =========== + +# Задача 14: Требуется вывести все целые степени двойки +# (т.е. числа вида 2k), не превосходящие числа N. + +n = int(input('Введите число N: ')) +k = 0 +res = 1 +while res < n + 1: + print(res, end=' ') + k += 1 + res = 2 ** k From 9cd7538073a866363058567003fed517aaaa2ab6 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Tue, 12 Sep 2023 23:29:52 +0300 Subject: [PATCH 04/19] Task 14a --- HW_Seminar2.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/HW_Seminar2.py b/HW_Seminar2.py index 2af8d36..4247511 100644 --- a/HW_Seminar2.py +++ b/HW_Seminar2.py @@ -20,7 +20,6 @@ print(f'Нужно перевернуть {a} монеток') # ========== - # Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. # Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), # а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму @@ -38,7 +37,6 @@ print('Вы ввели некорректные данные!') # =========== - # Задача 14: Требуется вывести все целые степени двойки # (т.е. числа вида 2k), не превосходящие числа N. From b5054fde01ee9bf57995078d08f2fef39066c122 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 17:35:25 +0300 Subject: [PATCH 05/19] Task 14a --- HW_Seminar4.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 HW_Seminar4.py diff --git a/HW_Seminar4.py b/HW_Seminar4.py new file mode 100644 index 0000000..5841665 --- /dev/null +++ b/HW_Seminar4.py @@ -0,0 +1,18 @@ +def newset(num): + new_set = set() + for i in range(num): + new_set.add(int(input("Введите число для множества: "))) + return new_set + + +n = int(input("Введите кол-во элементов первого множества: ")) +n_set = newset(n) + +m = int(input("Введите кол-во элементов второго множества: ")) +m_set = newset(m) + +print(*n_set) +print(*m_set) + +s_set = sorted(n_set.intersection(m_set)) +print(*s_set) From 7a8ca8d8f4f84fdf13898cd9b6109f32eaa851f1 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 17:36:32 +0300 Subject: [PATCH 06/19] Task 22 --- HW_Seminar4.py | 1 - 1 file changed, 1 deletion(-) diff --git a/HW_Seminar4.py b/HW_Seminar4.py index 5841665..bd80675 100644 --- a/HW_Seminar4.py +++ b/HW_Seminar4.py @@ -4,7 +4,6 @@ def newset(num): new_set.add(int(input("Введите число для множества: "))) return new_set - n = int(input("Введите кол-во элементов первого множества: ")) n_set = newset(n) From 19ec5dbcb733845e84795e16644959be40b1f6bf Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 17:41:02 +0300 Subject: [PATCH 07/19] Task 22 --- .idea/Homework_Python.iml | 8 ++++++++ .idea/inspectionProfiles/profiles_settings.xml | 6 ++++++ .idea/misc.xml | 4 ++++ .idea/modules.xml | 8 ++++++++ .idea/vcs.xml | 6 ++++++ 5 files changed, 32 insertions(+) create mode 100644 .idea/Homework_Python.iml create mode 100644 .idea/inspectionProfiles/profiles_settings.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/modules.xml create mode 100644 .idea/vcs.xml diff --git a/.idea/Homework_Python.iml b/.idea/Homework_Python.iml new file mode 100644 index 0000000..7e7ac84 --- /dev/null +++ b/.idea/Homework_Python.iml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml new file mode 100644 index 0000000..105ce2d --- /dev/null +++ b/.idea/inspectionProfiles/profiles_settings.xml @@ -0,0 +1,6 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..306104c --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..9c55612 --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file From cf0cf7393df39eac0fd685acacc77325ab9e556e Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 17:53:21 +0300 Subject: [PATCH 08/19] Task 22 --- HW_Seminar4.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/HW_Seminar4.py b/HW_Seminar4.py index bd80675..985853f 100644 --- a/HW_Seminar4.py +++ b/HW_Seminar4.py @@ -1,3 +1,15 @@ +# Задача 22: +# Даны два неупорядоченных набора целых чисел (может быть, с +# повторениями). Выдать без повторений в порядке возрастания все те числа, которые +# встречаются в обоих наборах. +# Пользователь вводит 2 числа. n - кол-во элементов первого множества. m - кол-во +# элементов второго множества. Затем пользователь вводит сами элементы множеств. + +# 11 6 +# 2 4 6 8 10 12 10 8 6 4 2 +# 3 6 9 12 15 18 + +# 6 12 def newset(num): new_set = set() for i in range(num): From 8ae44ee0db57efec18da3567d06ab925bda319a3 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 17:56:01 +0300 Subject: [PATCH 09/19] Task 22 --- HW_Seminar2.py | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 HW_Seminar2.py diff --git a/HW_Seminar2.py b/HW_Seminar2.py deleted file mode 100644 index 4247511..0000000 --- a/HW_Seminar2.py +++ /dev/null @@ -1,49 +0,0 @@ -# Задача 10: На столе лежат n монеток. Некоторые из них лежат вверх решкой, -# а некоторые – гербом. Определите минимальное число монеток, которые нужно -# перевернуть, чтобы все монетки были повернуты вверх одной и той же стороной. -# Выведите минимальное количество монет, которые нужно перевернуть. - -n = int(input('Введите число монеток: ')) -from random import randint -a, b = 0, 0 -for i in range(n): - temp = randint(0, 1) - print(temp, end=' ') - if temp > 0: - a += 1 - else: - b += 1 -print() -if a > b: - print(f'Нужно перевернуть {b} монеток') -else: - print(f'Нужно перевернуть {a} монеток') - -# ========== -# Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. -# Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), -# а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму -# этих чисел S и их произведение P. Помогите Кате отгадать задуманные Петей числа. - -s = int(input('Введите сумму чисел: ')) -p = int(input('Введите произведение чисел: ')) -a = 0 -for x in range(s): - for y in range(s): - if x + y == s and x * y == p: - a += 1 - print(x, y) -if a == 0: - print('Вы ввели некорректные данные!') - -# =========== -# Задача 14: Требуется вывести все целые степени двойки -# (т.е. числа вида 2k), не превосходящие числа N. - -n = int(input('Введите число N: ')) -k = 0 -res = 1 -while res < n + 1: - print(res, end=' ') - k += 1 - res = 2 ** k From ad69d5bd2f2260e6d75a3261463c789f5a3defe0 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 16 Sep 2023 18:42:19 +0300 Subject: [PATCH 10/19] Task 24 --- HW_Seminar4.py | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/HW_Seminar4.py b/HW_Seminar4.py index 985853f..cd209e7 100644 --- a/HW_Seminar4.py +++ b/HW_Seminar4.py @@ -10,12 +10,14 @@ # 3 6 9 12 15 18 # 6 12 + def newset(num): new_set = set() for i in range(num): new_set.add(int(input("Введите число для множества: "))) return new_set + n = int(input("Введите кол-во элементов первого множества: ")) n_set = newset(n) @@ -27,3 +29,34 @@ def newset(num): s_set = sorted(n_set.intersection(m_set)) print(*s_set) + +# Задача 24: В фермерском хозяйстве в Карелии выращивают чернику. +# Она растет на круглой грядке, причем кусты высажены только по окружности. +# Таким образом, у каждого куста есть ровно два соседних. +# Всего на грядке растет N кустов с i ягод. +# Эти кусты обладают разной урожайностью, поэтому ко времени сбора на них +# выросло различное число ягод – на i-ом кусте выросло a +# В этом фермерском хозяйстве внедрена система автоматического сбора черники. +# Эта система состоит из управляющего модуля и нескольких собирающих модулей. +# Собирающий модуль за один заход, находясь непосредственно перед некоторым +# кустом, собирает ягоды с этого куста и с двух соседних с ним. +# Напишите программу для нахождения максимального числа ягод, которое может +# собрать за один заход собирающий модуль, находясь перед некоторым кустом +# заданной во входном файле грядки. + +# 4 -> 1 2 3 4 +# 9 + +from random import randint +# n = 10 # макс. кол-во ягод на кусте +list_1 = list(randint(1, 10) for i in range(int(input('Введите кол-во кустов: ')))) +print(list_1) +a = int(input('Введите № куста: ')) +res = 0 +if a == 1: + res = list_1[0] + list_1[1] + list_1[-1] +elif a == len(list_1): + res = list_1[-2] + list_1[-1] + list_1[0] +else: + res = list_1[a - 1] + list_1[a - 2] + list_1[a] +print(res, 'ягод') From 05bd92b390064d6184b410f77fc0a91cbe91c0e8 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 17:41:45 +0300 Subject: [PATCH 11/19] Task 30 --- HW_Seminar6.py | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 HW_Seminar6.py diff --git a/HW_Seminar6.py b/HW_Seminar6.py new file mode 100644 index 0000000..a3b3629 --- /dev/null +++ b/HW_Seminar6.py @@ -0,0 +1,11 @@ +# Заполните массив элементами арифметической прогрессии. +# Её первый элемент, разность и количество элементов нужно ввести с клавиатуры. +# Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d. +# Каждое число вводится с новой строки. + +a1 = int(input("Введите первый элемент арифметической прогрессии a1: ")) +d = int(input("Введите разность элемента арифметической прогрессии d: ")) +n = int(input("Введите количество элементов арифметической прогрессии n: ")) + +for i in range(n): + print(a1 + i * d, end=' ') \ No newline at end of file From a49b4e7a94b6ed8cb8808bcffade3003a3a9ea07 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 17:49:34 +0300 Subject: [PATCH 12/19] Task 30 --- HW_Seminar4.py | 62 -------------------------------------------------- 1 file changed, 62 deletions(-) delete mode 100644 HW_Seminar4.py diff --git a/HW_Seminar4.py b/HW_Seminar4.py deleted file mode 100644 index cd209e7..0000000 --- a/HW_Seminar4.py +++ /dev/null @@ -1,62 +0,0 @@ -# Задача 22: -# Даны два неупорядоченных набора целых чисел (может быть, с -# повторениями). Выдать без повторений в порядке возрастания все те числа, которые -# встречаются в обоих наборах. -# Пользователь вводит 2 числа. n - кол-во элементов первого множества. m - кол-во -# элементов второго множества. Затем пользователь вводит сами элементы множеств. - -# 11 6 -# 2 4 6 8 10 12 10 8 6 4 2 -# 3 6 9 12 15 18 - -# 6 12 - -def newset(num): - new_set = set() - for i in range(num): - new_set.add(int(input("Введите число для множества: "))) - return new_set - - -n = int(input("Введите кол-во элементов первого множества: ")) -n_set = newset(n) - -m = int(input("Введите кол-во элементов второго множества: ")) -m_set = newset(m) - -print(*n_set) -print(*m_set) - -s_set = sorted(n_set.intersection(m_set)) -print(*s_set) - -# Задача 24: В фермерском хозяйстве в Карелии выращивают чернику. -# Она растет на круглой грядке, причем кусты высажены только по окружности. -# Таким образом, у каждого куста есть ровно два соседних. -# Всего на грядке растет N кустов с i ягод. -# Эти кусты обладают разной урожайностью, поэтому ко времени сбора на них -# выросло различное число ягод – на i-ом кусте выросло a -# В этом фермерском хозяйстве внедрена система автоматического сбора черники. -# Эта система состоит из управляющего модуля и нескольких собирающих модулей. -# Собирающий модуль за один заход, находясь непосредственно перед некоторым -# кустом, собирает ягоды с этого куста и с двух соседних с ним. -# Напишите программу для нахождения максимального числа ягод, которое может -# собрать за один заход собирающий модуль, находясь перед некоторым кустом -# заданной во входном файле грядки. - -# 4 -> 1 2 3 4 -# 9 - -from random import randint -# n = 10 # макс. кол-во ягод на кусте -list_1 = list(randint(1, 10) for i in range(int(input('Введите кол-во кустов: ')))) -print(list_1) -a = int(input('Введите № куста: ')) -res = 0 -if a == 1: - res = list_1[0] + list_1[1] + list_1[-1] -elif a == len(list_1): - res = list_1[-2] + list_1[-1] + list_1[0] -else: - res = list_1[a - 1] + list_1[a - 2] + list_1[a] -print(res, 'ягод') From 8d962beae6d9f32d25f4b8410cbc8f97e6f2d26c Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 17:58:22 +0300 Subject: [PATCH 13/19] Task 30 --- HW_Seminar2.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 HW_Seminar2.py diff --git a/HW_Seminar2.py b/HW_Seminar2.py new file mode 100644 index 0000000..4247511 --- /dev/null +++ b/HW_Seminar2.py @@ -0,0 +1,49 @@ +# Задача 10: На столе лежат n монеток. Некоторые из них лежат вверх решкой, +# а некоторые – гербом. Определите минимальное число монеток, которые нужно +# перевернуть, чтобы все монетки были повернуты вверх одной и той же стороной. +# Выведите минимальное количество монет, которые нужно перевернуть. + +n = int(input('Введите число монеток: ')) +from random import randint +a, b = 0, 0 +for i in range(n): + temp = randint(0, 1) + print(temp, end=' ') + if temp > 0: + a += 1 + else: + b += 1 +print() +if a > b: + print(f'Нужно перевернуть {b} монеток') +else: + print(f'Нужно перевернуть {a} монеток') + +# ========== +# Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. +# Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), +# а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму +# этих чисел S и их произведение P. Помогите Кате отгадать задуманные Петей числа. + +s = int(input('Введите сумму чисел: ')) +p = int(input('Введите произведение чисел: ')) +a = 0 +for x in range(s): + for y in range(s): + if x + y == s and x * y == p: + a += 1 + print(x, y) +if a == 0: + print('Вы ввели некорректные данные!') + +# =========== +# Задача 14: Требуется вывести все целые степени двойки +# (т.е. числа вида 2k), не превосходящие числа N. + +n = int(input('Введите число N: ')) +k = 0 +res = 1 +while res < n + 1: + print(res, end=' ') + k += 1 + res = 2 ** k From 41d2e26782690b87ecb67834c8a70bb985f9fe01 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 17:58:22 +0300 Subject: [PATCH 14/19] Task 30 --- HW_Seminar2.py | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 HW_Seminar2.py diff --git a/HW_Seminar2.py b/HW_Seminar2.py new file mode 100644 index 0000000..4247511 --- /dev/null +++ b/HW_Seminar2.py @@ -0,0 +1,49 @@ +# Задача 10: На столе лежат n монеток. Некоторые из них лежат вверх решкой, +# а некоторые – гербом. Определите минимальное число монеток, которые нужно +# перевернуть, чтобы все монетки были повернуты вверх одной и той же стороной. +# Выведите минимальное количество монет, которые нужно перевернуть. + +n = int(input('Введите число монеток: ')) +from random import randint +a, b = 0, 0 +for i in range(n): + temp = randint(0, 1) + print(temp, end=' ') + if temp > 0: + a += 1 + else: + b += 1 +print() +if a > b: + print(f'Нужно перевернуть {b} монеток') +else: + print(f'Нужно перевернуть {a} монеток') + +# ========== +# Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. +# Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), +# а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму +# этих чисел S и их произведение P. Помогите Кате отгадать задуманные Петей числа. + +s = int(input('Введите сумму чисел: ')) +p = int(input('Введите произведение чисел: ')) +a = 0 +for x in range(s): + for y in range(s): + if x + y == s and x * y == p: + a += 1 + print(x, y) +if a == 0: + print('Вы ввели некорректные данные!') + +# =========== +# Задача 14: Требуется вывести все целые степени двойки +# (т.е. числа вида 2k), не превосходящие числа N. + +n = int(input('Введите число N: ')) +k = 0 +res = 1 +while res < n + 1: + print(res, end=' ') + k += 1 + res = 2 ** k From 24690bd8efd2a990c87dbc4b7f59826141c8a4f0 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 18:04:15 +0300 Subject: [PATCH 15/19] Delete HW_Seminar2.py Deleted HW_Seminar2.py --- HW_Seminar2.py | 49 ------------------------------------------------- 1 file changed, 49 deletions(-) delete mode 100644 HW_Seminar2.py diff --git a/HW_Seminar2.py b/HW_Seminar2.py deleted file mode 100644 index 4247511..0000000 --- a/HW_Seminar2.py +++ /dev/null @@ -1,49 +0,0 @@ -# Задача 10: На столе лежат n монеток. Некоторые из них лежат вверх решкой, -# а некоторые – гербом. Определите минимальное число монеток, которые нужно -# перевернуть, чтобы все монетки были повернуты вверх одной и той же стороной. -# Выведите минимальное количество монет, которые нужно перевернуть. - -n = int(input('Введите число монеток: ')) -from random import randint -a, b = 0, 0 -for i in range(n): - temp = randint(0, 1) - print(temp, end=' ') - if temp > 0: - a += 1 - else: - b += 1 -print() -if a > b: - print(f'Нужно перевернуть {b} монеток') -else: - print(f'Нужно перевернуть {a} монеток') - -# ========== -# Задача 12: Петя и Катя – брат и сестра. Петя – студент, а Катя – школьница. -# Петя помогает Кате по математике. Он задумывает два натуральных числа X и Y (X,Y≤1000), -# а Катя должна их отгадать. Для этого Петя делает две подсказки. Он называет сумму -# этих чисел S и их произведение P. Помогите Кате отгадать задуманные Петей числа. - -s = int(input('Введите сумму чисел: ')) -p = int(input('Введите произведение чисел: ')) -a = 0 -for x in range(s): - for y in range(s): - if x + y == s and x * y == p: - a += 1 - print(x, y) -if a == 0: - print('Вы ввели некорректные данные!') - -# =========== -# Задача 14: Требуется вывести все целые степени двойки -# (т.е. числа вида 2k), не превосходящие числа N. - -n = int(input('Введите число N: ')) -k = 0 -res = 1 -while res < n + 1: - print(res, end=' ') - k += 1 - res = 2 ** k From a42246a414ace6d1587819a806b8f7ccf8d1276f Mon Sep 17 00:00:00 2001 From: tvkalex Date: Sat, 23 Sep 2023 19:03:28 +0300 Subject: [PATCH 16/19] Task 32 --- HW_Seminar6.py | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/HW_Seminar6.py b/HW_Seminar6.py index a3b3629..b6fe8b7 100644 --- a/HW_Seminar6.py +++ b/HW_Seminar6.py @@ -1,11 +1,29 @@ -# Заполните массив элементами арифметической прогрессии. +# Задача 30: Заполните массив элементами арифметической прогрессии. # Её первый элемент, разность и количество элементов нужно ввести с клавиатуры. # Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d. # Каждое число вводится с новой строки. +# Ввод: 7 2 5 +# Вывод: 7 9 11 13 15 a1 = int(input("Введите первый элемент арифметической прогрессии a1: ")) d = int(input("Введите разность элемента арифметической прогрессии d: ")) n = int(input("Введите количество элементов арифметической прогрессии n: ")) for i in range(n): - print(a1 + i * d, end=' ') \ No newline at end of file + print(a1 + i * d, end=' ') + +# Задача 32: Определить индексы элементов массива (списка), +# значения которых принадлежат заданному диапазону +# (т.е. не меньше заданного минимума и не больше заданного максимума) +# Ввод: [-5, 9, 0, 3, -1, -2, 1, 4,-2,10,2,0,-9,8,10,-9, 0, -5, -5, 7] +# Вывод: [1, 9, 13, 14, 19] + +list_1 = [-5, 9, 0, 3, -1, -2, 1, 4, -2, 10, 2, 0, -9, 8, 10, -9, 0, -5, -5, 7] +min_num = int(input("Введите минимальное значение элемента: ")) +max_num = int(input("Введите максимальное значение элемента: ")) +while min_num > max_num: + n = input("Вы ошиблись!\nМаксимальное значение элемента не может быть меньше минимального значения элемента: ") + +for i in range(len(list_1)): + if min_num <= list_1[i] <= max_num: + print(i, end=' ') \ No newline at end of file From 4974bc64c3a8a325a1906aa706f3b30a6335d385 Mon Sep 17 00:00:00 2001 From: tvkalex Date: Mon, 2 Oct 2023 23:29:33 +0300 Subject: [PATCH 17/19] Task 38 --- phonebook.py | 192 ++++++++++++++++++++++++++++++++++++++++++++++++++ phonebook.txt | 7 ++ 2 files changed, 199 insertions(+) create mode 100644 phonebook.py create mode 100644 phonebook.txt diff --git a/phonebook.py b/phonebook.py new file mode 100644 index 0000000..64fc87d --- /dev/null +++ b/phonebook.py @@ -0,0 +1,192 @@ +def choose_action(phonebook): + while True: + print('Что вы хотите сделать?') + user_choice = input('1 - Импортировать данные\n2 - Найти контакт\n3 - Добавить контакт\n\ +4 - Изменить контакт\n5 - Удалить контакт\n6 - Просмотреть все контакты\n0 - Выйти из приложения\n') + print() + if user_choice == '1': + file_to_add = input('Введите название импортируемого файла: ') + import_data(file_to_add, phonebook) + elif user_choice == '2': + contact_list = read_file_to_dict(phonebook) + find_number(contact_list) + elif user_choice == '3': + add_phone_number(phonebook) + elif user_choice == '4': + change_phone_number(phonebook) + elif user_choice == '5': + delete_contact(phonebook) + elif user_choice == '6': + show_phonebook(phonebook) + elif user_choice == '0': + print('До свидания!') + break + else: + print('Неправильно выбрана команда!') + print() + continue + + + + +def import_data(file_to_add, phonebook): + try: + with open(file_to_add, 'r', encoding='utf-8') as new_contacts, open(phonebook, 'a', encoding='utf-8') as file: + contacts_to_add = new_contacts.readlines() + file.writelines(contacts_to_add) + except FileNotFoundError: + print(f'{file_to_add} не найден') + + + + +def read_file_to_dict(file_name): + with open(file_name, 'r', encoding='utf-8') as file: + lines = file.readlines() + headers = ['Фамилия', 'Имя', 'Номер телефона'] + contact_list = [] + for line in lines: + line = line.strip().split() + contact_list.append(dict(zip(headers, line))) + return contact_list + + + + +def read_file_to_list(file_name): + with open(file_name, 'r', encoding='utf-8') as file: + contact_list = [] + for line in file.readlines(): + contact_list.append(line.split()) + return contact_list + + + + +def search_parameters(): + print('По какому полю выполнить поиск?') + search_field = input('1 - по фамилии\n2 - по имени\n3 - по номеру телефона\n') + print() + search_value = None + if search_field == '1': + search_value = input('Введите фамилию для поиска: ') + print() + elif search_field == '2': + search_value = input('Введите имя для поиска: ') + print() + elif search_field == '3': + search_value = input('Введите номер для поиска: ') + print() + return search_field, search_value + + + + +def find_number(contact_list): + search_field, search_value = search_parameters() + search_value_dict = {'1': 'Фамилия', '2': 'Имя', '3': 'Номер телефона'} + found_contacts = [] + for contact in contact_list: + if contact[search_value_dict[search_field]] == search_value: + found_contacts.append(contact) + if len(found_contacts) == 0: + print('Контакт не найден!') + else: + print_contacts(found_contacts) + print() + + + + +def get_new_number(): + last_name = input('Введите фамилию: ') + first_name = input('Введите имя: ') + phone_number = input('Введите номер телефона: ') + return last_name, first_name, phone_number + + + + +def add_phone_number(file_name): + info = ' '.join(get_new_number()) + with open(file_name, 'a', encoding='utf-8') as file: + file.write(f'{info}\n') + + + + +def show_phonebook(file_name): + list_of_contacts = sorted(read_file_to_dict(file_name), key=lambda x: x['Фамилия']) + print_contacts(list_of_contacts) + print() + return list_of_contacts + + + + +def search_to_modify(contact_list: list): + search_field, search_value = search_parameters() + search_result = [] + for contact in contact_list: + if contact[int(search_field) - 1] == search_value: + search_result.append(contact) + if len(search_result) == 1: + return search_result[0] + elif len(search_result) > 1: + print('Найдено несколько контактов') + for i in range(len(search_result)): + print(f'{i + 1} - {search_result[i]}') + num_count = int(input('Выберите номер контакта, который нужно изменить/удалить: ')) + return search_result[num_count - 1] + else: + print('Контакт не найден') + print() + + + + +def change_phone_number(file_name): + contact_list = read_file_to_list(file_name) + number_to_change = search_to_modify(contact_list) + contact_list.remove(number_to_change) + print('Какое поле вы хотите изменить?') + field = input('1 - Фамилия\n2 - Имя\n3 - Номер телефона\n') + if field == '1': + number_to_change[0] = input('Введите фамилию: ') + elif field == '2': + number_to_change[1] = input('Введите имя: ') + elif field == '3': + number_to_change[2] = input('Введите номер телефона: ') + contact_list.append(number_to_change) + with open(file_name, 'w', encoding='utf-8') as file: + for contact in contact_list: + line = ' '.join(contact) + '\n' + file.write(line) + + + + +def delete_contact(file_name): + contact_list = read_file_to_list(file_name) + number_to_change = search_to_modify(contact_list) + contact_list.remove(number_to_change) + with open(file_name, 'w', encoding='utf-8') as file: + for contact in contact_list: + line = ' '.join(contact) + '\n' + file.write(line) + + + + +def print_contacts(contact_list: list): + for contact in contact_list: + for key, value in contact.items(): + print(f'{key}: {value:12}', end='') + print() + + + + +if __name__ == '__main__': + file = 'Phonebook.txt' + choose_action(file) diff --git a/phonebook.txt b/phonebook.txt new file mode 100644 index 0000000..c50bfab --- /dev/null +++ b/phonebook.txt @@ -0,0 +1,7 @@ +Петров Петр 12345678903 +Сидоров Сидор 12345678904 +Абрамов Абрам 12345678905 +Иванов Иван 12345678902 +Петров Петр 12345678903 +Сидоров Сидор 12345678904 +Абрамов Абрам 12345678905 From 0fadfdb6ef86ba316c50b303f8d97efaa688d9ea Mon Sep 17 00:00:00 2001 From: tvkalex Date: Mon, 2 Oct 2023 23:33:15 +0300 Subject: [PATCH 18/19] Task 38 --- HW_Seminar6.py | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/HW_Seminar6.py b/HW_Seminar6.py index b6fe8b7..cce479f 100644 --- a/HW_Seminar6.py +++ b/HW_Seminar6.py @@ -18,12 +18,20 @@ # Ввод: [-5, 9, 0, 3, -1, -2, 1, 4,-2,10,2,0,-9,8,10,-9, 0, -5, -5, 7] # Вывод: [1, 9, 13, 14, 19] +# list_1 = [-5, 9, 0, 3, -1, -2, 1, 4, -2, 10, 2, 0, -9, 8, 10, -9, 0, -5, -5, 7] +# min_num = int(input("Введите минимальное значение элемента: ")) +# max_num = int(input("Введите максимальное значение элемента: ")) +# while min_num > max_num: +# n = input("Вы ошиблись!\nМаксимальное значение элемента не может быть меньше минимального значения элемента: ") +# +# for i in range(len(list_1)): +# if min_num <= list_1[i] <= max_num: +# print(i, end=' ') + list_1 = [-5, 9, 0, 3, -1, -2, 1, 4, -2, 10, 2, 0, -9, 8, 10, -9, 0, -5, -5, 7] -min_num = int(input("Введите минимальное значение элемента: ")) -max_num = int(input("Введите максимальное значение элемента: ")) -while min_num > max_num: - n = input("Вы ошиблись!\nМаксимальное значение элемента не может быть меньше минимального значения элемента: ") +min_number = 0 +max_number = 10 for i in range(len(list_1)): - if min_num <= list_1[i] <= max_num: - print(i, end=' ') \ No newline at end of file + if min_number <= list_1[i] <= max_number: + print(i, end='\n') From 0e672871f08e84df24fa53bce4cb24816e0c78ef Mon Sep 17 00:00:00 2001 From: tvkalex Date: Mon, 2 Oct 2023 23:34:08 +0300 Subject: [PATCH 19/19] Task 38 --- HW_Seminar6.py | 37 ------------------------------------- 1 file changed, 37 deletions(-) delete mode 100644 HW_Seminar6.py diff --git a/HW_Seminar6.py b/HW_Seminar6.py deleted file mode 100644 index cce479f..0000000 --- a/HW_Seminar6.py +++ /dev/null @@ -1,37 +0,0 @@ -# Задача 30: Заполните массив элементами арифметической прогрессии. -# Её первый элемент, разность и количество элементов нужно ввести с клавиатуры. -# Формула для получения n-го члена прогрессии: an = a1 + (n-1) * d. -# Каждое число вводится с новой строки. -# Ввод: 7 2 5 -# Вывод: 7 9 11 13 15 - -a1 = int(input("Введите первый элемент арифметической прогрессии a1: ")) -d = int(input("Введите разность элемента арифметической прогрессии d: ")) -n = int(input("Введите количество элементов арифметической прогрессии n: ")) - -for i in range(n): - print(a1 + i * d, end=' ') - -# Задача 32: Определить индексы элементов массива (списка), -# значения которых принадлежат заданному диапазону -# (т.е. не меньше заданного минимума и не больше заданного максимума) -# Ввод: [-5, 9, 0, 3, -1, -2, 1, 4,-2,10,2,0,-9,8,10,-9, 0, -5, -5, 7] -# Вывод: [1, 9, 13, 14, 19] - -# list_1 = [-5, 9, 0, 3, -1, -2, 1, 4, -2, 10, 2, 0, -9, 8, 10, -9, 0, -5, -5, 7] -# min_num = int(input("Введите минимальное значение элемента: ")) -# max_num = int(input("Введите максимальное значение элемента: ")) -# while min_num > max_num: -# n = input("Вы ошиблись!\nМаксимальное значение элемента не может быть меньше минимального значения элемента: ") -# -# for i in range(len(list_1)): -# if min_num <= list_1[i] <= max_num: -# print(i, end=' ') - -list_1 = [-5, 9, 0, 3, -1, -2, 1, 4, -2, 10, 2, 0, -9, 8, 10, -9, 0, -5, -5, 7] -min_number = 0 -max_number = 10 - -for i in range(len(list_1)): - if min_number <= list_1[i] <= max_number: - print(i, end='\n')