Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...
Топ:
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Выпускная квалификационная работа: Основная часть ВКР, как правило, состоит из двух-трех глав, каждая из которых, в свою очередь...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Подходы к решению темы фильма: Существует три основных типа исторического фильма, имеющих между собой много общего...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Дисциплины:
2022-10-29 | 41 |
5.00
из
|
Заказать работу |
|
|
Вводится строка, состоящая из слов, разделенных пробелами. Требуется отсортировать слова в строке так, чтобы наиболее короткие из них были вначале строки, а наиболее длинные в конце.
Алгоритм решения задачи:
1. Преобразуем строку в список слов. Для этого следует воспользоваться методом split().
2. Измерим длину получившегося списка. Это значение показывает количество элементов списка, т.е. количество слов.
3. Используя метод пузырька, отсортируем элементы списка по их длине. Во внутреннем цикле сортировки должны сравниваться не значения элементов, а их длина.
4. Создадим пустую строку. В цикле по элементам списка будем добавлять каждое слово в конец этой новой строки, а также добавлять пробел после каждого слова.
s = input()
l = s.split()
ln = len(l)
for i in range(ln-1):
for j in range(ln-1-i):
if len(l[j]) > len(l[j+1]):
l[j],l[j+1] = l[j+1],l[j]
s = ''
for i in range(ln):
s += l[i] + ' '
print (s)
Пример работы программы:
ab aaab ba baaaaa a aba
a ab ba aba aaab baaaaa
Функции
В квадратной матрице вычесть последнюю строку из остальных строк
Дана квадратная матрица. Необходимо из всех строк матрицы, кроме последней, вычесть последнюю строку. Следует написать программу с использованием функций.
В Python нельзя обратиться по индексу к элементу списка, которого еще не существует. Поэтому при заполнении матрицы можно сначала создавать одномерный список-массив (очередную строку матрицы), а затем добавить его в основной список-матрицу. Таким образом, при заполнении двумерного списка также используется метод append(), как и при заполнении одномерного.
В Python в функции передаются "указатели" на списки, а не сами списки. Поэтому в функциях отсутствует оператор return.
import random def make_matrix(m,n): for i in range(0,n): a = [] for j in range(0,n): a.append(int(random.random() * 100)) m.append(a) def minus_last(m): l = len(m) for i in range(0,l-1): for j in range(0,l): m[i][j] = m[i][j] - m[l-1][j] def print_matrix(m): for i in m: print (i) print () arr = [] make_matrix(arr,4) print_matrix(arr) minus_last(arr)print_matrix(arr) [62, 54, 47, 44][84, 84, 64, 83][87, 96, 32, 30][3, 74, 42, 21] [59, -20, 5, 23][81, 10, 22, 62][84, 22, -10, 9][3, 74, 42, 21]Изменить последовательность слов в строке на обратную
|
Если дана строка, состоящая из слов, разделенный пробелами, и требуется вывести слова в обратном порядке, то с помощью языка программирования Python данную задачу решить просто, используя встроенные функции-методы:
1. Преобразовать строку в список слов (функция split()).
2. Вызвать метод reverse() для полученного списка.
def revers(s):
s = s.split()
s.reverse()
for i in s:
print (i, end=' ')
print ()
string = input()
revers(string)
Если же требуется решить задачу "классическим" способом, то есть без использования списков, то решение будет выглядеть несколько сложнее.
Извлечь часть строки можно с помощью операции взятия среза. Поскольку слова надо извлекать и выводить на экран, начиная с конца, то и строку уместно "просматривать" с конца.
Для обозначения начала среза введем переменную start, конца - end. Начальными значениями этих переменных будет индекс последнего символа в строке.
Просматривая строку с конца, будем на каждой итерации цикла уменьшать на 1 значение start. Тем самым будем двигаться к началу строки. При этом будем проверять, если очередной символ - это пробел, то надо вывести на экран срез от start до end, после чего присвоить end новое значение равное текущему start.
Несмотря на то, что алгоритм достаточно прост, есть несколько нюансов, которые должны быть учтены:
def revers(s):
|
start = end = len(s)-1
while start >= 0:
if s[start] == ' ':
if end == len(s)-1:
print (s[start+1:], end=' ')
else:
print (s[start+1:end], end=' ')
end = start
elif start == 0:
print (s[start:end])
start -= 1
string = input()
revers(string)
Пример выполнения:
one two three four
four three two one
Наименьшее общее кратное
Найти наименьшее общее кратное (НОК) пар чисел по формуле НОК = ab / НОД(a,b), где a и b - это натуральные числа, НОД - наибольший общий делитель.
Из условия задачи ясно, чтобы найти НОК, надо сначала найти НОД. Последний можно вычислить, постепенно находя остаток от деления большего числа из пары на меньшее и присваивая остаток переменной, связанной с большим числом. В какой-то момент значение одной из переменных станет равным 0. Когда это произойдет, другая будет содержать НОД. Если неизвестно, какая именно переменная содержит НОД, то можно просто сложить значения обоих переменных.
В коде ниже используется функция для нахождения НОК, которая принимает два числа и возвращает найденное наименьшее общее кратное.
В основной ветке программы функция вызывается в цикле, который завершается, если то, что было введено, нельзя преобразовать к целому. В этом случае генерируется исключение (ошибка) и поток выполнения переходит к ветке except.
def lcm(a,b): m = a*b while a!= 0 and b!= 0: if a > b: a %= b else: b %= a return m // (a+b) while 1: try: x = int(input('a=')) y = int(input('b=')) print ('НОК:',lcm(x,y)) except: breakПример выполнения:
a=67b=54НОК: 3618a=78b=87НОК: 2262a=28b=33НОК: 924a=13b=14НОК: 182a=85b=45НОК: 765a=50b=120НОК: 600a=t
|
|
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!