Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.
22888
Объяснение:Проанализируем алгоритм:
Программа содержит цикл с предусловием: «нашлось (2222)» или «нашлось (8888)». Значит, тело цикла будет выполняться, если окажется истинным хотя бы одна из них, в противном случае программа останавливается.
Рассмотрим тело цикла:
Если в строке есть подстрока 2222, то происходит ее замена на 8. Иначе (если в строке нет 2222), но есть подстрока 8888, то она заменяется на 2.
Исходная строка имеет 146 идущих подряд цифр 8 (888…8). Значит, условие цикла истинно (нашлось (8888)).
Так как в исходной строке нет подстроки 2222, то выполняется ветвь ИНАЧЕ и происходит замена подстроки 8888 на 2. Таким образом, после одного шага цикла строка будет иметь следующий вид: 2888…8 (цифр 8 теперь на 4 меньше, то есть 142).
Очевидно, после ещё трёх шагов цикла строка примет следующий вид: 2222888…8 (цифр 8 теперь ещё на 12 (4*3) меньше, то есть 130).
На следующем шаге при проверке условия «нашлось (2222)» получаем истину, поэтому выполняется ветвь ЕСЛИ и подстрока 2222 заменяется на 8 (цифр 8 теперь 131).
Не трудно заметить, что за 5 шагов в строке шестнадцать цифр 8 заменяются на одну 8 (т. е. удаляется 15 (146-131) восьмерок).
Выясним, сколько раз в исходной строке встретится по 15 восьмерок и какой будет строка после проведенных преобразований:
146 ÷ 15 = 9 (остаток 11).
Значит, строка имеет следующий вид: 8888 8888 888 (11 восьмерок).
В результате двух последних шагов цикла подстроки 8888 заменяются на двойки и окончательно получаем строку 22888.
import random
class Passanger:
def __init__(self, name_pass, bagadge_value, bagadge_quantity):
"""Constructor"""
self.name_pass = name_pass
self.bagadge_value = bagadge_value
self.bagadge_quantity = bagadge_quantity
if __name__ == "__main__":
list_name_pass = ["Иванов","Иванова","Калдыбег","Мухутдинов","Карелов","Анакондов"]
list_bagadge_value = [25,1,4,14,29,35,2,4,25,6,25,3]
list_bagadge_quantity = [1,4,5,1,1,1,1,1,1,4]
list_passangers = []
random.shuffle(list_name_pass)
random.shuffle(list_bagadge_value)
random.shuffle(list_bagadge_quantity)
for i in range(len(list_name_pass)):
list_passangers.append(Passanger(list_name_pass[i],list_bagadge_value[i], list_bagadge_quantity[i]))
print("Подходят под условие:")
for i in list_passangers:
if (i.bagadge_value < 25 and i.bagadge_quantity == 1):
print(i.name_pass, i.bagadge_value, i.bagadge_quantity)
print("")
print("Пассажиры:")
for i in list_passangers:
print(i.name_pass, i.bagadge_value, i.bagadge_quantity)
Объяснение:
https://pastebin.com/hNT2m49y