#!/usr/bin/env python # coding: utf-8 # ## Основы программирования в 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 # Или более компактно и эффективно, используя списковые включения. # In[3]: s = "1; 2; 3; 100" s_list = s.split(";") int_nums = [int(i) for i in s_list] int_nums # То же самое, но для чисел с плавающей точкой: # 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 # Через списковые включения: # In[5]: s = "1; 2; 3; 100" s_list = s.split(";") f_nums = [float(i) for i in s_list] f_nums # ### Задача 3 # # Напишите программу, которая запрашивает у пользователя номер мобильного телефона, введенный через дефис, а возвращает номер, записанный без дефисов и пробелов. # # *Входные данные:* # # 8-900-123-45-67 # # *Выходные данные:* # # 89001234567 # In[6]: tel = input() tel_list = tel.split("-") newtel = "".join(tel_list) print(newtel) # ### Задача 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 # Можно добавлять элемент в список без создания `res`, выполняя все преобразования в скобках в `append`: # In[8]: L = [10000, 25000, 250000, 150000] import math L2 = [] for l in L: L2.append(math.log(l)) L2 # И через списковые включения: # In[9]: L2 = [math.log(l) for l in L] L2 # ### Задача 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 # Или совсем компактный вариант, используя списковые включения (да-да, методы можно применять, "наслаивая" друг на друга, то есть ставя точку и добавляя новый метод). # In[14]: words_clean = [w.lower().strip() for w in words_clean] words_clean