Словари Напишем программу, которая запрашивает день недели и выводит его название в сокращенном виде, например, вводим 1 выводится ПН.
Решим эту задачу, создав словарь
Словарь представляет собой данные, состоящие из пар ключ: значение, внутри фигурных скобок.
dict = { key1: value1, key2: value2}
dict = {1:'ПН',2:'ВТ',3:'СР',4:'ЧГ',5:'ПТ',6:'СБ',7:'ВС'}
day = int(input()) # вводим ключ
print(dict[day]) # выводим значение по ключу
Множества Решим задачу. Нужно подсчитать, сколько в списке уникальных элементов (неповторяющихся)
Задача легко решается преобразованием вписка вол множество, так как множество содержит только уникальные объекты
s = [1,3,3,4,4,5,6,6,7,8] # создаем список или множество
m = set(s) # преобразуем список в множество
print(m) # печатаем множество
print(len(m)) # печатаем длину множества
Обратите внимание:
Множества не упорядочены, не индексируются и над ними нельзя выполнять срезы (выделять фрагменты)
Пример создания множества
num_set = {1, 2, 3, 4, 5, 6}
print(num_set)
months.add(7) – добавление элементов во множество
num_set.discard(3) - удаление элементов из множества
num_set.clear() - очистить множество
Объединение множеств
x = {1, 2, 3}
y = {4, 5, 6}
print( x | y )
print(x & y) – пересечение множеств
print(x - y) – разность множеств
print(x < y) – сравнивание множеств
Задание
Создайте словарь из пар номер месяца: название месяц. Вы вводите номер (1-12), а программа выводит название месяца (названия можно писать сокращенно: янв, фев…) Имеется массив из имен. Вывести количество уникальных имён Имеются три множества. Вывести
объединение всех множеств: пересечение всех пар множеств (три пары) разность между первой и второй множествами
Контрольная работа 1 Заданы размеры А, В прямоугольного отверстия и размеры X, Y, Z кирпича. Определить, пройдет ли кирпич через отверстие”.
В первой строке вводятся значения А, В в следующей , значения X, Y, Z.
Пример:
Ввод
1 1
2 2 3
Вывод
No 2. Реализуйте метод сжатия строки на основе счетчика повторяющихся символов. Например, строка aabcccccaaa должна превратиться в а2b1с5аЗ. Если «сжатая» строка оказывается длиннее исходной, метод должен вернуть исходную строку.
3. Напишите программу, которая находит четные элементы массива
Олимпиадные задачи Целочисленное деление Прямоугольники (Целочисленное деление)
Имеется стол прямоугольной формы с размерами a×b
(a и b – целые числа, отличные от нуля, a > b). В каком случае на столе можно разместить большее количество картонных прямоугольников с размерами c×d (c и d – целые числа, , отличные от нуля, c > d) при размещении их длинной стороной вдоль длинной стороны стола или вдоль короткой?
Прямоугольники не должны лежать один на другом и не должны свисать со стола.
(При а=10, b = 8, c = 3, d = 2 Ответ: вдоль)
| Тест программы
a, b, c, d = 100, 70, 5, 4 (поперёк) a, b, c, d = 3, 1, 2, 1 (вдоль)
| Решение
a,b,c,d = 100, 70, 5, 4
n1,m1,n2,m2 = 0,0,0,0
n1 = a//c
m1 = b//d
n2 = a//d
m2 = b//c
print("вдоль" if n1*m1 > n2*m2 else "поперёк")
| Ввод и вывод в файл в Питоне
file = open("input.txt", "r") # открываем файл для чтения
"r " можно пропустить: file = open("input.txt")
или
with open('input.txt') as file:
s = file.read() # прочитать весь файл
s = file.readline() # прочитать строку
file1 = open("output.txt","w") # открываем файл для записи
#запись в файл
s = file1.write()
|
| Решим предыдущую задачу с применением файлов
file = open("input.txt","r")
file1 = open("output.txt","w")
s = file.read().split()
a,b,c,d = int(s[0]),int(s[1]),int(s[2]),int(s[3])
n1,m1,n2,m2 = 0,0,0,0
n1 = a//c
m1 = b//d
n2 = a//d
m2 = b//c
#вывод в консоль
print("вдоль" if m1*n1 > m2*n2 else "поперёк")
#выводвфайл
file1.write("вдоль" if m1*n1 > m2*n2 else "поперёк")
| Чтение нескольких строк
f = open("input.txt")
f1 = open("output.txt", "w")
s =[]
k = 0
for line in f:
s.append(line.split())
a,b,c,d = int(s[k][0]),int(s[k][1]),int(s[k][2]),int(s[k][3])
n1,m1,n2,m2 = 0,0,0,0
n1 = a//c
m1 = b//d
n2 = a//d
m2 = b//c
print("вдоль" if m1*n1 > m2*n2 else "поперёк")
f1.write("вдоль" if m1*n1 > m2*n2 else "поперёк")
k+=1
f.close()
f1.close()
| Котлеты
| Решение
k = int(input())
m = int(input())
n = int(input())
if n < k:
print(2*m)
else:
if n%k == 0:
print(2*m*(n//k))
else:
if k // (n%k) >= 2:
print(2*m*(n//k+1)-m)
else:
print(2*m*(n//k+1))
|
| Проверка на сайте https://informatics.msk.ru/
|
(Целочисленное деление)
|
|
| Решение k = 12
t = 4
n = 159
p = (n-1)//(k*t)+1
e = ((n-1)%(k*t))//t+1
print(p,e)
|
Ч исла наибольшее и наименьшее из цифр
|
| 2 Сколько итерации необходимо, чтобы получить палиндром из числа n<2000. Если итераций больше 100 вывести нет решения.
101 => 0, 184 => 3, 196 => нет решения
|
4 -х значные числа
Тест программы
2000 3000 ответ: 6
50 3000 ответ: 6
1000 2000 ответ: 0
5000 9000 ответ: 31
5000 100 000 ответ: 31
|
| Тест
120 => 4,0
119 => 3,58
15 => 0, 30
|
Коробка конфет
Коробка конфет стоит t рубля. В воскресенье в супермаркете действует специальное предложение: заплатив за две коробки конфет, можно получить ещё одну в подарок. Какое наибольшее количество коробок конфет можно купить в воскресенье, если у вас имеется s руб?
Тест
s = 740, t = 52 ответ 21
| |