Файл: Лабораторные работы Султонов Фирдавс.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 14.03.2024

Просмотров: 149

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

СОДЕРЖАНИЕ

Оглавление

Лабораторная работа №1 «Запись арифметических выражения на языке Python. Обработка исключений. Запись информации в текстовый файл. Создание пользовательских функций»

Лабораторная работа №2 «Программирование алгоритмов разветвляющихся структур. Нахождение максимального и минимального значения»

Лабораторная работа №3 «Создание классов. Создание экземпляров классов. Создание конструкторов»

Часть 1

2 Часть

Арифметическое выражение лр1: Арифметическое выражение лр2:

Лабораторная работа №4 «Создание меню в Python-программе. Инкапсуляция»

Лабораторная работа №5 «Табулирование функции»

Лабораторная работа №6 «Работа с библиотеками Python»

Лабораторная работа № 7 «Создание приложений, использующих итеративные циклические структуры»

3. Выполнение проекта и получение результатов

4.Доказательство правильности работы программ

Лабораторная работа №8 «Программирование Python-приложений с использованием библиотеки Tkinter»

1.Задание на разработку проекта

2.Разработка алгоритма

3.Выполнение проекта и получение результатов

4.Доказательство правильности работы программ

Лабораторная работа №9 «Работа с кортежами»

Лабораторная работа №10 «Работа со словарями»

1 Часть

2. Разработка алгоритма

2 Часть

Лабораторная работа №11 «Работа со списками»

Лабораторная работа №12 «Базовые алгоритмы обработки списков и их сортировка»

Лабораторная работа №13 «Работа со вложенными последовательностями»

Дополнительное задание «Реализация пошаговой детализации»

3. Выполнение проекта и получение результатов

  1. Разработка алгоритма

Ниже представлена блок-схема функции для нахождения среднего арифметического чисел (Рис.1).

Рис. 30 - Блок-схема функции average(), для нахождения среднего арифметического

Ниже представлена блок-схема функции another_list() по формирования нового списка по заданному условию (Рис.2).

Рис. 31 - Блок-схема функции another_list(), для формирования нового списка

На Рис.3 показана блок-схема функции insertion_sort(), которая сортирует исходный список методом бинарных вставок.

Рис. 32 - Блок-схема функции insertion_sort(), для сортировки методом бинарных вставок

На Рис.4 показана блок-схема функции bubble() для сортировки результирующего списка методом простого обмена (1 способ).

Рис. 33 - Блок-схема функции bubble(), для сортировки методом простого обмена(1 способ)

Блок-схема основной части программы представлена на Рис. 5.

Рис. 34 - Блок-схема основной части программы

Код функции для вычисления среднего значения элементов списка:

#функция для нахождения среднего значения

def average(*spisoks):

k = 0

s = 0

for i in spisoks:

if i % 2 == 0:

k += 1

s += i

d = s/k

return d

Код функции для составления нового списка по указанному условию:

#функция для формирования нового списка

def another_list(*avr):

chislo = module.average(*avr)

spisok2 = []

for i in avr:

if i > chislo:

spisok2.append(i)

return spisok2

Код функции по сортировке списка методом бинарных вставок:

#Сортировка методом бинарных вставок

def insertion_sort(*b):

a = []

for k in b:

a.append(k)

for i in range(len(a)):

x = a[i]

left = 0

right = i - 1

while left < right:

m = left + (right - left) // 2

if x < a[m]:


right = m

else:

left = m + 1

for j in range(i, left + 1, -1):

a[j] = a[j - 1]

a[left] = x

return a

Код функции для сортировки списка методом простого обмена (1 способ)

#Сортировка методом простого обмена (1 способ)

def bubble(*a):

array = []

for k in a:

array.append(k)

for i in range(len(array)-1):

for j in range(len(array)-i-1):

if array[j] > array[j+1]:

buff = array[j]

array[j] = array[j+1]

array[j+1] = buff

return array

Код основной части программы:

import random

spisok = []

n = int(input('Введите количество элементов: '))

spisok = random.sample(range(1000), n)

print('Исходный список: ', spisok)

avr = average(spisok)

print('Среднее арифметическое равно: ', str(avr))

an_lst = another_list(spisok)

print("Другой сформированный список: ", an_lst)

in_sort = insertion_sort(*spisok)

print('Список после сортировки методом бинарных вставок: ', in_sort)

bub = bubble(*an_lst)

print('Результирующий список после сортировки методом простого обмена(1 способ): ', bub)


  1. Выполнение проекта и получение результатов:

На рисунке 6 показаны результаты работы программы;

Рисунок 6 - Результат работы программы

Лабораторная работа №13 «Работа со вложенными последовательностями»

  1. Задание на разработку проекта

Дана динамическая вложенная последовательность. Элементы списка

могут принимать целые значения от 0 до 1000 включительно. Опишите

алгоритм, который выполняет нахождение среднего арифметического

