Так что я зеленый, как трава, и учусь программированию у Как мыслить как ученый: изучай 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 похожих), не различая? т.е. не использовать "type ()"