Алла Тамбовцева, НИУ ВШЭ
a = [1, 0, 9, 12, 18, 34, 89, 91, 33, 127]
b = [2, 8, 9, 11, 76, 25, 44]
a
, третий элемент списка a
, последний элемент списка a
.b
элемент 7 (просто допишите в конец).a
на число 8.merged
, который включает в себя все элементы списка a
и списка b
.c
, который получается заменой последнего элемента списка a
на число 100. Сам список a
измениться не должен!# 1
print(a[0], a[2], a[-1])
# 2
b.append(7)
print(b)
# 3
a[4] = 8
print(a)
# 4
merged = a + b
print(merged)
# 5
c = a.copy()
c[-1] = 100
print(a, c)
1 9 127 [2, 8, 9, 11, 76, 25, 44, 7] [1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 127, 2, 8, 9, 11, 76, 25, 44, 7] [1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]
Есть список имён:
girls = ["Иветта", "Виолетта", "Кассандра", "Вирджиния",
"Амелия", "Розамунда", "Янина", "Беатриса"]
Используя список girls
, выведите на экран следующие списки:
["Виолетта", "Кассандра", "Вирджиния", "Амелия"]
["Вирджиния", "Амелия", "Розамунда", "Янина", "Беатриса"]
["Иветта", "Виолетта", "Вирджиния", "Амелия"]
["Кассандра", "Амелия", "Розамунда"]
# 1
print(girls[1:5])
# 2
print(girls[3:])
# 3
print(girls[0:2] + girls[3:5])
# 4
print(girls[2:3] + girls[4:6])
['Виолетта', 'Кассандра', 'Вирджиния', 'Амелия'] ['Вирджиния', 'Амелия', 'Розамунда', 'Янина', 'Беатриса'] ['Иветта', 'Виолетта', 'Вирджиния', 'Амелия'] ['Кассандра', 'Амелия', 'Розамунда']
Дан список L
.
L = [12, 3, 8, 125, 10, 98, 54, 199]
Выведите на экран (последовательно, с новой строчки):
L
;L
.Замените пятый элемент списка L
на 0. Проделайте те же операции, что и раньше. Объясните, почему получаются такие результаты.
for i in L:
print(i)
12 3 8 125 10 98 54 199
import math # уже импортировали выше, но для полноты решения
for i in L:
print(math.log(i))
2.4849066497880004 1.0986122886681098 2.0794415416798357 4.8283137373023015 2.302585092994046 4.584967478670572 3.9889840465642745 5.293304824724492
После замены одного из элементов на 0, получаем ошибку, так как логарифм определен только для положительных чисел. Цикл честно доходит до пятого элемента и на нём ломается:
L[4] = 0
for i in L:
print(math.log(i))
2.4849066497880004 1.0986122886681098 2.0794415416798357 4.8283137373023015
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-8-bb044232b595> in <module> 1 L[4] = 0 2 for i in L: ----> 3 print(math.log(i)) ValueError: math domain error
Объясните, что делает следующий код и почему он выдает такие результаты:
M = [1, 2, 3, 4]
for i in range(len(M)):
a = M[i] + M[i-1]
print(a)
5 3 5 7
Разберем код на части. Что такое range(len(M))
?
list(range(len(M))) # индексы элементов списка M
[0, 1, 2, 3]
Значит, цикл for
бегает по индексам списка M
. Тогда M[i]
– это i-тый элемент списка M
, а M[i-1]
– элемент, предшествующий i-тому элементу. Эти два элемента складываются, и результат сохраняется в a
.
Посмотрим. Если i = 0
, то получаем M[0]
и M[-1]
. Значит, на первом шаге (на первой итерации) цикла мы складываем первый и последний элементы списка.
1 + 4 = 5
Двигаемся дальше. Если i = 1
, то получаем M[1]
и M[0]
. Значит, на втором шаге цикла мы складываем второй и первый элементы списка.
2 + 1 = 3
И так далее.
Почему этот код интересен? Потому, что он не ломается: Python не возражает против отрицательных индексов элементов, он просто начинает считать элементы с конца списка.
Дан список L
:
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]
L = [4, 8, 9, 0, 10, 12, 56, 6, 7]
ind = int(input("Enter index: "))
new = int(input("Enter new value: "))
L[ind] = new
Enter index: 3 Enter new value: 100
Примечание: технически, в new
может быть не только целое число, по условию нет ограничений, но давайте считать, что это список целых чисел.
Напишите программу, которая запрашивает у пользователя с клавиатуры два числа и возвращает список целых чисел, которые находятся в промежутке между этими числами (исключая указанные числа).
Пример: пользователь ввел число 5 и число 9, ему вернулся список [6, 7, 8]
.
start = int(input("Start value: "))
finish = int(input("End value: "))
R = list(range(start + 1, finish))
print(R)
Start value: 5 End value: 9 [6, 7, 8]
Напишите программу, которая запрашивает у пользователя с клавиатуры целое число $n$ и выводит на экран сумму квадратов целых чисел от 0 до $n$. В процессе решения списки создавать нельзя!
n = int(input("Enter n: "))
s = 0
for j in range(0, n + 1):
s = s + j # или s = += j
print(s)
Enter n: 10 55
Напишите программу, которая запрашивает у пользователя его фамилию, имя, отчество, введенные в одну строчку через пробел, и выводит на экран сообщения:
Ваша фамилия: фамилия
Ваше имя: имя
Ваше отчество: отчество
Пример:
Входные данные:
Введите Ваши ФИО: Тамбовцева Алла Андреевна
Выходные данные:
Ваша фамилия: Тамбовцева
Ваше имя: Алла
Ваше отчество: Андреевна
Напишите программу, которая берет строку "1; 2; 3; 100" и возвращает:
Напишите программу, которая принимает на вход список слов такого вида:
words = ["Speak ", "to", "me ", "of", "Florence ",
"And ", "of", "the", "Renaissance"]
а возвращает список
words_clean = ["speak", "to", "me", "of", "florence",
"and", "of", "the", "renaissance"]
Другими словами, программа убирает пробелы в словах и приводит все слова к нижнему регистру.
Подсказка: запросите help()
по методам .strip()
и .lower()
.