Задачи на Python

Содержание
Введение
Написать часть слов в предложении наоборот
Похожие статьи

Введение

Написать слова длиннее четырёх символов наоборот

Написать функцию, которая принимает строку - обычное предложение, а возвращает то же предложение, но все слова длиной от пяти букв написаны наоборот

Решение

С помощью абстракции списка

def spin_words(sentence): ns = sentence.split(" ") return " ".join([word[::-1] if len(word) > 4 else word for word in ns])

Без абстракции списка

def spin_words2(sentence): ns = sentence.split(" ") new_list = [] for word in ns: if len(word) > 4: new_list.append(word[::-1]) else: new_list.append(word) return " ".join(new_list)

С помощью лямбда функции и функции map()

def spin_words3(sentence): ns = sentence.split(" ") return " ".join(map(lambda w: w[::-1] if (len(w) > 4) else w, ns))

Сумма нечётных чисел в строке

Вычислить сумму нечётных чисел в строке треугольника.

1 3 5 7 9 11 13 15 17 19 21 23 25 27 29

Пример: сумма во второй строке = 3 + 5 = 8.

Решение

Сперва можно решить задачу "в лоб"

def row_sum_odd_numbers(n): solved = False i = 0 value = 1 s = 0 while not solved: i += 1 l = [] for j in range(i): l.append(value) value +=2 print(l) if i == n: for num in l: s += num print("sum is: ", s) return s solved = True if __name__ == "__main__": row_sum_odd_numbers(3)

Если внимательно присмотреться к треугольнику, видно, что сумма чисел в строке это номер строки в кубе

def row_sum_odd_numbers(n): return n**3

Следующий полный квадрат

Вычислить следующий полный квадрат. Функция получает число, если оно является полным квадратом - нужно вернуть следующий. Если нет, вернуть -1

Пример: 9 -> 16, 121 -> 144

Решение

import math def find_next_square(sq): root = math.sqrt(sq) if root.is_integer(): return (root + 1)**2 else: return -1

Рост населения города

Задаётся начальное население, естественный прирост в год в процентах, прирост за счёт переехавших, желаемое население.

Вычислить, за сколько лет население достигнет желаемого.

Пример: 1000, 0, 50, 1100 -> 2 года

Решение

Главное не забывать округлять вниз при вычислении процентов.

import math def nb_year(p0, percent, aug, p): n = 0 while p0 < p: n += 1 p0 = math.floor(p0 * (1 + percent/100)) + aug print("p0: ",p0) print(p) print(n) return n if __name__ == "__main__": # nb_year(100, 3, 20, 1500) nb_year(1000, 2, 50, 1214)