Итак, я зеленый, как трава, и учусь программированию у Как думать как компьютерный ученый: Изучите python 3 . Я могу ответить на вопрос (см. Ниже), но боюсь, что пропускаю урок.
Напишите функцию (с именем insert_at_end), которая будет передавать (возвращать полужирный шрифт с учетом двух аргументов перед) для всех трех:
test(insert_at_end(5, [1, 3, 4, 6]), **[1, 3, 4, 6, 5]**)
test(insert_at_end('x', 'abc'), **'abcx'**)
test(insert_at_end(5, (1, 3, 4, 6)), **(1, 3, 4, 6, 5)**)
В книге дается такой намек: «Эти упражнения хорошо иллюстрируют, что абстракция последовательности является общей, (, потому что нарезка, индексирование и конкатенация являются общими), поэтому можно писать общие функции, которые работают со всеми типами последовательностей. ".
В этой версии нет онлайн-решений (которые я смог найти), но я нашел чьи-то ответы на предыдущую версию текста (для python 2.7), и они сделали это следующим образом:
def encapsulate(val, seq):
if type(seq) == type(""):
return str(val)
if type(seq) == type([]):
return [val]
return (val,)
def insert_at_end(val, seq):
return seq + encapsulate(val, seq)
Что, кажется, решать вопрос, различая списки и строки ... идя против намека. Так как насчет этого. Есть ли способ ответить на вопрос (и еще около 10 похожих), не различая? я.e без использования "type ()"