问题是:
给定一个字符串,返回一个字符串,对于原始字符中的每个字符,有两个字符。
这是我的尝试:
def double_char(str):
n = 0
for x in range(0, len(str)):
return 2*str[n]
n = n+1
当我运行它时,它只返回第一个字母的2个版本,并且不能正确循环。所以对于double_char(Hello),它只返回HH。
出了什么问题?在此先感谢您的帮助,对于真正的初学者问题感到抱歉。
答案 0 :(得分:1)
return
一旦到达就会向调用者返回控件,从而过早地退出for
循环。
使用str.join
:
def double_char(s):
return ''.join(i*2 for i in s)
>>> s = 'Hello'
>>> double_char(s)
'HHeelllloo'
请勿使用str
作为名称,以避免隐藏内置str
功能。
答案 1 :(得分:1)
返回导致函数在第一次迭代中返回,因此它只返回第一个字母的2。
你可能打算写的是
def double_char(s):
n = 0
r = ''
for x in range(0, len(s)):
r += 2*s[n]
n = n+1
return r
逐步构建一个字符串,每个字符只有2个。
该功能的更整洁的重构(不使用理解重复其他答案)是
def double_char(s):
r = ''
for c in s:
r += 2*c
return r
您也不应该使用str
作为变量名称。它是内置类型,您可以通过定义名为str
的变量来隐藏它。
答案 2 :(得分:1)
这是解决问题的另一种方式。
def double_char(str):
new_str = ""
for i in range(len(str)):
new_str += (str[i]*2)
return new_str
double_char('Hello')
'HHeelllloo'
答案 3 :(得分:0)
def double_char(str):
string = ''
for i in range(len(str)):
string += str[i] * 2
i += 1
return string