Случайные 13-значные коды для бланков ОГЭ
Недавно в школе проходила РПГ на тему сдачи экзаменов. То есть ОГЭшники и ЕГЭшники на полном серьёзе заполняли бланки, решали задачи полного экзаменационного варианта, а я изображала сначала технического специалиста, а потом проверяющего эксперта.
Ещё один такой отыгрыш ждёт нас 17 мая.
В ЕГЭ, как ни забавно, играть гораздо проще: вся работа проходит за компьютером, и система сама проверяет верность введённого ответа. А вот ОГЭ приходится проверять вручную. И готовить для сдачи индивидуальные бланки.
На каждом ОГЭшном бланке стоит 13-значный номер. Причём на бланках № 1 и № 2 эти номера обычно разные. По номеру ваши результаты сопоставляются вашей записи в базе — как раз это гарантирует объективность, ведь ваше имя нигде не «светится».
Ну и этот номер вы задаёте в качестве имени файлов с решениями второй части экзамена.
В нашем отыгрыше эти номера мне надо было раскидать на всех сдающих. Единственное условие: все номера должны быть разными, чтобы я потом по имени файла поняла, кому балл за этот файл рисовать.
Варианты решения могут быть разными. Я, естественно, набросала свой на Питоне, не зря же он отличный язык прототипирования.
1) Составила строку из цифр, повторённых пять раз. Это позволило цифрам в номере повторяться.
num = '' for i in range(5): for j in range(10): num += str(j)
2) Строку я преобразовала в список. Теперь каждый символ строки стал отдельным элементом списка.
num = list(num)
3) Теперь этот список я «замешала» при помощи метода .shuffle() модуля random.
random.shuffle(num)
Теперь у нас уже случайный набор цифр, только слишком длинный — из 50 цифр.
4) Осталось вывести первые 13 символов нашего списка. Проще всего это сделать, собрав элементы снова в строку при помощи среза.
print(''.join(num)[:13])
Вот весь код программки, которая за один запуск выдаёт десять случайных 13-значных чисел.
import random num = '' for i in range(5): for j in range(10): num += str(j) num = list(num) for i in range(10): random.shuffle(num) print(''.join(num)[:13])
Обратите внимание: составляем 50-значную строку мы один раз, а дальше просто замешиваем её, сколько нужно.
Вывод может быть, например, таким:
1545020904967 4735326057005 2079875308964 3482096197552 3335818279040 5864215649929 4832200521656 5758123696278 2829394392713 1088239197451
Ещё можно проверить на ведущие нули и удалить их при необходимости. Хотя в бланках у нас не числа, а именно коды, так что ведущие нули имеют право на существование.
Если вам где-нибудь понадобятся случайные наборы символов — пользуйтесь!