Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабы / отчет прога лаба 5.docx
Скачиваний:
0
Добавлен:
11.02.2026
Размер:
305.26 Кб
Скачать

Ф ЕДЕРАЛЬНОЕ АГЕНСТВО ВОЗДУШНОГО ТРАНСПОРТА

(РОСАВИАЦИЯ)

«МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ГРАЖДАНСКОЙ АВИАЦИИ» (МГТУ ГА)

Кафедра вычислительных машин, комплексов, сетей и систем.

Лабораторная работа защищена с оценкой ____________________

____________________

(подпись преподавателя, дата)

ЛАБОРАТОРНАЯ РАБОТА №5

по дисциплине «Современные технологии программирования».

Вариант №16

Тема: «Часть 1. Циклические конструкции. Итерационные алгоритмы. Цикл while. Часть 2. Циклические конструкции. Итерационные алгоритмы. Цикл for.»

Выполнила студентка группы ИС 2-1

Магальник Екатерина Борисовна

Руководитель: Гаранин Сергей Александрович

МОСКВА – 2023

Часть 1. Цель работы: изучить синтаксис циклической конструкции while языка Python для программирования итерационных алгоритмов, продемонстрировать возможности конструкции while на примере разработке интерактивных приложений.

Основное задание

Разработать интерактивную программу «Try to Guess the Number» (Попробуй угадать число), которая эмулирует игру на отгадывание числа. Суть игры сводиться к следующему: компьютер генерирует случайное число из диапазона, к примеру, от 1 до 100, а пользователь пытается отгадать число. При каждой попытке компьютер «подсказывает» игроку, как соизмеряется вариант игрока с загаданным компьютером числом: загаданное число больше или меньше указанного. Как только игрок отгадывает число, компьютер должен «поздравить» его с выводом на экран угаданного числа и количества затраченных игроком попыток. Далее компьютер может «предложить» повторно сыграть в игру или выйти.

Для универсальности можно добавить возможность выбора диапазона генерирования компьютером случайных чисел, а также задание ограничения на количество попыток. В случае, если игрок не укладывается в заданное количество попыток, программа должна выводить надпись «Game Over» из лабораторной работы 2.

Текст программы:

def get_user_input(): #функция проверки ввода чисел while True: try: return int(input("Введите число: ")) except ValueError: print("Недопустимый формат ввода. Попробуйте ввести снова") import random print("Введите дипапазон значений:") a = get_user_input() b = get_user_input() print("Введите количество попыток:") c = get_user_input() s = "" while s != "Нет": c2 = 0 number = random.randint(a, b) print("Введите ваш вариант") inp = get_user_input() while number != inp: if number < inp: print("Ваше число больше загаданного") c2 += 1 if number > inp: print("Ваше число меньше загаданного") c2 += 1 if c2 == c: print("Ваши попытки закончились. Вы проиграли") break inp = get_user_input() if number == inp: print("Поздравляем! Вы победили") print("Количетсво попыток:", c2) print("Хотите продолжить? Введите Нет если не хотите") s = input() if s == "нет" or s == "НЕТ" or s == "нЕТ" or s == "нЕт" or s == "НЕт" or s == "нЕТ": s = "Нет"

Результат работы программы:

Часть 2. Цель работы: изучить синтаксис циклической конструкции for языка Python для программирования итерационных алгоритмов, продемонстрировать возможности циклических конструкций while и for на примере разработке интерактивных приложений.

Основное задание

Разработать программы для решения следующих задач, которые должен уметь реализовать каждый программист (it’s easy…):

1. Найти сумму цифр и количество цифр заданного натурального числа.

2. Возвести число в натуральную степень n.

3. Найти количество различных цифр у заданного натурального числа.

4. Найти наибольшую цифру натурального числа.

5. Задано натуральное число. Проверить, является ли заданное натуральное число палиндромом.

6. Определить является ли заданное натуральное число простым.

7. Найти все простые делители заданного натурального числа.

8. Найти НОД и НОК двух натуральных чисел.

9. Заданы три целых числа, которые задают некоторую дату. Определить дату следующего дня.

10. Запрограммировать последовательность чисел Фибоначчи (пользователь вводит порядковый номер элемента последовательности Фибоначчи, а программа выводит на экран значение).

Текст программы:

