Программирование для всех (основы работы с Python)

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

Набор задач 3 по темам: списки, цикл for, методы на строках

Задача 1

Даны два списка a и b (см. ниже).

  1. Выведите на экран первый элемент списка a, третий элемент списка a, последний элемент списка a.
  2. Добавьте в конец списка b элемент 7.
  3. Замените пятый элемент списка a на число 8.
  4. Создайте список merged, который включает в себя все элементы списка a и списка b.
  5. Создайте новый список с, который получается заменой последнего элемента списка a на число 100. Сам список a измениться не должен!
In [1]:
a = [1, 0, 9, 12, 18, 34, 89, 91, 33, 127]
b = [2, 8, 9, 11, 76, 25, 44]
In [2]:
# 1

print(a[0], a[2], a[-1])
1 9 127
In [3]:
# 2 - вариант 1

b.append(7)
print(b)
[2, 8, 9, 11, 76, 25, 44, 7]
In [4]:
# 2 - вариант 2 (но более технично с .append)

b = b + [7]
print(b)
[2, 8, 9, 11, 76, 25, 44, 7, 7]
In [5]:
# 3

a[4] = 8
print(a)
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127]
In [6]:
# 4

merged = a + b
print(merged)
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127, 2, 8, 9, 11, 76, 25, 44, 7, 7]
In [7]:
# 5 – вариант 1

c = a.copy()
c[-1] = 100
print(a, c)
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]
In [8]:
# 5 – вариант 2

c = a[:]
c[-1] = 100
print(a, c)
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]

Задача 2

Есть список имен:

In [9]:
girls = ["Иветта", "Виолетта", "Кассандра", "Вирджиния", "Амелия", "Розамунда", "Янина", "Беатриса"]

Используя список girls, выведите на экран следующие списки:

["Виолетта", "Кассандра", "Вирджиния", "Амелия"]
["Вирджиния", "Амелия", "Розамунда", "Янина", "Беатриса"]
["Иветта", "Виолетта", "Вирджиния", "Амелия"]
["Кассандра", "Амелия", "Розамунда"]
In [10]:
print(girls[1:5])
print(girls[3:])
print(girls[0:2] + girls[3:5])
print(girls[2:3] + girls[4:6])
['Виолетта', 'Кассандра', 'Вирджиния', 'Амелия']
['Вирджиния', 'Амелия', 'Розамунда', 'Янина', 'Беатриса']
['Иветта', 'Виолетта', 'Вирджиния', 'Амелия']
['Кассандра', 'Амелия', 'Розамунда']
In [11]:
# менее красивый вариант для последнего
print([girls[2]] + girls[4:6])
['Кассандра', 'Амелия', 'Розамунда']

Задача 3

Дан список L:

In [12]:
L = [4, 8, 9, 0, 10, 12, 56, 6, 7]

Напишите программу, которая запрашивает у пользователя с клавиатуры индекс элемента в списке L, новое значение этого элемента, а потом заменяет старое значение новым. Список L должен измениться.

Пример: пользователь ввел числа 3 и 100, и список L стал таким:

L = [4, 8, 9, 100, 10, 12, 56, 6, 7]
In [13]:
i = int(input("Введите индекс: "))
new = float(input("Введите новое значение: "))  # допустим, от пользователя ждем только числа

L[i] = new
print(L)
Введите индекс: 3
Введите новое значение: 100
[4, 8, 9, 100.0, 10, 12, 56, 6, 7]

Задача 4

Напишите программу, которая запрашивает у пользователя с клавиатуры целое число $n$ и выводит на экран сумму квадратов целых чисел от 0 до $n$. В процессе решения списки создавать нельзя!

In [3]:
n = int(input("Enter a number: "))
Sum = 0

for i in range(1, n + 1):
    Sum = Sum + i ** 2
print(Sum)
Enter a number: 4
30

Задача 5

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

  • список из целых чисел;
  • список из чисел с плавающей точкой.
In [4]:
# целые числа

s = "1; 2; 3; 100"
nums_raw = s.split("; ")
nums = []

for i in nums_raw:
    nums.append(int(i))
print(nums)
[1, 2, 3, 100]
In [5]:
# вариант с созданием промежуточной переменной

s = "1; 2; 3; 100"
nums_raw = s.split("; ")
nums = []

for i in nums_raw:
    new = int(i)
    nums.append(new)
print(nums)
[1, 2, 3, 100]
In [6]:
# числа с плавающей точкой

s = "1; 2; 3; 100"
nums_raw = s.split("; ")
nums = []

for i in nums_raw:
    nums.append(float(i))
print(nums)
[1.0, 2.0, 3.0, 100.0]

Задача 6

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

In [7]:
words = ["Talk ","to", "me ", "of", "Florence" ,
         "And ", "of", "the", "Renaissance"]

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

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

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

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

In [9]:
# методы можно «наслаивать» друг на друга
# применять к предыдущему результату

words_clean = []

for w in words:
    words_clean.append(w.strip().lower())
    
print(words_clean)
['talk', 'to', 'me', 'of', 'florence', 'and', 'of', 'the', 'renaissance']