Модуль 4.2 (Закрепляем while. Задачи по сложнее). В этом разделе мы продолжим изучение циклов while, но задачи будут более сложные.
Ниже представлены примеры задач с решением на тему Закрепляем while. Задачи по сложнее.
Пользователь вводит целые числа по одному в строке, последовательность оканчивается числом 0. Все, что вводится после 0 не относится к последовательности. Напишите программу, которая выводит сумму всех членов данной последовательности.
s = 0 # Запускаем бесконечный цикл while True: n = int(input()) if n == 0: break # Выходим из цикла как только встречается 0 s += n print(s)
На каждой отдельной строчке пользователь вводит друг за другом пароли в виде строки символов. Валидными паролями будем считать строки, у которых длина варьируется от 5 до 9 символов включительно. Как только вы встретите первый невалидный пароль, ваша программа должна закончить считывать пароли и вывести последний введенный валидный пароль.
Гарантируется, что первый пароль всегда валидный
password = input() # Если пароль от 5 до 9 символов то то запоминаем его и проверяем следующий введеный пароль while 5 <= len(password) <=9: valid_password = password password = input() print(valid_password)
У нас в наличии рюкзак, вместимость которого составляет n литров, и наша задача забить его до предела максимально возможно. Нам поступают вещи, объем которых измеряется также в литрах, и мы должны их складывать в наш рюкзак без возможности пропуска. Как только суммарный объем новой добавляемой вещи превысит вместимость рюкзака, ваша программа должна вывести слово «Довольно!» и затем на отдельных строчках суммарный объем вещей, которые мы смогли упаковать в рюкзак, и их количество
n = int(input()) # n - общий объем рюкзака a = 0 # a - объем который уже занят e = 0 # e - обьем следующей строки b = 0 # b - колличество while a <= n: e = int(input()) b = b + 1 a += e print('Довольно!') print(a - e) print(b - 1)
В последний день уходящего 2016 года Лимак собирается принять участие в соревновании по спортивному программированию. Соревнование начнётся в 20:00 и будет продолжаться четыре часа, то есть ровно до полуночи. Участникам будет предложено n задач, упорядоченных по возрастанию сложности, то есть задача 1 будет самой лёгкой, а задача номер n — самой сложной. Лимак знает, что ему потребуется 5·i минут на решение i-й задачи.
Друзья Лимака планирую устроить роскошную новогоднюю вечеринку и Лимак хочет прибыть в полночь или ранее. Он знает, что ему требуется ровно k минут чтобы добрать до места проведения вечеринки от своего дома, где он собирается участвовать в соревновании.
Сколько максимум задач может успеть решить Лимак, так чтобы не опоздать на новогоднюю вечеринку?
# Кол-во задач и время(мин) до вечеринки a, b = map(int, input().split()) c = 0 # Кол-во задач d = 240 - b # Время на задачи while d > 0: c+=1 d-=c*5 # Если кол-во решеных задач равно максимальному то выходим из цикла if a == c: break # Если время отрицательно значит нужно вычесть одну задачу что бы успеть ко времени if d<0: c-=1 print(c)
Ване на день рождения подарили n кубиков. Он с друзьями решил построить из них пирамиду. Ваня хочет построить пирамиду следующим образом: на верхушке пирамиды должен находиться 1 кубик, на втором уровне — 1 + 2 = 3 кубика, на третьем — 1 + 2 + 3 = 6 кубиков, и так далее. Таким образом, на i-м уровне пирамиды должно располагаться 1 + 2 + … + (i - 1) + i кубиков.
Ваня хочет узнать, пирамиду какой максимальной высоты он может создать с использованием имеющихся кубиков.
num_cubs = int(input()) # кол-во всех кубиков i = 0 # кол-во этажей с кубиками summa_cubs = 0 # сумма всех кубиков на этажах (считается в цикле) # пока еще есть возможность построить следующий этаж (хватит кубиков) while summa_cubs + i + 1 <= num_cubs: i += 1 # делаем следующий этаж с кубиками summa_cubs += i # находим сумму кубиков num_cubs -= summa_cubs # и отнимаем эту сумму от оставшихся кубиков # вывод кол-ва этажей print(i)
В вашем распоряжении имеется два отсортированных списка по неубыванию элементов, состоящих из n и m элементов
Ваша задача слить их в один отсортированный список размером n + m
Входные данные
Программа получает на вход два числа n и m — количество элементов первого списка и второго списков
Затем с новой строки поступают элементы первого отсортированного списка, а со следующей строки — второго списка
Выходные данные
Слить два списка в один в порядке неубывания и вывести элементы полученного списка
# получаем из первой строки кол-во элементов 1 и 2 списка n, m = (int, input().split()) list1 = list(map(int, input().split())) # получаем 1 список list2 = list(map(int, input().split())) # получаем 2 список list = list1 + list2 # делаем из двух списков 1 result = [] # пустой список для результата # проверяйте список, пока длина не станет 0 while len(list) != 0: a = min(list) # найти минимальный элемент в списке result.append(a) # добавить элемент в новый список list.remove(a) # удалить элемент из старого списка # распечатать новый отсортированный список print(*result)
По случаю 100500-летия Берляндского государственного университета совсем скоро состоится бал! Уже n юношей и m девушек во всю репетируют вальс, менуэт, полонез и кадриль.
Известно, что на бал будут приглашены несколько пар юноша-девушка, причем уровень умений танцевать партнеров в каждой паре должен отличаться не более чем на единицу.
Для каждого юноши известен уровень его умения танцевать. Аналогично, для каждой девушки известен уровень ее умения танцевать. Напишите программу, которая определит наибольшее количество пар, которое можно образовать из n юношей и m девушек.
Входные данные
В первой строке записано целое число n (1 ≤ n ≤ 100) — количество юношей. Вторая строка содержит последовательность a1, a2, …, an (1 ≤ ai ≤ 100), где ai — умение танцевать i-го юноши.
Аналогично, третья строка содержит целое m (1 ≤ m ≤ 100) – количество девушек. В четвертой строке содержится последовательность b1, b2, …, bm (1 ≤ bj ≤ 100), где bj — умение танцевать j-й девушки.
Выходные данные
Выведите единственное число — искомое максимальное возможное количество пар.
n = int(input()) # Количество мальчиков bList = list(map(int, input().split())) # Список с показателями скиллов каждого мальчика bList.sort() # Сортируем список мальчиков g_count = int(input()) # Количество девочек gList = list(map(int, input().split())) # Список с показателями скиллов каждой девочки gList.sort() # Сортируем список девочек b = 0 # Это первый мальчик индекс всегда равен 0 т.к. происходит удаление g = 0 # Это первая девочка индекс всегда равен 0 т.к. происходит удаление count = 0 # Это количество пар, которое пока равно нулю # Пока один из списков не станет пустым while bList != [] and gList != []: # Если разность по модулю не больше единицы if abs(bList[b] - gList[g]) <= 1: count += 1 # Прибавляем пару bList.pop(bList.index(bList[b])) # Удаляем из списка этого мальчика gList.pop(gList.index(gList[g])) # Удаляем из списка эту девочку else: # Если по скиллу мальчик лучше, чем девочка то этой девочке пару уже не найти if bList[b] > gList[g]: gList.pop(gList.index(gList[g])) # Поэтому удаляем её из списка # Если же девочка скилловее мальчика, то мы не сможем найти пару мальчику else: bList.pop(bList.index(bList[b])) # Поэтому удаляем его # Выводим количество пар print(count)
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы