/
Nick_Wern
/
SUSU
Обзор
Документация
Войти
/
Nick_Wern
/
SUSU
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
Python/Lesson5.py
214 строк
11 KB
Nick_Wern
Добавлены работы по дисциплине Программирование на Python
03 май 2026, 19:26
03 май 2026, 19:26
913d1bd
Код
Авторство
О чём код?
import os # cls для Windows # clear для Linux cls = "clear" def lesson5_1(): while True: os.system(cls) print("Задание 5.1") print("Нефтедобывающая компания, в которой Вы работаете старшим помощником младшего аналитика, получила права на разработку нового нефтеносного участка.") print("Этот участок имеет форму прямоугольника размером M×N, разбитого для удобства разведки на квадраты единичной площади.") print("Геологи оценили суточную добычу нефти с каждого квадрата в aij.") print("Руководство компании решило для начала установить на участке две скважины и поручило Вам определить их положение.") print("Скважина занимает один из участков и выкачивает нефть с него в полном объеме суточной добычи.") print("Кроме того, она может выкачивать половину суточной добычи с соседних (по вертикали, горизонтали и диагонали) участков.") print("Вы предложили следующий алгоритм решения этой задачи: первую скважину ставим на тот участок, на котором обеспечивается максимальный объем добычи.") print("Вторую скважину ставим так, чтобы она не мешала первой (т.е. ни один участок не был бы соседним для обеих скважин) и обеспечивала бы максимальный объем добычи.") print("Если существует несколько вариантов установки первой скважины, из них выбирается тот, при котором объем добычи второй максимален.") print("Несмотря на то, что предложенный алгоритм не является оптимальным, начальство утвердило его…") print("Теперь задача – напишите программу, рассчитывающую суммарную суточную добычу нефти с обеих скважин при применении указанного алгоритма.") value = input("Введите значения M и N (exit для выхода): ") if value == "exit": break try: M, N = list(map(int, value.split())) area = [ list(map(int, input(f"Введите знаяения ряда {i + 1}: ").split())) for i in range(M) ] # M, N = 4, 6 # area = [ # [ 1, 2, 3, 4, 5, 6 ], # [ 2, 3, 4, 5, 6, 7 ], # [ 3, 4, 5, 6, 7, 8 ], # [ 4, 5, 6, 7, 8, 9 ] # ] maxProd1 = 0 mCoord1 = 0 nCoord1 = 0 for m in range(M): for n in range(N): curProd = 0 for a in range(max(0, m - 1), min(m + 1, M - 1) + 1): for b in range(max(0, n - 1), min(n + 1, N - 1) + 1): if m == a and n == b: curProd += area[a][b] else: curProd += area[a][b] / 2 # upLimit = m == 0 # leftLimit = n == 0 # downLimit = m == M - 1 # rightLimit = n == N - 1 # curProd += area[m][j] # if not upLimit: curProd += area[m - 1][n] / 2 # if not leftLimit: curProd += area[m][n - 1] / 2 # if not downLimit: curProd += area[m + 1][n] / 2 # if not rightLimit: curProd += area[m][n + 1] / 2 # if not upLimit and not leftLimit: curProd += area[m - 1][n - 1] / 2 # if not upLimit and not rightLimit: curProd += area[m - 1][n + 1] / 2 # if not downLimit and not leftLimit: curProd += area[m + 1][n - 1] / 2 # if not downLimit and not rightLimit: curProd += area[m + 1][n + 1] / 2 if curProd > maxProd1: maxProd1 = curProd mCoord1 = m nCoord1 = n maxProd2 = 0 mCoord2 = 0 nCoord2 = 0 for m in range(M): for n in range(N): curProd = 0 if abs(m - mCoord1) <= 2 and abs(n - nCoord1) <= 2: continue for a in range(max(0, m - 1), min(m + 1, M - 1) + 1): for b in range(max(0, n - 1), min(n + 1, N - 1) + 1): if m == a and n == b: curProd += area[a][b] else: curProd += area[a][b] / 2 if curProd > maxProd2: maxProd2 = curProd mCoord2 = m nCoord2 = n print("Добыча 1 скважины:", maxProd1) print("Координаты 1 скважины:", mCoord1, nCoord1) print("Добыча 2 скважины", maxProd2) print("Координаты 2 скважины:", mCoord2, nCoord2) print("Сумма:", maxProd1 + maxProd2) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson4_2(): while True: os.system(cls) print("Задание 4.2") print("Девятикласснику Пете неинтересно изучать тему «Одномерные массивы» на уроках информатики: он давным-давно научился работать с массивами во время подготовки к олимпиадам.") print("Однако учитель требует выполнять все задания, многие из которых кажутся Пете слишком простыми.") print("Однажды Петя попросил учителя дать ему задание посложнее.") print("Учитель предложил ему решить следующую задачу: найти максимальный элемент массива из числа повторяющихся минимальное количество раз.") print("Например, для массива 6, 4, 6, 6, 4, 2, 2 таким элементом будет 4 (он повторяется два раза, а элемент со значением 6 – три).") print("Хоть и не с первого раза, но Петя справился с этой непростой задачей. Сможете ли Вы решить ее?") value = input("Введите количество элементов массива (exit для выхода): ") if value == "exit": break try: array = [ int(input(f"Введите элемент {i + 1}: ")) for i in range(int(value)) ] counter = { i: 0 for i in set(array) } for elem in array: counter[elem] += 1 maxValues = [] minCount = int(value) for value, count in counter.items(): if minCount == count: maxValues.append(value) elif minCount > count: maxValues = [ value ] minCount = count print("Количество повторений:", minCount) print("Элемент:", max(maxValues)) except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson3_1(): while True: os.system(cls) print("Задание 3.1") print("Вывести все простые числа от M до N включительно.") value = input("Введите начало и конец отсчета через пробел (exit для выхода): ") if value == "exit": break try: start, end = list(map(int, value.split())) absent = True for number in range(max(3, start), end + 1): cont = False for divider in range(2, number // 2 + 1): if number % divider == 0: cont = True break if cont: continue absent = False print(number) if absent: print("Absent") except: print("Некорректный ввод") input("Нажмите Enter что бы продолжить") def lesson3_2(): while True: os.system(cls) print("Задание 3.2") print("Клетки на шахматной доске идентифицируются буквой и цифрой. Буква определяет положение клетки по горизонтали, а цифра – по вертикали, как показано на рисунке ниже.") print("Ваша программа должна запрашивать у пользователя координаты клетки.") print("Используйте условное выражение для определения того, с какой клетки – белой или черной – начинается столбец.") print("Затем при помощи обычной арифметики необходимо определить цвет конкретной клетки.") print("Например, если пользователь ввел a1, программа должна определить, что клетка с этими координатами черная. Если d5 – белая.") value = input("Ввведите координаты клетки (exit для выхода): ") if value == "exit": break try: xList = { "a": 1, "b": 2, "c": 3, "d": 4, "e": 5, "f": 6, "g": 7, "h": 8 } x = xList[value[0]] y = int(value[1]) if x < 1 or x > 8 or y < 1 or y > 8: print("отсутствует") elif (x + y) % 2 == 0: print("черная") else: print("белая") except: print("отсутствует") input("Нажмите Enter что бы продолжить") # lesson5_1() word = "Python" for letter in word: if letter == 'h': continue print(letter, end=' ')