всех четных элементов. Разработайте функцию, который формирует новый список, из тех элементов исходной последовательности, значения которых больше найденного числа. Полученные результаты записать в текстовый файл с помощью функции. Так же вывести элементы вложенной последовательности.

Для выполнения задания следовало разработать:

  • Функцию vlozh_spiski(*arg) для формирования вложенной последовательности, которая в качестве аргумента принимает размерность последовательности.

  • В функции vlozh_spiski(*arg) организовать вывод вложенной последовательности.

  • Функцию prnt(*arg) для вывода элементов вложенной последовательности.

  • Функцию median(*arg) для нахождения среднего арифметического чисел вложенной последовательности.

  • В функции median(*arg) организовать вывод среднего арифметического чисел.

  • Функцию drugoy_spisok(*arg) для формирования нового списка из тех элементов вложенной последовательности значения, которых больше среднего арифметического чисел.

  • В функции drugoy_spisok(*arg) организовать вывод нового сформированного списка.

  • Функцию txt(*arg) для записи полученных результатов в текстовый файл.

В основной части программы организовать ввод размерности последовательности и вызов соответствующих подпрограмм.

Формализация задания:

Для того, чтобы вывести элементы вложенной последовательности надо пройтись по элементам вложенных списков, через вложенные циклы. После во вложенном цикле написать этот код «print(" %3d"% a[i][j], end = ' ')», который будет выводить элементы последовательности. Далее во внешнем цикле написать вот этот код «print()», который будет делать отступы после окончания каждой итерации вложенного цикла. Тем самым элементы вложенной последовательности будут выведены в матричном виде.


  1. Разработка алгоритма

На рис. 1 показана блок-схема функции vlozh_spiski(*arg), которая формирует вложенную последовательность.

Рис. 35 - Блок-схема функции vlozh_spiski(), которая формирует вложенную последовательность

На рис. 2 показана блок-схема функции prnt(*arg), которая выводит элементы вложенной последовательности в матричном виде.

Рис. 36 - Блок-схема функции prnt(), которая выводит элементы вложенной последовательности

На рис. 3 показана блок-схема функции median(*arg), которая находит среднее арифметическое элементов вложенной последовательности.

Рис. 37 - Блок-схема функции median(), которая выводит среднее арифметическое элементов вложенной последовательности

На рис. 3 показана блок-схема функции drugoy_spisok(*arg), которая создает новый список из тех элементов вложенной последовательности, значения которых больше среднего арифметического этих элементов.

Рис. 38 - Блок-схема функции drugoy_spisok(), которая создает новый список, согласно заданному условию

На рис.5 показана блок-схема функции txt(*arg), которая записывает полученные результаты в текстовый файл.

Рис. 39 - Блок-схема функции txt(), которая записывает полученные результаты в текстовый файл

Рис. 40 - Блок-схема основной части программы

На рис. 6 показана блок-схема основной части программы.

Ниже представлен код программы

Код программы:

import random

n = int(input('Введите количество строк: '))


m = int(input('Введите количество столбцов: '))

#Функция реализующая создание вложенной последовательности

def vlozh_spiski(*arg):

a = []

for i in range(n):

a.append([])

for j in range(m):

a[i] = random.sample(range(1000), m)

return a

#Функция реализующая вывод элементов вложенной последовательности

def prnt(*arg):

for i in range(n):

for j in range(m):

print(" %3d"% a[i][j], end = ' ')

print()

#Функция которая находит среднее арифметическое чисел вложенной последовательности

def median(*avr):

sum = 0

chet = 0

for i in range(n):

for j in range(m):

if a[i][j] % 2 == 0:

chet += 1

sum += a[i][j]

avr = sum // chet

return avr

#Функция реализующая создание нового списка из элементов вложенной

#последовательности, которые больше среднего арифметического этих чисел

def drugoy_spisok(*arg):

new = []

for i in range(n):

for j in range(m):

if a[i][j] > median:

new.append(a[i][j])

return new

#Функция реализующая запись полученных результатов в текстовый файл

def txt(*arg):

txt = open('C:/Users/User/Desktop/rezults.txt', 'w+', encoding = 'utf-8')

txt.write('Исходная вложенная последовательность')

txt.write('\n')

for i in range(n):

txt.write(str(a[i]))

txt.write('\n')

txt.write('\n Среднее арифметическое чисел равна:')

txt.write('\n')

txt.write(str(median))

txt.write('\n')

txt.write('Другой сформированный список: ')

txt.write('\n')

txt.write(str(new))

txt.write('\n')

txt.close()

a = vlozh_spiski(n, m)

print('Элементы вложенной последовательности: ')

prnt(a, m, n)

median = median(a, n, m)

print('Среднее арифметическое чисел равна: ', median)

new = drugoy_spisok(n, m, a)

print('Другой сформированный список: ', new)

txt(median, a, n)