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

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

Семинар 5

Задача 1

Дан словарь с названиями разных рептилий:

In [7]:
rept = {"python" : "питон", "anaconda" : "анаконда", "tortoize" : " черепаха" }
  • Добавьте в словарь пару "snake" - " змея".
  • Исправьте ключ "tortoize" на правильный "tortoise".
  • Выведите на экран сообщения вида

    питон по-английски будет python;

для всех слов в словаре (сообщение для каждого слова ‒ с новой строчки).

In [9]:
rept["snake"] = "змея"
In [10]:
# сначала добавим элемент с правильным ключом
rept["tortoise"] = "черепаха"
print(rept)
{'python': 'питон', 'tortoize': ' черепаха', 'anaconda': 'анаконда', 'snake': 'змея', 'tortoise': 'черепаха'}
In [11]:
# потом удалим элемент с неправильным ключом
del rept["tortoize"]
print(rept)
{'python': 'питон', 'anaconda': 'анаконда', 'snake': 'змея', 'tortoise': 'черепаха'}
In [12]:
for k, v in rept.items():
    print(v, " по-английски будет ", k, ";", sep = "")
питон по-английски будет python;
анаконда по-английски будет anaconda;
змея по-английски будет snake;
черепаха по-английски будет tortoise;

Задача 2

Дан список студентов.

In [14]:
students = ["Вася", "Маша", "Петя", "Дима", "Марина", "Люба", "Коля", "Ваня"]

Оценки студентов за контрольную работу сохранены в словаре grades:

In [15]:
grades = {"Вася" : 4, "Петя" : 9, "Марина" : 8, "Люба" : 4, "Коля" : 5, "Ваня": 10}
  • Напишите программу, которая выводит на экран имя студента из списка students и его оценку. Если оценки студента из списка students нет, то на экран должно выводиться имя студента и сообщение "Контрольную работу не писал(а)".

  • Напишите программу, которая выводит на экран имена студентов, которые получили отличные оценки (8 и выше).

  • Напишите программу, которая сохраняет имена студентов, получивших хорошие и отличные оценки, в список good, а получивших удовлетворительные и плохие оценки ‒ в список bad.

In [18]:
# 1
for s in students:
    print(s, grades.get(s, "Контрольную работу не писал(а)"))
Вася 4
Маша Контрольную работу не писал(а)
Петя 9
Дима Контрольную работу не писал(а)
Марина 8
Люба 4
Коля 5
Ваня 10
In [19]:
# 2
for st, gr in grades.items():
    if gr >= 8:
        print(st)
Петя
Марина
Ваня
In [20]:
# 3
good = []
bad = []

for st, gr in grades.items():
    if gr >= 6:
        good.append(st)
    else:
        bad.append(st)

print(good)
print(bad)
['Петя', 'Марина', 'Ваня']
['Вася', 'Коля', 'Люба']

Задача 3

В списке cnt хранятся названия стран, а в списке fh ‒ значения индекса Freedom House для этих стран. Создайте словарь, используя в качестве ключей названия стран, а в качестве значений ‒ значения индекса.

In [21]:
cnt = ["Andorra", "Belarus", "Denmark", "Kenya", "Jamaica", "Romania"]
fh = [1.0, 6.0, 1.0, 4.0, 2.5, 2.0]
In [24]:
d = dict(zip(cnt, fh))
d
Out[24]:
{'Andorra': 1.0,
 'Belarus': 6.0,
 'Denmark': 1.0,
 'Jamaica': 2.5,
 'Kenya': 4.0,
 'Romania': 2.0}

Задача 4

Дан список, состоящий из пар чисел:

In [26]:
pairs = [(2, 4), (4, 6), (0, 1), (5, 2), (9, 1), (3, 8)]

Создайте словарь calc, где ключами являются пары чисел, а значениями ‒ их произведение (произведение тоже должно считаться в Python, не в уме).

In [27]:
calc = {}

for p in pairs:
    calc[p] = p[0] * p [1]

print(calc)
{(0, 1): 0, (3, 8): 24, (9, 1): 9, (5, 2): 10, (2, 4): 8, (4, 6): 24}

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