如何制作一个双字母的程序(input = hello,returns = hheelllloo)

时间:2014-03-31 10:48:35

标签: python

这是我到目前为止 - 但是当我输入'the'时它打印[tt],[tt,hh],[tt,hh,ee]

def doubleChar(doubleit):
    doubled = []
    for letter in doubleit:
        doubled.append(letter * 2)
        print(doubled)

doubleChar('the')

不是一次伟大的尝试,但却无法想到另一种方式。

5 个答案:

答案 0 :(得分:5)

将您的打印件放在循环外部,并将其转换回字符串而不是字母列表。

def doubleChar(doubleit):
    doubled = []
    for letter in doubleit:
        doubled.append(letter * 2)
    print("".join(doubled))

doubleChar('the')

顺便说一句,甚至不需要一个功能,一个简单的一个班轮:

>>> r = "the"
>>> "".join(x*2 for x in r)
'tthhee'

答案 1 :(得分:1)

我会用zip

来做
>>> def duplicator(s, n=2):
...     return ''.join(x for t in zip(*[s] * n) for x in t)
... 
>>> duplicator('the')
'tthhee'
>>> duplicator('potato', 3)
'pppoootttaaatttooo'

答案 2 :(得分:1)

你快到了。您只需要在双重列表中附加不同的条目。

def doubleChar(doubleit):
  doubled = []
  for letter in doubleit:
    doubled.append(letter * 2)
  # at this stage you have ['tt', 'hh', 'ee'] 
  # you can join them into a str object
  return "".join(doubled)

你也可以使用lambda和comprehention来完成它:

doubleChar = lambda s : "".join([e*2 for e in s])

或者您可以保留循环但使用str对象而不通过列表:

s = "the"
d = ""
for c in s:
  d = d + e*2
print(d)
>> 'tthhee'

答案 3 :(得分:1)

只是为了好玩,这是一种使用扩展切片的不寻常方式

>>> s='the'
>>> (s+(' '+s*2)*len(s))[::len(s)+1]
'tthhee'
>>> s="hello world"
>>> (s+(' '+s*2)*len(s))[::len(s)+1]
'hheelllloo  wwoorrlldd'

答案 4 :(得分:0)

reduce(lambda s, c: s + c + c, "hello", "")