Основы программирования в Python

Алла Тамбовцева, НИУ ВШЭ

Семинар 3

Задача 1

Напишите программу, которая запрашивает у пользователя его фамилию, имя, отчество, введенные в одну строчку через пробел, и выводит на экран сообщения:

Ваша фамилия: фамилия
Ваше имя: имя
Ваше отчество: отчество

Пример:

Входные данные:

Введите Ваши ФИО: Тамбовцева Алла Андреевна

Выходные данные:

Ваша фамилия: Тамбовцева
Ваше имя: Алла
Ваше отчество: Андреевна
In [1]:
fio = input("Введите Ваши ФИО: ")
fio_list = fio.split()
f = fio_list[0]
i = fio_list[1]
o = fio_list[2]
print("Ваша фамилия:", f)
print("Ваше имя:", i)
print("Ваше отчество:", o)
Введите Ваши ФИО: Тамбовцева Алла Андреевна
Ваша фамилия: Тамбовцева
Ваше имя: Алла
Ваше отчество: Андреевна

Задача 2

Напишите программу, которая берет строку "1; 2; 3; 100" и возвращает:

  • список из целых чисел
  • список из чисел с плавающей точкой
In [2]:
s = "1; 2; 3; 100"
s_list = s.split(";")
int_nums = []
for i in s_list:
    num = int(i)
    int_nums.append(num)
int_nums
Out[2]:
[1, 2, 3, 100]

Или более компактно и эффективно, используя списковые включения.

In [3]:
s = "1; 2; 3; 100"
s_list = s.split(";")
int_nums = [int(i) for i in s_list]
int_nums
Out[3]:
[1, 2, 3, 100]

То же самое, но для чисел с плавающей точкой:

In [4]:
s = "1; 2; 3; 100"
s_list = s.split(";")
f_nums = []
for i in s_list:
    num = float(i)
    f_nums.append(num)
f_nums
Out[4]:
[1.0, 2.0, 3.0, 100.0]

Через списковые включения:

In [5]:
s = "1; 2; 3; 100"
s_list = s.split(";")
f_nums = [float(i) for i in s_list]
f_nums
Out[5]:
[1.0, 2.0, 3.0, 100.0]

Задача 3

Напишите программу, которая запрашивает у пользователя номер мобильного телефона, введенный через дефис, а возвращает номер, записанный без дефисов и пробелов.

Входные данные:

8-900-123-45-67

Выходные данные:

89001234567
In [6]:
tel = input()
tel_list = tel.split("-")
newtel = "".join(tel_list)
print(newtel)
8-900-123-45-67
89001234567

Задача 4

Напишите программу, которая принимает на вход список L, в котором хранятся значения доходов домохозяйств за месяц, а возвращает новый список L2 ‒ список логарифмированных значений доходов.

In [7]:
L = [10000, 25000, 250000, 150000]
import math
L2 = []
for l in L:
    res = math.log(l)
    L2.append(res)
L2
Out[7]:
[9.210340371976184, 10.126631103850338, 12.429216196844383, 11.918390573078392]

Можно добавлять элемент в список без создания res, выполняя все преобразования в скобках в append:

In [8]:
L = [10000, 25000, 250000, 150000]
import math
L2 = []
for l in L:
    L2.append(math.log(l))
L2
Out[8]:
[9.210340371976184, 10.126631103850338, 12.429216196844383, 11.918390573078392]

И через списковые включения:

In [9]:
L2 = [math.log(l) for l in L]
L2
Out[9]:
[9.210340371976184, 10.126631103850338, 12.429216196844383, 11.918390573078392]

Задача 5

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

words = ["Speak ","to", "me ", "of", "Florence" ,"And ", "of", "the", "Renaissance"]

а возвращает список

words_clean = ["speak", "to", "me", "of", "florence", "and", "of", "the", "renaissance"]

Другими словами, программа убирает пробелы в словах и приводит все слова к нижнему регистру.

Подсказка: запросите help() по методам strip() и lower().

In [10]:
words = ["Speak ","to", "me ", "of", "Florence" ,"And ", "of", "the", "Renaissance"]
In [11]:
words_clean = []
for w in words:
    low = w.lower()
    stripped = low.strip()
    words_clean.append(stripped)
words_clean
Out[11]:
['speak', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']

Или совсем компактный вариант, используя списковые включения (да-да, методы можно применять, "наслаивая" друг на друга, то есть ставя точку и добавляя новый метод).

In [14]:
words_clean = [w.lower().strip() for w in words_clean]
words_clean
Out[14]:
['speak', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']