Помогите с разобраться с тестом)
Напиши программу для принтера make_stickers, которая принимает число details_count и строку robot_part. Функция должна возвращать список строк в следующем формате: {robot_part} detail #{n}.
Примеры:
если make_stickers(3, 'Body') вернуть функция должна ['Body detail #1', 'Body detail #2', 'Body detail #3'].
Задачка по теме списки.
Hачало функции:
def make_stickers(details_count: int, robot_part: str) -> list:
# write you code here
пока что все до чего додумался это
res = '[]'
for i in range(details_count):
n = i + 1
res = f"[{robot_part} detail #{n}]"
return res
if details_count == 0:
return res
но дает только 1 результат Получено: [Hand detail #1]
Ответы (2 шт):
У вас ошибка в формате строки и возвращаете вы неправильно, нужно вернуть список
Исправил:
def make_stickers(details_count: int, robot_part: str) -> list:
items = []
for i in range(details_count):
items.append(f"{robot_part} detail #{i+1}")
return items
В одну строку:
return [f"{robot_part} detail #{i+1}" for i in range(details_count)]
res = '[]'
for i in range(details_count):
n = i + 1
res = f"[{robot_part} detail #{n}]"
return res
if details_count == 0:
return res
вы не пополняете список каждый цикл, а создаете новый, на пополнения надо использовать метод
appendу вас
returnв цикле стоит, а значит будет выполнен только 1 цикл, вместо всехну и проверку на 0 можно не делать, ведь при
details_count = 0цикл и так не будет выполнятьсязачем в строке вы пишете
[]? В примере такого нет
Так что исходя из этого:
res = []
for i in range(details_count):
n = i + 1
res.append(f"{robot_part} detail #{n}")
return res
Из оптимизаций - зачем вводить дополнительную переменную n, когда можно все сделать внутри f-строки:
res = []
for i in range(details_count):
res.append(f"[{robot_part} detail #{i + 1}]")
return res
Ну и вообще все можно сделать в 1 строчку
res = [f"{robot_part} detail #{i + 1} for i in range(details_count)"]