Задачи на 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)