我正在尝试编写一些代码以将一个单词的每个字母增加三倍。这样,您好就变成了hhheeellllllooo等。我可以(通过另一种方法)做到这一点。
我的问题是...为什么以下代码不起作用?似乎是输出列表而不是字符串-当我测试函数时-我不知道为什么。我以为join可以将列表转换为字符串?
def triple(text):
x=list(text)
for i in range(0,len(x)):
x[i]=x[i]+x[i]+x[i]
''.join(x)
return x
答案 0 :(得分:7)
''.join(x)
不会更新x。 x是一个列表。您返回x。您返回一个列表。
def triple(text):
x=list(text)
for i in range(0,len(x)):
x[i]=x[i]+x[i]+x[i]
return ''.join(x)
或
def triple(text):
x=list(text)
for i in range(0,len(x)):
x[i]=x[i]+x[i]+x[i]
x = ''.join(x)
return x
我可以建议两个替代答案:
->删除range(len())
,它遍历列表时对我来说总是很奇怪:
def triple(text):
x=list(text)
for i, c in enumerate(x):
x[i] = c*3
return ''.join(x)
->使用理解:
def triple(text):
return ''.join(c*3 for c in text)
答案 1 :(得分:2)
因为您将列表转换为字符串,但没有将其保存到任何变量,而是要返回列表iteslf
def triple(text):
x = list(text)
for i in range(0, len(x)):
x[i] = x[i] + x[i] + x[i]
x =''.join(x)
return x
或
def triple(text):
x=list(text)
for i in range(0,len(x)):
x[i]=x[i]+x[i]+x[i]
x = ''.join(x)
return x
答案 2 :(得分:0)
def tripleGenerate(myStr):
triplestr = ""
for i in range(0,len(myStr)):
triplestr += (myStr[i]*3)
return triplestr