有人能帮我理解为什么这段代码两次返回第一个字母吗?目标是将字符串的第一个和第四个字母大写。
def old_macdonald(name):
newname=''
for i,letter in enumerate(name):
if i==0:
newname+=letter.upper()
if i==3:
newname+=letter.upper()
else:
newname+=letter
return newname
old_macdonald('Macdonald')
输出:
MMacDonald # when it should be MacDonald instead of MM
请您参考如下方法:
第二个if语句应该是一个elif:
def old_macdonald(name):
newname=''
for i,letter in enumerate(name):
if i==0:
newname+=letter.upper()
elif i==3:
newname+=letter.upper()
else:
newname+=letter
return newname
old_macdonald('Macdonald') # 'MacDonald'
在你的代码中,在第一个字母上,第一个 if 语句运行,附加一个字母,移动到第二个 if 语句,失败,移动到 else 语句,并附加另一个字母,从而复制第一个字母。将第二个 if 更改为 elif,您可以保证三个 block 中只有一个会执行。
