Квиток у першому секторі коштує 250 грн, у другому - 200 грн, а в третьому - 48 грн. У яких секторах можна купити квитки, щоб витрати були найменшими? Розробити програму і надати скріншот екрану.
Первая строка описывает импорт функции permutations из модуля itertools. Теперь мы можем ее использовать.
Далее, конструкция ''.join(b) используется для преобразования кортежа/массива в строку. Например, у нас есть кортеж ('1','2','3') и мы хотим получить из него строчку '123'. Для этого нам надо пройтись по каждому элементу кортежа и присоединять(по-английски join) их к изначально пустой строке. Проход по каждому элементу кортежа в данном случае описан как "({присоединение} for b in {собственно сам кортеж})", где b - элемент кортежа. Теперь про то, что здесь используют в качестве кортежа: permutations - с англ. значит перестановки. То есть, условно, у нас есть слово КОТ, применяем permutations(КОТ) и получаем такие вариации как КОТ, КТО, ОКТ, ОТК, ТКО, ТОК (само слово тоже учитывается, как и в задании).
Однако функция permutations возвращает все эти варианты перестановок как кортежи, то есть, как ('К', 'О', 'Т'), ('К', 'Т', 'О') и т.д. Поэтому-то мы и используем join, чтоб получить из кортежей строки для удобной работы. Теперь стоит заметить, что при наличии в слове одинаковых букв в вариациях перестановок могут получиться совпадающие позиции, так как для компьютера перестановка, например, в слове "ЛОТО" второй и четвертой буквы "О" будет давать новую вариацию, а для нас это все еще будет то же слово ЛОТО, ведь были поменяны местами две одинаковые буквы. Для избежания этой проблемы стоит прописать перед всем массивом с перестановками функцию set, которая просто уберет из него повторяющиеся элементы.
В следующей строке мы создаем массив только из тех строк полученного нами ранее массива с перестановками, которые удовлетворяют условию задания, а именно: не имеют одинаковых соседних букв. Почему это прописано как "if "ОО" not in b"(если "ОО" не в b)? Все просто: в перестановке слова ОДЕКОЛОН две соседние буквы могут быть только ОО, ведь у других букв банально нет пары. В итоге мы проходимся по каждому элементу нашего кортежа с вариациями, и смотрим есть ли в очередной вариации подстроки с двумя буквами О подряд. Если нет - то добавляем в массив, если есть - пропускаем.
В третьей строке выводится количество элементов (len(сокращение length - англ. длина) для массива - кол-во элементов в нем) в полученном массиве, то есть количество вариантов перестановок, где нет слов с одинаковыми соседними буквами.
в разделе а) происходит присвоение суммы переменных а и b переменной k, а команда print(c) пытается вывести на экран переменную k, значение которой не определено.
в разделе b) ошибок нет, так как указанный в пункте а) недостаток отсутствует. Может показаться ошибкой разный регистр переменных A, B и С (где-то строчная, где-то прописная), но на самом деле интерпретатору без разницы, он регистр знаков в имени переменных не учитывает, и для него символы А и а в имени переменной одинаковы. Так что пункт b) ошибок не содержит.
в разделе с) значение присваивается переменной с именем age, а команда print пытается вывести на экран переменную ag, значение которой не определено. Ошибка практически идентична ошибке из пункта а)
Первая строка описывает импорт функции permutations из модуля itertools. Теперь мы можем ее использовать.
Далее, конструкция ''.join(b) используется для преобразования кортежа/массива в строку. Например, у нас есть кортеж ('1','2','3') и мы хотим получить из него строчку '123'. Для этого нам надо пройтись по каждому элементу кортежа и присоединять(по-английски join) их к изначально пустой строке. Проход по каждому элементу кортежа в данном случае описан как "({присоединение} for b in {собственно сам кортеж})", где b - элемент кортежа. Теперь про то, что здесь используют в качестве кортежа: permutations - с англ. значит перестановки. То есть, условно, у нас есть слово КОТ, применяем permutations(КОТ) и получаем такие вариации как КОТ, КТО, ОКТ, ОТК, ТКО, ТОК (само слово тоже учитывается, как и в задании).
Однако функция permutations возвращает все эти варианты перестановок как кортежи, то есть, как ('К', 'О', 'Т'), ('К', 'Т', 'О') и т.д. Поэтому-то мы и используем join, чтоб получить из кортежей строки для удобной работы. Теперь стоит заметить, что при наличии в слове одинаковых букв в вариациях перестановок могут получиться совпадающие позиции, так как для компьютера перестановка, например, в слове "ЛОТО" второй и четвертой буквы "О" будет давать новую вариацию, а для нас это все еще будет то же слово ЛОТО, ведь были поменяны местами две одинаковые буквы. Для избежания этой проблемы стоит прописать перед всем массивом с перестановками функцию set, которая просто уберет из него повторяющиеся элементы.
В следующей строке мы создаем массив только из тех строк полученного нами ранее массива с перестановками, которые удовлетворяют условию задания, а именно: не имеют одинаковых соседних букв. Почему это прописано как "if "ОО" not in b"(если "ОО" не в b)? Все просто: в перестановке слова ОДЕКОЛОН две соседние буквы могут быть только ОО, ведь у других букв банально нет пары. В итоге мы проходимся по каждому элементу нашего кортежа с вариациями, и смотрим есть ли в очередной вариации подстроки с двумя буквами О подряд. Если нет - то добавляем в массив, если есть - пропускаем.
В третьей строке выводится количество элементов (len(сокращение length - англ. длина) для массива - кол-во элементов в нем) в полученном массиве, то есть количество вариантов перестановок, где нет слов с одинаковыми соседними буквами.
Объяснение:
в разделе а) происходит присвоение суммы переменных а и b переменной k, а команда print(c) пытается вывести на экран переменную k, значение которой не определено.
в разделе b) ошибок нет, так как указанный в пункте а) недостаток отсутствует. Может показаться ошибкой разный регистр переменных A, B и С (где-то строчная, где-то прописная), но на самом деле интерпретатору без разницы, он регистр знаков в имени переменных не учитывает, и для него символы А и а в имени переменной одинаковы. Так что пункт b) ошибок не содержит.
в разделе с) значение присваивается переменной с именем age, а команда print пытается вывести на экран переменную ag, значение которой не определено. Ошибка практически идентична ошибке из пункта а)