Skip to main content
 首页 » 编程设计

python之带有枚举和 for 循环的代码在第一个字母上给我重复的结果

2025年05月04日20mengfanrong

有人能帮我理解为什么这段代码两次返回第一个字母吗?目标是将字符串的第一个和第四个字母大写。

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 中只有一个会执行。