Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2022-10-29 | 42 |
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 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!