Вопрос Задание просто убило. как решить в python

Регистрация
10 Май 2013
Сообщения
85
Репутация
0
Спасибо
0
Монет
0
В онлайн-школе BEEGEEK имя ученика считается корректным, если оно начинается с заглавной латинской буквы, за которой следуют строчные латинские буквы. Например, имена Timur и Yo считаются корректными, а имена timyrik, Yo17, TimuRRR нет. Также у каждого ученика имеется идентификационный номер, представленный натуральным числом, который выдается при поступлении в школу. К примеру, если в школе обучается 1010 учеников, то новый прибывший ученик получит идентификационный номер равный 1111.



Реализуйте функцию get_id(), которая принимает два аргумента:



names — список имен учеников, обучающихся в школе

name — имя поступающего ученика



Функция должна возвращать идентификационный номер, который получит поступающий в школу ученик, при этом



если имя ученика name не является строкой (тип str), функция должна возбуждать исключение:



TypeError('Имя не является строкой')



если имя ученика name является строкой (тип str), но не представляет собой корректное имя, функция должна возбуждать исключение:



ValueError('Имя не является корректным')



Примечание 1. В тестирующую систему сдайте программу, содержащую только необходимую функцию get_id(), но не код, вызывающий ее.
 
Вот решение задачи на Python:

def get_id(names, name):
# Проверяем, что name является строкой
if not isinstance(name, str):
raise TypeError('Имя не является строкой')

# Проверяем, что name представляет собой корректное имя
if not name[0].isupper() or not all(map(str.islower, name[1:])):
raise ValueError('Имя не является корректным')

# Генерируем и возвращаем идентификационный номер
return int('1' + '1' * len(names))

Функция get_id() принимает два аргумента: names - список имен учеников, обучающихся в школе, и name - имя поступающего ученика.

Функция сначала проверяет, что name является строкой. Если это не так, возбуждается исключение TypeError. Затем проверяется, что name представляет собой корректное имя. Если это не так, возбуждается исключение ValueError.

Если name является корректным именем, функция генерирует идентификационный номер следующим образом: сначала добавляется единица, затем добавляется нужное количество единиц в зависимости от того, сколько уже зарегистрировано учеников в школе. Результатом функции является полученный идентификационный номер.
 
Ничего "убийственного" тут нет. Например реализуем проверку на то что Первая буква обязательно заглавная, остальные - только строчные.
Не решение ВСЕГО задания, только демонстрация логики решений таких штук def f(n):
first = n[:1].isupper()
other = n[1:]
second = True
for i in other:
if i.isupper():
second = False
break
return all([first, second])

print(f('Timur'))
print(f('TimuRRR'))
 
Нейросети...

Для программистов

Adrenaline — исправит ошибки в коде.
Tabnine — допишет код за вас.
CodePal — напишет код, исправит баги и выдаст ревью.
Code GPT — плагин-генератор кода для VSCode.
Autobackend — поможет с бэкендом.
Codesnippets — генерит код из текстовых запросов, подходит для команд.
Buildt AI — поисковик для VSCode, найдет готовый код в инете.
 
А в чем проблема? В данном примере идентификационный номер это просто индекс в массиве. Значит, перед добавлением в массив проверяем правильность строки, а чтобы получить id просто получаем индекс строки в массиве
 
Назад
Сверху