Файл: Решение n 1 while n2 n 1 print("Искомое число", n 1) 2.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 934
Скачиваний: 4
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Цикл while
1.
Напишите цикл while, который находит максимальное натуральное число, квадрат которого меньше 1000.Решение
n = 1while n**2 < 1000:n += 1print("Искомое число", n - 1)2.
Напишите программу, которая считает неотрицательные степени двойки до тех пор, пока это число не станет больше 10 000. В ответ запишите количество итераций, которые проделывает цикл.Решение
# первоначальное значение счетчикаcount = 0# начальное значение числа 1num = 1#пока степень двойки меньше 10000while num < 10000:#вычисляем следующую степень двойкиnum *= 2#увеличивает счетчик на 1count += 1#печатаем результатыprint(count)print(num)3.
Олег положил тысячу рублей в банк под 8 % годовых. Через сколько лет у него на счёте будет не менее трёх тысяч рублей? Выведите на экран это число и запишите его в ответ.Решение.
money = 1000year_count = 0while money < 3000:money = money * 1.08year_count += 1print(year_count)4.
Найти минимальное число в списке [23, 4, 7, 4, 12, 6, 8, 41, 20]Решение.
items1 = [23, 4, 7, 4, 12, 6, 8, 41, 20]min_item1 = items1[0]i = 0while i < len(items1):if items1[i] < min_item1:min_item1 = items1[i]i += 1print(min_item1)Цикл for
1.
Попробуйте теперь самостоятельно подсчитать произведение всех чисел от 1 до N включительно.P = # создаём переменную-счётчик, в которой мы будем считать произведение.#подумайте, чему она должна быть равна N = 5# запишите цикл for для подсчёта произведенияРешение.
P = 1 # заводим переменную счетчик, в которой мы будем считать произведениеN = 5# запишите цикл for для подсчета произведения с правильным диапазономfor i in range(1, N+1):P *= iprint(P)2.
Напишите программу, которая будет печатать лесенку следующего типа:n = 3******n = 4**********Решение.
N = 5for i in range(1, N + 1):print("*" * i)3.
Найти минимальное число в списке [23, 4, 7, 4, 12, 6, 8, 41, 20]Решение
items2 = [23, 4, 7, 4, 12, 6, 8, 41, 20]min_item2 = items2[0]for item in items2[1:]:if item < min_item2:min_item2 = itemprint(min_item2)Работа со вложенными циклами
1.
Условие задачи. Дана двумерная матрица 3x3 (двумерный массив). Необходимо определить максимум и минимум каждой строки, а также их индексы.
random_matrix = [
[9, 2, 1],
[2, 5, 3],
[4, 8, 5]
]
Решение.
random_matrix = [[9, 2, 1],[2, 5, 3],[4, 8, 5]]min_value_rows = []min_index_rows = []max_value_rows = []max_index_rows = []for row in random_matrix:min_index = 0min_value = row[min_index]max_index = 0max_value = row[max_index]for index_col in range(len(row)):if row[index_col] < min_value: min_value = row[index_col]min_index = index_colif row[index_col] > max_value: max_value = row[index_col]max_index = index_colmin_value_rows.append(min_value)min_index_rows.append(min_index)max_value_rows.append(max_value)max_index_rows.append(max_index)print("Minimal elements:", min_value_rows) # минимальныеэлементыprint("Their indices:", min_index_rows) # ихиндексыprint("Maximal elements:", max_value_rows) # максимальныеэлементыprint("Their indices:", max_index_rows) # ихиндексы2.
Напишите цикл, который ищет наибольший элемент в матрице.Пример матрицы:test_matrix = [[1, 2, 3], [7, -1, 2],[123, 2, -1]]Решение.
test_matrix = [[1, 2, 3],[7, -1, 2],[123, 2, -1]]max = test_matrix[0][0] # берем в качестве точки отсчета любой элемент из матрицыfor row in test_matrix:for el in row:# если элемент больше максимального, то это новый максимумif el > max:max = elprint(max)3.
Напишите код, который определяет, является ли матрица квадратной (то есть количество строк равно количеству столбцов). В конце программа должна выводить на экран значение True или False в зависимости от заданной матрицы. Используйте матрицу из предыдущей задачи.Помните, что количество элементов в каждой строке должно быть одинаковым.Решение.
test_matrix = [[1, 2, 3],[7, -1, 2],[123, 2, -1]]num_lines = len(test_matrix)cnt = 0for line in test_matrix:if len(line) == num_lines:cnt += 1print(num_lines == cnt)Break, Continue, Enumerate
Помните, в прошлом модуле мы с вами разбирали, как определить, содержит ли число цифры цифры, 5, 7 или 9:if‘5’in str(num):✍️ Ваша задача
Напишите алгоритм, который делает то же самое, но работает только с числом, не приводя его в строку.ПодсказкаДля этого вам понадобится цикл while, операции деления на 10 и поиска остатка от деления на 10.Вычисляя остаток от деления на 10, мы получаем крайнюю правую цифру числа, а деля число на 10 — следующее число для итерации.То же можно увидеть на рисунке:if‘5’in str(num):
Решение.
number = 111115222222222222225digitToFind = 5num = numberwhile num > 0:digit = num % 10if digit == digitToFind:print(f"{digitToFind} is in number {number}")breaknum = int(num / 10)Интересный момент: если замерить скорость выполнения этого решения и сравнить его с предыдущим if str(digitToFind) in str(number):print(f"{digitToFind} is in number {number}")то оно окажется медленнее. Даже в том случае, когда искомая цифра стоит в самом правой позиции, и несмотря на то, что способ преобразования строки включает полный перевод цифры в строку, а затем поиск по тому, что получилось. СПОСОБ ЧЕРЕЗ ЦИКЛ:4*10-5 секунд, или 0.85 сек на 100000 раз выполнения алгоритма.СПОСОБ ЧЕРЕЗ STR:9*10-6 секунд, или 0.075 на 100000 раз выполнения алгоритма.Почему так? Потому что python — интерпретируемый язык и каждая операция в нём стоит дорого. Преобразование в строку и поиск по результату происходят «внутри» python, как бы одной операцией внутри C-кода интерпретатора python. Наш же алгоритм использует гораздо большее количество операций. Если бы мы реализовывали подобные алгоритмы не на python, а на языке С, Fortran или подобном, то результат был бы обратный: непосредственная работа с числом оказалась бы быстрее. Поэтому, программируя на python, не изобретайте велосипед, пользуйтесь встроенными возможностями языка, библиотеками и другим инструментарием.Функциональное программирование в Python.
1.
Напишите функцию print_2_add_2, которая будет складывать 2 плюс 2 и печатать этот результат. Не забудьте вызвать функцию, чтобы увидеть результат.Решение.
defprint_2_add_2():result = 2 + 2print(result)print_2_add_2()2.
Напишите функцию hello_world, которая будет печать приветственную строку «Hello World».Решение.
defhello_world():print("Hello World")hello_world()3.
Напишите функцию, которая проверяет является ли число n, делителем числа a. И выводит на экран соответствующее сообщение, является ли число делителем или нет.Решение.
defcheck_num(a, n):if a % n == 0:print(f"Число {n} является делителем числа {a}")
else:
print(f"Число {n} не является делителем числа {a}")
check_num(4, 2) # Число 2 является делителем числа 4
check_num(5, 2) # Число 2 не является делителем числа 5
4.
Задание на самопроверку.Напишите функцию, которая печатает “обратную лесенку” следующего типа:n = 3******n = 4**********Решение.
defreverse_stair(n):for i in range(n, 0, -1):print("*" * i)reverse_stair(5)5.
Напишите функцию, которая будет возвращать количество делителей числа а.Пример ввода: 5Пример вывода программы: 2Решение.
defget_multipliers(a):count = 0for n in range(1, a + 1):if a % n == 0:count += 1return countget_multipliers(5) # 2get_multipliers(4) # 36.
Напишите функцию, которая проверяет, является ли данная строка палиндромом или нет, и возвращается результат проверки. Пример:heck_palindrome("test") # Falsecheck_palindrome("Китнаморенеромантик") # TrueРешение
defcheck_palindrome(str_):str_ = str_.lower()str_ = str_.replace(" ", "")if str_ == str_[::-1]:return Trueelse:return Falsecheck_palindrome("test") # Falsecheck_palindrome("Китнаморенеромантик") # True7.
Написать функцию, которая будет перемножать любое количество переданных ей аргументов.Решение
defmul(*nums):p = 1for n in nums:p *= nreturn p8.
С помощью рекурсивной функции найдите сумму чисел от 1 до n.Решение
defrec_sum(n):if n == 1: # терминальный случайreturn1return n + rec_sum(n - 1) # рекурсивный вызов9.
С помощью рекурсивной функции развернуть строку.Решение.
defreverse_str(string):if len(string) == 0:return''else:return string[-1] + reverse_str(string[:-1])reverse_str('test') # tset10.
Дано натуральное число N. Вычислите сумму его цифр.При решении этой задачи нельзя использовать строки, списки, массивы (ну и циклы, разумеется).Решение
defsum_digit(n):if n < 10:return nelse:return n % 10 + sum_digit(n // 10)sum_digit(123) # 611.
Найти минимальное число в списках. [23, 4, 7, 4, 12, 6, 8, 41, 20][5, 4,-12,5,6,7,8,1][54,14,12,15,60,7,8,19]