Skip to content
Snippets Groups Projects
Commit 9206fb3c authored by hacker717's avatar hacker717
Browse files

Перенос testing в маи

parent 191b1bd1
No related branches found
No related tags found
No related merge requests found
md.txt
output.ipynb
todo.txt
\ No newline at end of file
from sys import stdin
arr = []
for line in stdin:
arr += [int(i) for i in line.rstrip("\n").split()]
print(sum(arr))
\ No newline at end of file
file_name, n = input(), int(input())
c = 0
with open(file_name, "r", encoding="utf-8") as file:
for line in file:
c += 1
with open(file_name, "r", encoding="utf-8") as file:
line_number = 0
for line in file:
line_number += 1
if line_number > c - n:
print(line, end="")
\ No newline at end of file
import json
in_file, js_file = input(), input()
res = {"count": 0, "positive_count": 0, "min": float("inf"),
"max": float("-inf"), "sum": 0, "average": 0}
with open(in_file, "r", encoding="utf-8")as inp:
for line in inp:
for num in [int(i) for i in line.split()]:
res["count"] += 1
if num > 0:
res["positive_count"] += 1
res["min"] = min(res["min"], num)
res["max"] = max(res["max"], num)
res["sum"] += num
res["average"] = round((res["sum"] / res["count"]), 2)
with open(js_file, "w", encoding="UTF-8") as js:
json.dump(res, js, ensure_ascii=False, indent=2)
\ No newline at end of file
def count_even_cif(num):
c = 0
for i in num:
if int(i) % 2 == 0:
c += 1
return c
finputname, fevenname, foddname, feqname = [input() for _ in range(4)]
even, odd, eq = [], [], []
evenfile = open(fevenname, "w", encoding="utf-8")
oddfile = open(foddname, "w", encoding="utf-8")
eqfile = open(feqname, "w", encoding="utf-8")
with open(finputname, "r", encoding="utf-8")as inputfile:
for line in inputfile:
for num in line.rstrip("\n").split():
ev = count_even_cif(num)
if len(num) - ev > ev:
odd.append(num)
elif len(num) == 2 * ev:
eq.append(num)
else:
even.append(num)
evenfile.write(" ".join(even) + "\n")
oddfile.write(" ".join(odd) + "\n")
eqfile.write(" ".join(eq) + "\n")
even, odd, eq = [], [], []
evenfile.close()
oddfile.close()
eqfile.close()
\ No newline at end of file
from sys import stdin
import json
file_name = input()
d = {}
for line in stdin:
key, val = line.rstrip().split(" == ")
d[key] = val
with open(file_name, "r", encoding="UTF-8") as js:
data = json.load(js)
for key, val in d.items():
data[key] = val
with open(file_name, "w", encoding="UTF-8") as js:
json.dump(data, js, ensure_ascii=False, indent=2)
\ No newline at end of file
import json
jsusersname, jsupdatesname = input(), input()
data = []
with open(jsusersname, "r", encoding="UTF-8") as js:
data = json.load(js)
newdata = {}
for d in data:
newdata[d["name"]] = {}
for key, val in d.items():
if key == "name":
continue
newdata[d["name"]][key] = val
with open(jsupdatesname, "r", encoding="UTF-8") as js:
data = json.load(js)
for d in data:
name = d["name"]
for key, newval in d.items():
if key == "name":
continue
if key in newdata[name]:
val = newdata[name][key]
newdata[name][key] = sorted([val, newval], reverse=True)[0]
else:
newdata[name][key] = newval
with open(jsusersname, "w", encoding="UTF-8") as js:
json.dump(newdata, js, ensure_ascii=False, indent=2)
\ No newline at end of file
import json
from sys import stdin
name = "scoring.json"
data = []
with open(name, "r", encoding="utf-8") as js:
data = json.load(js)
testcnt = 0
for elem in data:
testcnt += len(elem["tests"])
c = 0
packc = 0
pointsum = 0
d = data[packc]
points = d["points"]
tests = d["tests"]
for line in stdin:
answer = line.rstrip("\n")
if c < len(tests):
if tests[c]["pattern"] == answer:
pointsum += int(points / len(tests))
c += 1
else:
packc += 1
d = data[packc]
points = d["points"]
tests = d["tests"]
c = 0
if c < len(tests):
if tests[c]["pattern"] == answer:
pointsum += int(points / len(tests))
c += 1
print(pointsum)
\ No newline at end of file
from sys import stdin
search_task = input().lower().split()
filenames = [line.rstrip("\n") for line in stdin]
is_something = False
for fname in filenames:
active_searches = []
ind = 0
f = False
with open(fname, "r", encoding="utf-8") as file:
for line in file:
for word in line.replace("&nbsp;", " ").rstrip("\n").lower().split():
if not word:
continue
if word == search_task[0]:
active_searches.append([word])
continue
if active_searches:
for i in range(len(active_searches) - 1, -1, -1):
if len(active_searches[i]) == len(search_task):
f = True
break
elif search_task[len(active_searches[i])] == word:
active_searches[i].append(word)
else:
del active_searches[i]
if f:
break
if active_searches:
for i in range(len(active_searches) - 1, -1, -1):
if len(active_searches[i]) == len(search_task):
f = True
break
if f:
break
if f:
print(fname)
is_something = True
if not is_something:
print("404. Not Found")
\ No newline at end of file
fname = "secret.txt"
with open(fname, "r", encoding="utf-8") as file:
for line in file:
string = line.rstrip("\n")
res = ''
for char in string:
b = bin(ord(char))[2:]
if len(b) % 8 != 0:
bytenum = len(b) // 8 + 1
b = "0" * (8 * bytenum - len(b)) + b
if len(b) <= 8:
res += chr(int(b, 2))
else:
res += chr(int(b[8:], 2))
print(res)
\ No newline at end of file
import os
types = ["Б", "КБ", "МБ", "ГБ"]
fname = input()
bytessum = 0
type = 0
bytessum = os.stat(fname).st_size
while bytessum >= 1024:
if bytessum == 3:
break
type += 1
bytessum = bytessum // 1024 + (bytessum % 1024 > 0)
print(f"{bytessum}{types[type]}")
inpname = "public.txt"
outname = "private.txt"
change = int(input())
with open(inpname, "r", encoding="utf-8") as inpfile:
with open(outname, "w", encoding="utf-8") as outfile:
for line in inpfile:
s = ''
for c in line:
code = ord(c)
if 65 <= code <= 90:
code += change
if code > 90:
while code > 90:
code = code - 26
elif code < 65:
while code < 65:
code = 26 + code
c = chr(code)
elif 97 <= code <= 122:
code += change
if code > 122:
while code > 122:
code = code - 26
elif code < 97:
while code < 97:
code = 26 + code
c = chr(code)
s += c
outfile.write(s)
from sys import stdin
high_arr = []
for line in stdin:
high = [int(i) for i in line.rstrip("\n").split()[1:]]
high_arr.append(high[1] - high[0])
print(round(sum(high_arr) / len(high_arr)))
\ No newline at end of file
fname = "numbers.num"
snum = 0
with open(fname, "rb") as file:
while (byte := file.read(2)):
snum += int.from_bytes(byte)
snum = snum % 2**16
print(snum)
\ No newline at end of file
from sys import stdin
code = []
for line in stdin:
if line.find("#") != 0:
print(line[: line.find("#")])
\ No newline at end of file
%% Cell type:markdown id: tags:
## **A+B+...**
Наконец-то мы можем обрабатывать данные, не имея ни малейшего понятия об их количестве.<br><br>Напишите программу, которая находит сумму всех чисел введённых пользователем.
### **Формат ввода**
Вводятся строки чисел.
### **Формат вывода**
Одно число — сумма всех чисел в потоке ввода.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|1 2<br>3 4 5<br>6<br>7 8 9 10<br>|55<br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
arr = []
for line in stdin:
arr += [int(i) for i in line.rstrip("\n").split()]
print(sum(arr))
```
%% Cell type:markdown id: tags:
## **Средний рост**
Учитель физкультуры задался вопросом, на сколько в среднем его подопечные выросли за прошедший месяц.<br><br>Напишите программу, которая определяет, на сколько изменился средний рост учеников в классе.
### **Формат ввода**
Вводится информация о детях в формате:
### **Формат вывода**
Одно число — ответ на вопрос задачи.<br>Ответ округлите до целых. Например, функцией round.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|Аня 160 162<br>Боря 165 172<br>Вова 165 165<br>|3<br> <br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|Аня 161 165<br>Боря 167 172<br>Вова 165 166<br>Дима 173 178<br>|4<br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
high_arr = []
for line in stdin:
high = [int(i) for i in line.rstrip("\n").split()[1:]]
high_arr.append(high[1] - high[0])
print(round(sum(high_arr) / len(high_arr)))
```
%% Cell type:markdown id: tags:
## **Без комментариев 2.0**
Как вы помните, когда вы комментируете свой код, перед его выполнением интерпретатор удаляет комментарии.<br>Напишите программу, которая выполняет данную функцию за интерпретатор.
### **Формат ввода**
Вводятся строки программы.
### **Формат вывода**
Каждую строку нужно очистить от комментариев.<br>А если комментарий — вся строка, то выводить её не нужно.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|# Моя первая супер-пупер программа<br>print("What is your name?") # Как тебя зовут?<br>name = input() # Сохраняем имя<br>print(f"Hello, {name}!") # Здороваемся# Конец моей супер-пупер программы<br>|print("What is your name?")<br>name = input()<br>print(f"Hello, {name}!")<br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|# Мой первый цикл<br>for i in range(10): # Считаем до 10<br> print(i) # выводим число<br>|for i in range(10):<br> print(i)<br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
code = []
for line in stdin:
if line.find("#") != 0:
print(line[: line.find("#")])
```
%% Cell type:markdown id: tags:
## **Найдётся всё 2.0**
Поиск информации — важная часть современной жизни. Создайте программу, которая реализует маленький компонент поисковой системы.
### **Формат ввода**
Вводятся заголовки страниц.<br>В последней строке записан поисковый запрос.
### **Формат вывода**
Вывести все заголовки страниц, в которых присутствует поисковый запрос (регистр не имеет значения).<br>Порядок заголовков должен сохраниться.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|Яндекс выпустил задачник по программированию<br>На соревнованиях по программированию победил любитель питона<br>Как заказать Яндекс.Такси?!<br>яндекс<br>|Яндекс выпустил задачник по программированию<br>Как заказать Яндекс.Такси?!<br> <br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|сериал шерлок смотреть онлайн<br>учебник питона<br>мемы<br>социальная сеть<br>упражнения по питону<br>кормовые мыши для питонов<br>ответы егэ скачать бесплатно<br>компьютерные мыши<br>питон<br>|учебник питона<br>упражнения по питону<br>кормовые мыши для питонов<br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
sentences = []
for line in stdin:
sentences.append(line.rstrip("\n"))
search = sentences.pop(-1)
res = []
for sen in sentences:
if search.lower() in sen.lower():
res.append(sen)
print(*res, sep="\n")
```
%% Cell type:markdown id: tags:
## **А роза упала на лапу Азора 6.0**
Мы уже писали программы, которые определяли, а палиндром перед нами или нет.<br>Давайте теперь найдём все слова-палиндромы среди введённых строк.
### **Формат ввода**
Вводятся слова.
### **Формат вывода**
Список слов-палиндромов в алфавитном порядке без повторений.
### **Примечание**
При проверке слов не обращайте внимание на регистр.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|Анна Боря Вова<br>Я последняя буква алфавита<br>Дед строит шалаш<br>Шалаш был хорош<br>Дед слышит топот<br>Ара залетел в шалаш<br> <br> <br>|Анна<br>Ара<br>Дед<br>Шалаш<br>Я<br>в<br>топот<br>шалаш<br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
res = set()
for line in stdin:
for word in line.rstrip("\n").split():
if word.lower() == word[::-1].lower():
res.add(word)
print(*sorted(list(res)), sep="\n")
```
%% Cell type:markdown id: tags:
## **Транслитерация 2.0**
Для международных документов русский текст преобразуется с использованием латинского алфавита. ГОСТ Р 52535.1-2006 задаёт правила транслитерации идентификационных карт.<br>Ниже приведена таблица замен:<br>
А — A<br>Б — B<br>В — V<br>Г — G<br>Д — D<br>Е — E<br>Ё — E<br>Ж — ZH<br>З — Z<br>И — I<br>Й — I<br>К — K<br>Л — L<br>М — M<br>Н — N<br>О — O<br>П — P<br>Р — R<br>С — S<br>Т — T<br>У — U<br>Ф — F<br>Х — KH<br>Ц — TC<br>Ч — CH<br>Ш — SH<br>Щ — SHCH<br>Ы — Y<br>Э — E<br>Ю — IU<br>Я — IA<br>Давайте транслитерируем русский текст.<br>Букву «ё» транслитерируйте как «e», «й» как «и», а «ъ» и «ь» (и их заглавные версии «Ъ» и «Ь») должны исчезнуть из текста. Строчные буквы заменяются на строчные, заглавные заменяются на заглавные. Если заглавная буква превращается при транслитерации в несколько букв, то заглавной должна остаться только первая из них (например, «Ц» → «Tc»). Все некириллические символы должны остаться на месте.
### **Формат ввода**
В одной папке с вашей программой лежит файл cyrillic.txt. В нём, в числе прочих, содержится некоторое количество кириллических символов.
### **Формат вывода**
В файл transliteration.txt записать результат транслитерации исходного файла.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|Привет, мир!<br>|Privet, mir!<br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|Я помню чудное мгновенье: Передо мной явилась ты, Как мимолетное виденье, Как гений чистой красоты.<br>|Ia pomniu chudnoe mgnovene: Peredo mnoi iavilas ty, Kak mimoletnoe videne, Kak genii chistoi krasoty.<br>|
%% Cell type:code id: tags:
``` python
d = {
'А': 'A',
'а': 'a',
'Б': 'B',
'б': 'b',
'В': 'V',
'в': 'v',
'Г': 'G',
'г': 'g',
'Д': 'D',
'д': 'd',
'Е': 'E',
'е': 'e',
'Ё': 'E',
'ё': 'e',
'Ж': 'Zh',
'ж': 'zh',
'З': 'Z',
'з': 'z',
'И': 'I',
'и': 'i',
'Й': 'I',
'й': 'i',
'К': 'K',
'к': 'k',
'Л': 'L',
'л': 'l',
'М': 'M',
'м': 'm',
'Н': 'N',
'н': 'n',
'О': 'O',
'о': 'o',
'П': 'P',
'п': 'p',
'Р': 'R',
'р': 'r',
'С': 'S',
'с': 's',
'Т': 'T',
'т': 't',
'У': 'U',
'у': 'u',
'Ф': 'F',
'ф': 'f',
'Х': 'Kh',
'х': 'kh',
'Ц': 'Tc',
'ц': 'tc',
'Ч': 'Ch',
'ч': 'ch',
'Ш': 'Sh',
'ш': 'sh',
'Щ': 'Shch',
'щ': 'shch',
'Ы': 'Y',
'ы': 'y',
'Э': 'E',
'э': 'e',
'Ю': 'Iu',
'ю': 'iu',
'Я': 'Ia',
'я': 'ia'
}
string = ""
with open("cyrillic.txt", "r", encoding="utf-8") as input_file:
with open("transliteration.txt", "w", encoding="utf-8") as output_file:
for line in input_file:
string = line
new_string = ""
for i in string:
if i in d.keys():
new_string += d[i]
elif i.lower() in ["ь", "ъ"]:
continue
else:
new_string += i
output_file.write(new_string)
```
%% Cell type:markdown id: tags:
## **Файловая статистика**
Напишите программу, которая для заданного файла вычисляет следующие параметры:<br>
* количество всех чисел;
* количество положительных чисел;
* минимальное число;
* максимальное число;
* сумма всех чисел;
* среднее арифметическое всех чисел с точностью до двух знаков после запятой.
### **Формат ввода**
Пользователь вводит имя файла.<br>Файл содержит произвольное количество чисел, разделённых пробелами и символами перевода строки.
### **Формат вывода**
Выведите статистику в указанном порядке.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>numbers.txt<br><br># Содержимое файла numbers.txt<br>1 2 3 4 5<br>-5 -4 -3 -2 -1<br>10 20<br>20 10<br>|14<br>9<br>-5<br>20<br>60<br>4.29<br> <br> <br>|
%% Cell type:code id: tags:
``` python
file_name = input()
data = []
with open(file_name, "r", encoding="utf-8") as file:
for line in file:
data += [int(i) for i in line.rstrip("\n").split()]
print(len(data))
print(len([i for i in data if i > 0]))
print(min(data))
print(max(data))
print(sum(data))
print(round(sum(data) / len(data), 2))
```
%% Cell type:markdown id: tags:
## **Файловая разница**
Напишите программу, которая определяет, какие слова есть только в одном из файлов.
### **Формат ввода**
Пользователь вводит три имени файлов.<br>Каждый из входных файлов содержит произвольное количество слов, разделённых пробелами и символами перевода строки.
### **Формат вывода**
В третий файл выведите в алфавитном порядке без повторений список слов, которые есть только в одном из файлов.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>first.txt<br>second.txt<br>answer.txt<br><br># Содержимое файла first.txt<br>кофе молоко<br>чай печенье<br>велосипед<br><br># Содержимое файла second.txt<br>кофе велосипед<br>пряник жвачка весло<br><br>|# Содержимое файла answer.txt<br>весло<br>жвачка<br>молоко<br>печенье<br>пряник<br>чай<br> <br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
file1_name, file2_name = input(), input()
fileres_name = input()
set1, set2 = set(), set()
with open(file1_name, "r", encoding="utf-8") as file1:
for line in file1:
for word in line.rstrip("\n").split():
set1.add(word)
with open(file2_name, "r", encoding="utf-8") as file2:
for line in file2:
for word in line.rstrip("\n").split():
set2.add(word)
res = sorted(list(set1 ^ set2))
with open(fileres_name, "w+", encoding="utf-8") as fileres:
for elem in res:
fileres.write(f"{elem}\n")
```
%% Cell type:markdown id: tags:
## **Файловая чистка**
Python в первую очередь скриптовый язык. Такие языки часто используются для создания консольных утилит.<br><br>Напишите простую утилиту, которая очищает заданный файл от:<br>
* повторяющихся пробелов;
* повторяющихся символов перевода строки;
* табуляций,
* излишних пробелов в начале и конце строк.
### **Формат ввода**
Пользователь вводит два имени файлов.<br>Входной файл содержит неформатированный текст произвольной длины.
### **Формат вывода**
Во второй файл выведите очищенный текст.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>first.txt<br>second.txt<br><br># Содержимое файла first.txt<br> очень плохо форматированный текст<br><br><br>ну ну <br>прямо<br><br>очень-очень<br><br> <br>|# Содержимое файла second.txt<br>очень плохо форматированный текст<br>нуну<br>прямо<br>очень-очень<br> <br> <br> <br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
first_file_name, second_file_name = input(), input()
with open(first_file_name, "r", encoding="utf-8") as first_file:
with open(second_file_name, "w", encoding="utf-8") as second_file:
for line in first_file:
string = line.rstrip("\n")
if not string:
continue
if "\t" in string:
while "\t" in string:
ind = string.index("\t")
string = string[:ind] + string[ind + 1:]
words = string.split()
string = " ".join(words)
second_file.write(string + "\n")
```
%% Cell type:markdown id: tags:
## **Хвост**
В семействе операционных систем Linux существует одна прекрасная консольная утилита — tail. Она предназначена для случаев, когда нам не нужно читать весь файл, а достаточно просмотреть только несколько последних строк.<br><br>Напишите аналог этой утилиты.
### **Формат ввода**
Пользователь вводит имя файла ( <br>F<br> F), а затем количество строк ( <br>N<br> N), которые он хочет увидеть.
### **Формат вывода**
Выведите <br>N<br> N последних строк файла <br>F<br> F.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>some_file.txt<br>2<br><br># Содержимое файла some_file.txt<br>1 строка<br>2 строка<br>3 строка<br>4 строка<br>5 строка<br>|4 строка<br>5 строка<br> <br> <br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
file_name, n = input(), int(input())
c = 0
with open(file_name, "r", encoding="utf-8") as file:
for line in file:
c += 1
with open(file_name, "r", encoding="utf-8") as file:
line_number = 0
for line in file:
line_number += 1
if line_number > c - n:
print(line, end="")
```
%% Cell type:markdown id: tags:
## **Файловая статистика 2.0**
Напишите программу, которая для заданного файла вычисляет следующие параметры:<br>
* количество всех чисел;
* количество положительных чисел;
* минимальное число;
* максимальное число;
* сумма всех чисел;
* среднее арифметическое всех чисел с точностью до двух знаков после запятой.
### **Формат ввода**
Пользователь вводит два имени файла.<br>Первый файл содержит произвольное количество чисел, разделённых пробелами и символами перевода строки.
### **Формат вывода**
Выведите статистику во второй файл в формате JSON.<br><br>Ключи значений задайте соответственно:<br>
* count — количество всех чисел;
* positive_count — количество положительных чисел;
* min — минимальное число;
* max — максимальное число;
* sum — сумма всех чисел;
* average — среднее арифметическое всех чисел с точностью до двух знаков после запятой.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>numbers.txt<br>statistics.json<br><br># Содержимое файла numbers.txt<br>1 2 3 4 5<br>-5 -4 -3 -2 -1<br>10 20<br>20 10<br>|# Содержимое файла statistics.json<br>{<br> "count": 14,<br> "positive_count": 9,<br> "min": -5,<br> "max": 20,<br> "sum": 60,<br> "average": 4.29<br>}<br>|
%% Cell type:code id: tags:
``` python
import json
in_file, js_file = input(), input()
res = {"count": 0, "positive_count": 0, "min": float("inf"),
"max": float("-inf"), "sum": 0, "average": 0}
with open(in_file, "r", encoding="utf-8")as inp:
for line in inp:
for num in [int(i) for i in line.split()]:
res["count"] += 1
if num > 0:
res["positive_count"] += 1
res["min"] = min(res["min"], num)
res["max"] = max(res["max"], num)
res["sum"] += num
res["average"] = round((res["sum"] / res["count"]), 2)
with open(js_file, "w", encoding="UTF-8") as js:
json.dump(res, js, ensure_ascii=False, indent=2)
```
%% Cell type:markdown id: tags:
## **Разделяй и властвуй**
Напишите утилиту, которая разделяет числа, записанные в файле, на три группы:<br>
* числа с преобладающим количеством чётных цифр;
* числа с преобладающим количеством нечётных цифр;
* числа с одинаковым количеством чётных и нечётных цифр.
### **Формат ввода**
Пользователь вводит четыре имени файла.<br>Первый файл содержит произвольное количество чисел, разделённых пробелами и символами перевода строки.
### **Формат вывода**
В три другие файла выведите числа, которые подходят под требуемое условие.<br>Сохраните положение чисел в строках.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>numbers.txt<br>even.txt<br>odd.txt<br>eq.txt<br><br># Содержимое файла numbers.txt<br>650975472 591084323 629700 1504180 577023<br>8460612246 42161437 29409368 58531725 5725268 2198001838<br>796451 69358 7195510 975628465 9756641<br>44200289 126541 979391 93479581 291170 28987042 86139603<br> <br> <br> <br> <br> <br> <br>|# Содержимое файла even.txt<br>629700 1504180<br>8460612246 29409368 5725268 2198001838<br>975628465<br>44200289 28987042<br><br># Содержимое файла odd.txt<br>650975472 591084323 577023<br>58531725<br>796451 69358 7195510 9756641<br>979391 93479581 291170<br><br># Содержимое файла eq.txt<br><br>42161437<br><br>126541 86139603<br>|
%% Cell type:code id: tags:
``` python
def count_even_cif(num):
c = 0
for i in num:
if int(i) % 2 == 0:
c += 1
return c
finputname, fevenname, foddname, feqname = [input() for _ in range(4)]
even, odd, eq = [], [], []
evenfile = open(fevenname, "w", encoding="utf-8")
oddfile = open(foddname, "w", encoding="utf-8")
eqfile = open(feqname, "w", encoding="utf-8")
with open(finputname, "r", encoding="utf-8")as inputfile:
for line in inputfile:
for num in line.rstrip("\n").split():
ev = count_even_cif(num)
if len(num) - ev > ev:
odd.append(num)
elif len(num) == 2 * ev:
eq.append(num)
else:
even.append(num)
evenfile.write(" ".join(even) + "\n")
oddfile.write(" ".join(odd) + "\n")
eqfile.write(" ".join(eq) + "\n")
even, odd, eq = [], [], []
evenfile.close()
oddfile.close()
eqfile.close()
```
%% Cell type:markdown id: tags:
## **Обновление данных**
Часто приходится обновлять данные.<br><br>Создайте программу, которая обновляет JSON файл.
### **Формат ввода**
Пользователь вводит имя файла.<br>Затем вводятся строки вида ключ == значение.
### **Формат вывода**
В заданный пользователем файл следует записать обновленный JSON.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>data.json<br>one == один<br>two == два<br>three == три<br><br># Содержимое файла data.json<br>{<br> "one": 1,<br> "three": 2<br>}<br>|# Содержимое файла data.json<br>{<br> "one": "один",<br> "three": "три",<br> "two": "два"<br>}<br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
import json
file_name = input()
d = {}
for line in stdin:
key, val = line.rstrip().split(" == ")
d[key] = val
with open(file_name, "r", encoding="UTF-8") as js:
data = json.load(js)
for key, val in d.items():
data[key] = val
with open(file_name, "w", encoding="UTF-8") as js:
json.dump(data, js, ensure_ascii=False, indent=2)
```
%% Cell type:markdown id: tags:
## **Слияние данных**
Одна местная компания производит обновление данных о пользователях и заодно решили реорганизовать систему хранения.<br><br>Напишите программу, которая обновляет данные о пользователях, записанных в JSON файле.
### **Формат ввода**
Пользователь вводит два имени файла.<br>В первом хранится JSON массив пользователей.<br>Во втором — массив новых данных.<br><br>Информация о каждом пользователе представляется JSON объектом, в котором обязательно присутствует поле name, описывающее имя пользователя. Остальные поля являются дополнительными.
### **Формат вывода**
В первый файл запишите информацию о пользователях в виде JSON объекта, ключами которого выступают имена пользователей, а значениями — объекты с информацией о них.<br><br>Если какая-либо дополнительная информация о пользователе изменяется, то требуется сохранить лексикографически большее значение.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>users.json<br>updates.json<br><br># Содержимое файла users.json<br>[<br> {<br> "name": "Ann",<br> "address": "Flower st."<br> },<br> {<br> "name": "Bob",<br> "address": "Summer st.",<br> "phone": "+7 (123) 456-78-90"<br> }<br>]<br><br># Содержимое файла updates.json<br>[<br> {<br> "name": "Ann",<br> "address": "Awesome st.",<br> "phone": "+7 (098) 765-43-21"<br> },<br> {<br> "name": "Bob",<br> "address": "Winter st."<br> }<br>]<br><br>|# Содержимое файла users.json<br>{<br> "Ann": {<br> "address": "Flower st.",<br> "phone": "+7 (098) 765-43-21"<br> },<br> "Bob": {<br> "address": "Winter st.",<br> "phone": "+7 (123) 456-78-90"<br> }<br>}<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
import json
jsusersname, jsupdatesname = input(), input()
data = []
with open(jsusersname, "r", encoding="UTF-8") as js:
data = json.load(js)
newdata = {}
for d in data:
newdata[d["name"]] = {}
for key, val in d.items():
if key == "name":
continue
newdata[d["name"]][key] = val
with open(jsupdatesname, "r", encoding="UTF-8") as js:
data = json.load(js)
for d in data:
name = d["name"]
for key, newval in d.items():
if key == "name":
continue
if key in newdata[name]:
val = newdata[name][key]
newdata[name][key] = sorted([val, newval], reverse=True)[0]
else:
newdata[name][key] = newval
with open(jsusersname, "w", encoding="UTF-8") as js:
json.dump(newdata, js, ensure_ascii=False, indent=2)
```
%% Cell type:markdown id: tags:
## **Поставь себя на моё место**
Вы уже долгое время решаете задачи в Яндекс.Контесте.<br>Сегодня пришло время почувствовать себя на его месте.<br><br>Напишите небольшой кусочек тестирующей системы.<br><br>Вашему решению доступен файл scoring.json, в котором содержится информация о системе проверки.<br><br>Основой системы является список групп тестов.<br>Каждая группа представляет собой объект с полями:<br>
* points — количество очков, которое можно получить за прохождение данной группы;
* tests — список объектов с описанием конкретного теста.
Объект описывающий тест содержит поля:<br>
* input — строка входных данных теста;
* pattern — строка ожидаемых в качестве ответа.
В стандартный поток ввода вашего решения передаются ответы, полученные от тестируемой программы.
### **Формат ввода**
В стандартный поток ввода передаются строки — ответы тестируемой программы на каждый тест. В файле scoring.json содержится информация о тестах задачи.
### **Формат вывода**
Одно число — количество полученных тестируемой программой баллов.<br>Если группа тестов не была пройдена полностью, то за данную группу ставится пропорциональный балл.<br>Гарантируется, что баллы за группу кратны количеству тестов в ней.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>4<br>12<br>3<br>100<br>0<br><br># Содержимое файла scoring.json<br>[<br> {<br> "points": 10,<br> "tests": [<br> {<br> "input": "2 2",<br> "pattern": "4"<br> },<br> {<br> "input": "4 3",<br> "pattern": "7"<br> }<br> ]<br> },<br> {<br> "points": 30,<br> "tests": [<br> {<br> "input": "2 1",<br> "pattern": "3"<br> },<br> {<br> "input": "25 4",<br> "pattern": "29"<br> },<br> {<br> "input": "3 -3",<br> "pattern": "0"<br> }<br> ]<br> }<br>]<br>|25<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
import json
from sys import stdin
name = "scoring.json"
data = []
with open(name, "r", encoding="utf-8") as js:
data = json.load(js)
testcnt = 0
for elem in data:
testcnt += len(elem["tests"])
c = 0
packc = 0
pointsum = 0
d = data[packc]
points = d["points"]
tests = d["tests"]
for line in stdin:
answer = line.rstrip("\n")
if c < len(tests):
if tests[c]["pattern"] == answer:
pointsum += int(points / len(tests))
c += 1
else:
packc += 1
d = data[packc]
points = d["points"]
tests = d["tests"]
c = 0
if c < len(tests):
if tests[c]["pattern"] == answer:
pointsum += int(points / len(tests))
c += 1
print(pointsum)
```
%% Cell type:markdown id: tags:
## **Найдётся всё 3.0**
Давайте вновь напишем небольшой компонент поисковой системы.
### **Формат ввода**
Сначала вводится поисковый запрос.<br>Затем вводятся имена файлов, среди которых следует произвести поиск.
### **Формат вывода**
Выведите все имена файлов, в которых есть поисковая строка без учета регистра и повторяющихся пробельных символов.<br>Если ни в одном файле информация не была найдена, выведите "404. Not Found".
### **Примечание**
Система поиска должна обрабатывать строки "a&nbsp;&nbsp;&nbsp;&nbsp;b", "a b" и "a\nb" как одинаковые.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>Мама мыла РАМУ<br>first.txt<br>second.txt<br><br># Содержимое файла first.txt<br>В этом файле говорится о том что МАМА <br><br>мылА<br>Раму<br><br># Содержимое файла second.txt<br>А в этом не говорится<br><br>|first.txt<br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод:<br>Python<br>only_one_file.txt<br><br># Содержимое файла only_one_file.txt<br>Тут нет никаких змей<br><br>|404. Not Found<br> <br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
from sys import stdin
search_task = input().lower().split()
filenames = [line.rstrip("\n") for line in stdin]
is_something = False
for fname in filenames:
active_searches = []
ind = 0
f = False
with open(fname, "r", encoding="utf-8") as file:
for line in file:
for word in line.replace("&nbsp;", " ").rstrip("\n").lower().split():
if not word:
continue
if word == search_task[0]:
active_searches.append([word])
continue
if active_searches:
for i in range(len(active_searches) - 1, -1, -1):
if len(active_searches[i]) == len(search_task):
f = True
break
elif search_task[len(active_searches[i])] == word:
active_searches[i].append(word)
else:
del active_searches[i]
if f:
break
if active_searches:
for i in range(len(active_searches) - 1, -1, -1):
if len(active_searches[i]) == len(search_task):
f = True
break
if f:
break
if f:
print(fname)
is_something = True
if not is_something:
print("404. Not Found")
```
%% Cell type:markdown id: tags:
## **Прятки**
Стеганография — способ передачи или хранения информации с учётом сохранения в тайне самого факта такой передачи (хранения).<br><br>В отличие от криптографии, которая скрывает содержимое тайного сообщения, стеганография скрывает сам факт его существования. Как правило, сообщение будет выглядеть как что-либо иное, например, как изображение, статья, список покупок, письмо или судоку. Стеганографию обычно используют совместно с методами криптографии, таким образом, дополняя её.<br><br>Нам был дан файл со скрытым текстом. И было сообщено, что для выделения полезной информации, нужно из каждого кода символа в тексте «выдернуть» младший байт. Это и будет код символа полезной информации.<br>Однако есть одно «но». Если код символа меньше 128 — это и есть полезная информация.<br><br>Разработайте программу, которая из текстового файла выделяет полезную информацию.
### **Формат ввода**
В файле secret.txt хранится текст.
### **Формат вывода**
Выведите спрятанное сообщение.
### **Примечание**
Для манипуляции кодами символов изучите работу функций chr и ord.
### **Пример**
|Ввод |Вывод|
|-----|-----|
|᥈୥ᙬᱬᝯ, ᭷ᝯ୲੬๤!<br>|Hello, world!<br>|
%% Cell type:code id: tags:
``` python
fname = "secret.txt"
with open(fname, "r", encoding="utf-8") as file:
for line in file:
string = line.rstrip("\n")
res = ''
for char in string:
b = bin(ord(char))[2:]
if len(b) % 8 != 0:
bytenum = len(b) // 8 + 1
b = "0" * (8 * bytenum - len(b)) + b
if len(b) <= 8:
res += chr(int(b, 2))
else:
res += chr(int(b[8:], 2))
print(res)
```
%% Cell type:markdown id: tags:
## **Сколько вешать в байтах?**
Размер — важная характеристика любого файла. В нашей странице согласно ГОСТ 8.417-2002 объём информации измеряется в следующих единицах:<br>
бит (б)<br>Байт (Б) = 8 бит<br>Килобайт (КБ) = 1024 Б<br>Мегабайт (МБ) = 1024 КБ<br>Гигабайт (ГБ) = 1024 МБ<br>Напишите программу, которая вычисляет объём заданного файла.
### **Формат ввода**
Вводится одно имя файла.
### **Формат вывода**
Выведите объём файла в соответствующих единицах измерения.<br>При получении дробного значения, произведите округление вверх.
### **Примечание**
Для решения данной задачи вы можете пойти двумя путями:<br>
* изучите чтение файлов в побайтном режиме;
* изучите стандартную библиотеку os.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод<br>file.txt<br><br># Содержимое файла file.txt<br>Этот файл весит больше чем кажется ))<br>|67Б<br> <br> <br> <br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод<br>another_file.txt<br><br># Содержимое файла another_file.txt<br>Хотелось бы сделать пример с файлом больше 1КБ<br>Не переживайте, такой обязательно будет в скрытых тестах ))<br>|193Б<br> <br> <br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
import os
types = ["Б", "КБ", "МБ", "ГБ"]
fname = input()
bytessum = 0
type = 0
bytessum = os.stat(fname).st_size
while bytessum >= 1024:
if bytessum == 3:
break
type += 1
bytessum = bytessum // 1024 + (bytessum % 1024 > 0)
print(f"{bytessum}{types[type]}")
```
%% Cell type:markdown id: tags:
## **Это будет наш секрет**
Шифр Цезаря, также известный как шифр сдвига, код Цезаря — один из самых простых и наиболее широко известных методов шифрования. Он назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.<br><br>Давайте реализуем эту систему шифрования. Однако для простоты мы будем сдвигать только латинские символы по кругу.
### **Формат ввода**
Вводится размер сдвига для шифрования.<br><br>В файле public.txt содержится текст на английском языке.
### **Формат вывода**
В файл private.txt запишите зашифрованный текст.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод<br>3<br><br># Содержимое файла public.txt<br>Hello, world!<br>|# Содержимое файла private.txt<br>Khoor, zruog!<br> <br> <br> <br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|# Пользовательский ввод<br>-10<br><br># Содержимое файла public.txt<br>English alphabet: ABCDEFG...XYZ<br>|# Содержимое файла private.txt<br>Udwbyix qbfxqruj: QRSTUVW...NOP<br> <br> <br> <br>|
%% Cell type:code id: tags:
``` python
inpname = "public.txt"
outname = "private.txt"
change = int(input())
with open(inpname, "r", encoding="utf-8") as inpfile:
with open(outname, "w", encoding="utf-8") as outfile:
for line in inpfile:
s = ''
for c in line:
code = ord(c)
if 65 <= code <= 90:
code += change
if code > 90:
while code > 90:
code = code - 26
elif code < 65:
while code < 65:
code = 26 + code
c = chr(code)
elif 97 <= code <= 122:
code += change
if code > 122:
while code > 122:
code = code - 26
elif code < 97:
while code < 97:
code = 26 + code
c = chr(code)
s += c
outfile.write(s)
```
%% Cell type:markdown id: tags:
## **Файловая сумма**
Напишите программу, которая вычисляет сумму всех записанных в файле чисел в 2-байтном диапазоне.
### **Формат ввода**
В файле numbers.num содержатся числа в указанном формате.
### **Формат вывода**
Одно число — сумма всех чисел в файле на 2-байтном диапазоне.
### **Примечание**
Для простоты файлы в примерах записаны в HEX формате. В этом виде файл представляется как последовательность четырехзначных шестнадцатеричных чисел.<br><br>В первом примере записано 5 шестнадцатеричных чисел: 1, 2, 3, 4, 5. Их сумма равна 15.<br>Во втором — 255 и 257. Их сумма равна 512.<br><br>Файл из примеров в изначальном виде можно загрузить здесь:<br>
Первый пример<br>Второй пример<br>Если вы хотите изучить принцип хранения целых чисел в ЭВМ, советуем почитать про прямой, обратный и дополнительный коды.
### **Пример 1**
|Ввод |Вывод|
|-----|-----|
|0001 0002 0003 0004 0005<br>|15<br>|
### **Пример 2**
|Ввод |Вывод|
|-----|-----|
|00FF 0101<br>|512<br>|
%% Cell type:code id: tags:
``` python
fname = "numbers.num"
snum = 0
with open(fname, "rb") as file:
while (byte := file.read(2)):
snum += int.from_bytes(byte)
snum = snum % 2**16
print(snum)
```
3.5/4.py 0 → 100644
from sys import stdin
sentences = []
for line in stdin:
sentences.append(line.rstrip("\n"))
search = sentences.pop(-1)
res = []
for sen in sentences:
if search.lower() in sen.lower():
res.append(sen)
print(*res, sep="\n")
\ No newline at end of file
from sys import stdin
res = set()
for line in stdin:
for word in line.rstrip("\n").split():
if word.lower() == word[::-1].lower():
res.add(word)
print(*sorted(list(res)), sep="\n")
\ No newline at end of file
3.5/6.py 0 → 100644
d = {
'А': 'A',
'а': 'a',
'Б': 'B',
'б': 'b',
'В': 'V',
'в': 'v',
'Г': 'G',
'г': 'g',
'Д': 'D',
'д': 'd',
'Е': 'E',
'е': 'e',
'Ё': 'E',
'ё': 'e',
'Ж': 'Zh',
'ж': 'zh',
'З': 'Z',
'з': 'z',
'И': 'I',
'и': 'i',
'Й': 'I',
'й': 'i',
'К': 'K',
'к': 'k',
'Л': 'L',
'л': 'l',
'М': 'M',
'м': 'm',
'Н': 'N',
'н': 'n',
'О': 'O',
'о': 'o',
'П': 'P',
'п': 'p',
'Р': 'R',
'р': 'r',
'С': 'S',
'с': 's',
'Т': 'T',
'т': 't',
'У': 'U',
'у': 'u',
'Ф': 'F',
'ф': 'f',
'Х': 'Kh',
'х': 'kh',
'Ц': 'Tc',
'ц': 'tc',
'Ч': 'Ch',
'ч': 'ch',
'Ш': 'Sh',
'ш': 'sh',
'Щ': 'Shch',
'щ': 'shch',
'Ы': 'Y',
'ы': 'y',
'Э': 'E',
'э': 'e',
'Ю': 'Iu',
'ю': 'iu',
'Я': 'Ia',
'я': 'ia'
}
string = ""
with open("cyrillic.txt", "r", encoding="utf-8") as input_file:
with open("transliteration.txt", "w", encoding="utf-8") as output_file:
for line in input_file:
string = line
new_string = ""
for i in string:
if i in d.keys():
new_string += d[i]
elif i.lower() in ["ь", "ъ"]:
continue
else:
new_string += i
output_file.write(new_string)
\ No newline at end of file
3.5/7.py 0 → 100644
file_name = input()
data = []
with open(file_name, "r", encoding="utf-8") as file:
for line in file:
data += [int(i) for i in line.rstrip("\n").split()]
print(len(data))
print(len([i for i in data if i > 0]))
print(min(data))
print(max(data))
print(sum(data))
print(round(sum(data) / len(data), 2))
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment