Задачи с решениями или подсказками

Строки

s = "In the hole in the ground there lived a hobbit"
Две половинки

Дана строка. Разрежьте ее на две равные части (если длина строки – четная, а если длина строки нечетная, то длина первой части должна быть на один символ больше). Переставьте эти две части местами, результат запишите в новую строку и выведите на экран.


Переставить два слова

Дана строка, состоящая ровно из двух слов, разделенных пробелом. Переставьте эти слова местами. Результат запишите в строку и выведите получившуюся строку.


Удаление фрагмента

Дана строка, в которой буква h встречается минимум два раза. Удалите из этой строки первое и последнее вхождение буквы h, а также все символы, находящиеся между ними.


Обращение фрагмента

Дана строка, в которой буква h встречается как минимум два раза. Разверните последовательность символов, заключенную между первым и последнием появлением буквы h, в противоположном порядке.

Работа с данными: списки и словари

Объединить списки в один список:
a = [10, 20]
b = [30, 40]
c = [50, 60]
Объединить словари в один словарь:
dic1 = {1: 10, 2: 20}
dic2 = {3: 30, 4: 40}
dic3 = {5: 50, 6: 60}

Количество совпадающих пар

Дан список чисел. Посчитайте, сколько в нем пар элементов, равных друг другу. Считается, что любые два элемента, равные друг другу образуют одну пару, которую необходимо посчитать.

Примеры: 1 2 3 2 3 -> 2, 1 1 1 1 1 -> 10



Утренняя пробежка

В первый день спортсмен пробежал x километров, а затем он каждый день увеличивал пробег на 10% от предыдущего значения. По данному числу y определите номер дня, на который пробег спортсмена составит не менее y километров.


Банковские проценты

Вклад в банке составляет x рублей. Ежегодно он увеличивается на p процентов, после чего дробная часть копеек отбрасывается. Каждый год сумма вклада становится больше. Определите, через сколько лет вклад составит не менее y рублей.

Банк Юрского периода

В недалеком будущем ученые изобрели машину времени. С помощью него удалось перенестись в прошлое и основать Самый Первый Банк.
Рассчитать, в каком году нужно положить в банк 5 рублей под 5% годовых, чтобы к 2020 году стать миллионером.


Шеренга

Петя перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.

Входные данные. Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X – рост Пети. Все числа во входных данных натуральные и не превышают 200.

Выходные данные. Выведите номер, под которым Петя должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Пети, то он должен встать после них.

Циклы

Составить список, который состоит из элементов, общих для этих двух списков:

a = [1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89]
b = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
# b = [a for a in range(56)]
Решение:
c = []
for number in a:
    if number in b and number not in c:
        c.append(number)
print(c)

Входные и выходные данные

Дан список имен объектов Солнечной системы.

  1. Отделить номер или год от названия
  2. Определить, год это или номер: если число между 1950 и 2020, то это год, иначе номер.
  3. Создать имя файла, которое содержит год+имя или просто имя, потому что номер отброшен. Имя не должно содержать пробелы!
names = ["2867 Šteins", "2014 JO25", "486958 Arrokoth", "243 Ida"]
filenames = ["Steins.jpg", "2014JO25.jpg", "Arrokoth.jpg", "Ida.jpg"]

ar = "486958 Arrokoth"
ar.split()
# ['486958', 'Arrokoth']
splitted = ar.split()
splitted[0]
# '486958'
int(splitted[0])
# 486958
int(splitted[0]) > 1950
# True
int(splitted[0]) < 2020
# False
int(splitted[0]) > 1950 and int(splitted[0]) < 2020
# False

splitted = '2014 JO25'.split()
strnumber = splitted[0]
number = int(strnumber)
int(number) > 1950 and int(number) < 2020
# True

filename = "Steins.jpg".split(".")
# ['Steins', 'jpg']
if filename[1] == "jpg":
    print("Это картинка! Запускаем фотошоп...")

Напишите программу, которая принимает два списка и выводит все элементы первого, которых нет во втором.

a = ['White', 'Black', 'Red', 'Purple', 'Magenta']
b = ['Red', 'Green', 'Blue', 'Cyan', 'Magenta']
for color in a:
    # code here
    print(color)
Или:
print(set(a) - set(b))

Программа сближающихся случайных чисел
Установка matplotlib в командном интерпретаторе: pip install matplotlib
from random import random, randrange
from matplotlib import pyplot as plt

a, b = 1000, 3000
j = 0
c, d = [], []
e, f = 1, 9000000
while abs(a - b) > 1:
    a = randrange(e, f)
    b = randrange(e, f)
    e = min(a, b)
    f = max(a, b)
    j += 1
    c.append(j)
    d.append(abs(a - b))
    print("j", j, abs(a - b))

plt.plot(d, c, 'o')
plt.grid()
plt.show()

Проверка на палиндром:

rawwords = input()
words = rawwords.lower().replace(" ", "")
ispalindrom = words == words[::-1]
print(ispalindrom)

При заданном целом числе n посчитайте n + nn + nnn
Обобщить для n от 1 до 9.

a = input("Введите число: ")
b = input("Сколько раз умножать число: ")
kopilka = 0
for count in range(int(b)):
    print(a * (count + 1))
    kopilka = kopilka + int(a * (count + 1))
print(kopilka)

МКАД (Кольцевая дорога)

Длина Московской кольцевой автомобильной дороги – 109 километров. Байкер Вася стартует с нулевого километра МКАД и едет со скоростью v километров в час. На какой отметке он остановится через t часов?

Решить задачу для КАД (142.15 км).


Пингвины

Напишите программу, которая по данному числу N от 1 до 9 выводит на экран N пингвинов. Изображение одного пингвина имеет размер 5 на 9 символов, между двумя соседними пингвинами также имеется пустой (из пробелов) столбец. Разрешается вывести пустой столбец после последнего пингвина.

   _~_       _~_       _~_
  (o o)     (o o)     (o o)
 /  V  \   /  V  \   /  V  \
/(  _  )\ /(  _  )\ /(  _  )\
  ^^ ^^     ^^ ^^     ^^ ^^   

Килрой

Напишите программу, которая сажает на линию от 1 до 6 Килроев. Килрои не любят тесноты и должны разделяться минимум одним символом на линии с обеих сторон. Длина линии не должна изменяться!

                                                  ,,,
                                                 (. .)
----------------------------------------------ooO-(_)-Ooo---

Ссылки