def get_user_input(): #функция проверки ввода чисел while True: try: return int(input("Введите число: ")) except ValueError: print("Недопустимый формат ввода. Попробуйте ввести снова") def get_drgree(): #функция проверки ввода степени while True: try: return int(input("Введите степень, в которую вы хотите возвести число: ")) except ValueError: print("Недопустимый формат ввода. Попробуйте ввести снова") def get_user_input1(): #функция проверки ввода строки while True: try: return input("Введите три числа в формате даты (через точку): ") except ValueError: print("Недопустимый формат ввода. Попробуйте ввести снова") def Reverse(num): #функция для пункта 4 buf = str(num) string = list(buf) i = 0 j = len(string) - 1 while i < j: temp = string[i] string[i] = string[j] string[j] = temp i += 1 j -= 1 return ''.join(string) def Calculate_lcm(x, y): #функция для пункта 8.1 if x > y: greater = x else: greater = y while(True): if((greater % x == 0) and(greater % y == 0)): lcm = greater break greater += 1 return lcm def Calculate_hcf(x, y): #функция для пункта 8.2 if x > y: smaller = y else: smaller = x for i in range(1,smaller + 1): if((x % i == 0) and(y % i == 0)): hcf = i return hcf from math import * #пункт 1 sum = 0.0 num = get_user_input() size_of_num = len(str(num)) print("Количество цифр заданного натурального числа:", size_of_num) for i in range(size_of_num): sum = sum + (num % pow(10, i+1))//pow(10, i) print("Сумма цифр заданного натурального числа: ", sum) #пункт 2 num1 = get_user_input() n = get_drgree() s = pow(num1, n) print("Возведение числа в натуральную степень n:", s) #пункт 3 num2 = get_user_input() sum2 = 0 size_of_num2 = len(str(num2)) list_of_nums = [] for i in range(size_of_num2): sum2 = (num2 % pow(10, i + 1)) // pow(10, i) list_of_nums.append(sum2) temp = [] for x in list_of_nums: if x not in temp: temp.append(x) list_of_nums = temp print("Количество различных цифр у заданного натурального числа:", len(list_of_nums)) #пункт 4 num3 = get_user_input() sum3 = 0 Max = 0 size_of_num3 = len(str(num3)) for i in range(size_of_num3): sum3 = (num3 % pow(10, i + 1)) // pow(10, i) if sum3 > Max: Max = sum3 print("Наибольшая цифра заданного натурального числа:", Max) #пункт 4 num4 = get_user_input() Reversed_num = Reverse(num4) if (num4 == int(Reversed_num)): print("Число является палиндромом") else: print("Число не является палиндромом") #пункт 6 num5 = get_user_input() k = 0 i = 2 for i in range(2, num5-1): if num5 % i == 0: k+=1 if k==0: print("Это простое число") else: print("Это составное число") #пункт 7 num6 = get_user_input() temp1 = [] simple_divisors = [] for i in range(2, num6-1): if num6 % i == 0: temp1.append(i) for i in temp1: k1 = 0 for j in range(2, i-1): if i % j == 0: k1+=1 if k1 == 0: simple_divisors.append(i) print("Все простые делители числа", num6, simple_divisors) #пункт 8.1 num7 = get_user_input() num8 = get_user_input() print("НОК чисел", num7, "и", num8, "равен", Calculate_lcm(num7, num8)) #пункт 8.2 num9 = get_user_input() num10 = get_user_input() print("НОД чисел", num9, "и", num10, "равен", Calculate_hcf(num9, num10)) #пункт 9 data = get_user_input1() temp1 = data.split(".") if temp1[1] == "01" or temp1[1] == "03" or temp1[1] == "05" or temp1[1] == "08" or temp1[1] == "10" or temp1[1] == "12": if int(temp1[0]) >= 1 and int(temp1[0]) <= 30: temp1[0] = int(temp1[0]) + 1 elif temp1[0] == "31" and temp1[1] == "12": temp1[0] = "01" temp1[1] = "01" temp1[2] = int(temp1[2]) + 1 elif temp1[0] == "31": temp1[0] = "01" temp1[1] = int(temp1[1]) + 1 elif temp1[1] == "04" or temp1[1] == "06" or temp1[1] == "07" or temp1[1] == "09" or temp1[1] == "11": if int(temp1[0]) >= 1 or int(temp1[0]) <= 29: temp1[0] = int(temp1[0]) + 1 elif int(temp1[0]) == 30: temp1[0] = "01" temp1[1] = int(temp1[1]) + 1 elif temp1[1] == "02": if int(temp1[0]) >= 1 or int(temp1[0]) <= 27: temp1[0] = int(temp1[0]) + 1 elif int(temp1[0]) == 28: temp1[0] = "01" temp1[1] = int(temp1[1]) + 1 print("Следующй день: ", temp1[0], ".", temp1[1], ".", temp1[2], sep = "") #пункт 10 num11 = get_user_input() fib1 = fib2 = 1 i = 0 while i < num11 - 2: fib_sum = fib1 + fib2 fib1 = fib2 fib2 = fib_sum i+=1 print("Значение числа Фибоначчи под номером", num11, "равно", fib2)