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

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

Семинар 3: решения

Часть 1: повторение .split() и .join()

Задача 1

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

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

Пример:

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

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

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

Ваша фамилия: Тамбовцева
Ваше имя: Алла
Ваше отчество: Андреевна
In [1]:
fio = input("Введите Ваши ФИО: ")
fio_list = fio.split()
f, i, o = fio_list  # множественное присваивание
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

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

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 [8]:
words = ["Speak ","to", "me ", "of", 
         "Florence" ,"And ", "of", "the", "Renaissance"]
In [9]:
words_clean = []
for w in words:
    low = w.lower()
    stripped = low.strip()
    words_clean.append(stripped)
words_clean
Out[9]:
['speak', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']

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

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

Часть 2: условные конструкции

Задача 1

Напишите программу, которая просит пользователя ввести положительное число, и если пользователь вводит положительное число, выводит на экран сообщение "Молодец!", если нет – "Это не положительное число.".

Считайте, что пользователь в любом случае вводит числа, а не какой-то текст.

In [11]:
n = float(input("Введите положительное число: "))
if n > 0:
    print("Молодец!")
else:
    print("Это не положительное число.")
Введите положительное число: 6
Молодец!

Задача 2

Напишите программу, которая запрашивает у пользователя пароль, и далее:

  • если пароль верный, выводит на экран сообщение "Login success".
  • если пароль неверный, выводит на экран сообщение "Incorrect password, try again!" до тех пор, пока пользователь не введет верный пароль.
In [12]:
password = "hsepassword"

while True:
    attempt = input("Enter password.")
    if attempt == password:
        print("Login success.")
        break
    else:
        print("Incorrect password, try again!")
Enter password.hse
Incorrect password, try again!
Enter password.hsep
Incorrect password, try again!
Enter password.hsepassword
Login success.

Или без while True и break:

In [13]:
password = "hsepassword"
attempt = input("Enter password: ")

while password != attempt:
    attempt = input("Enter password: ")
print("Login success.")
Enter password: hse
Enter password: hsep
Enter password: hsepassword
Login success.

Задача 3

У питона есть набор любимых чисел.

favorites = [3, 7, 11, 23, 18, 48, 81]

Напишите программу, которая просит пользователя ввести целое число, и если оно нравится питону, на экран будет выводиться сообщение: "Мое любимое число!", если нет – "Эх, ну почему?".

In [14]:
favorites = [3, 7, 11, 23, 18, 48, 81]

k = int(input("Введите целое число: "))

if k in favorites:
    print("Моё любимое число!")
else:
    print("Эх, ну почему?")
Введите целое число: 7
Моё любимое число!