【发布时间】:2012-02-14 11:17:15
【问题描述】:
所以我像草一样绿,向How to think like a computer scientist: Learn 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()”
【问题讨论】:
-
我认为你不会从尝试解决这个问题中学到任何有用的东西。
标签: python string list type-conversion