Задание просто убило. как решить в python - Общение Python мододелов
  • Чаты 4chT.com в телеграмм
    Наши группы в телеграмм

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

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



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



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

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



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



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



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



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



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



Примечание 1. В тестирующую систему сдайте программу, содержащую только необходимую функцию get_id(), но не код, вызывающий ее.
 
Регистрация
24 Ноя 2013
Сообщения
76
Репутация
-3
Спасибо
0
Монет
0
Вот решение задачи на 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 является корректным именем, функция генерирует идентификационный номер следующим образом: сначала добавляется единица, затем добавляется нужное количество единиц в зависимости от того, сколько уже зарегистрировано учеников в школе. Результатом функции является полученный идентификационный номер.
 
Регистрация
27 Апр 2013
Сообщения
76
Репутация
0
Спасибо
0
Монет
0
Ничего "убийственного" тут нет. Например реализуем проверку на то что Первая буква обязательно заглавная, остальные - только строчные.
Не решение ВСЕГО задания, только демонстрация логики решений таких штук 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'))
 

App

Capitan

App

Capitan
Регистрация
14 Сен 2013
Сообщения
64
Репутация
0
Спасибо
0
Монет
0
Нейросети...

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

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