繁体   English   中英

我无法弄清楚我的代码不起作用的原因

[英]I can't figure out the reasoning why my code doesn't work

这是非常简单的代码,我可以尝试其他方法,但我真的无法弄清楚我编写的代码逻辑有什么特别错误。

def capitalize_letter(text, letter):
    for x in text:
        letter.upper()
    return text

capitalize_letter('goku', 'O')

您的代码实际上根本没有更改原始text变量,它只是返回您输入的内容。

for x in text:将遍历文本中的每个字符,您可以使用它来测试该字符是否与您想要大写的字母匹配,但是您对 x 什么都不做,使其无用。

然后你写letter.upper() ,但你永远不会更新输入的'O'中的字母,所以这一行只会在每个循环中返回'O',但你不会将它分配给任何东西/用它做任何事情,所以这没什么用。

更改代码的一种潜在方法是:

我会使用一个空字符串来存储结果,如下所示:

def capitalize_letter(text, letter):
    output_text = ''

那么你的for循环是正确的,你可以将append文本中的每个字符(x)转为output文本字符串:

    def capitalize_letter(text, letter):
        output_text = ''
        for x in text:
            output_text += x
         return output_text

这将返回与text匹配的output_text 但是,接下来您需要检查每个字符 (x) 是否与您要大写的字母匹配,如果是,请将其设为大写字母,如下所示:

if x == letter:
    x = x.upper()

综上所述,你得到:

def capitalize_letter(text, letter):
    output_text = ''
    for x in text:
        if x == letter:
            x = x.upper()
        output_text += x
    return output_text

注意当你调用这个 function 时,你应该确保letter是小写的,因为你想从小写变为大写,而不是从大写变为大写。 例如:

capitalize_letter('goku', 'o')
'gOku'

通过使用循环,您将遍历文本的所有字母,而不仅仅是所需的字母。 您需要检查是否 x== 字母然后制作 x.upper()。

在 python 中,字符串数据类型是不可变的。 这意味着无法更新字符串值。 但是,为了将任何字母大写,您可以创建字符串的浅表副本,进行相应更新并替换为原始字符串...

这是解决方案....

def capitalize_letter(text, letter):
    
    text=text.replace(letter,letter.upper())
    print(text)
    

capitalize_letter('hello', 'l')

您需要检查该字母,然后将其替换为当前文本。

def capitalize_letter(text, letter):
    for x in text:
        if(x==letter):
            text=text.replace(letter,letter.upper());
    return text

text = capitalize_letter('goku', 'o')
print(text)

有几件事:

您正在输入文本中寻找大写的“O”。 但是您的输入文本都是小写的。

您正在使用变量“x”进行迭代,但使用“letter.upper()”而不是“x.upper()”

"x.upper()" 只返回大写字母,因此您必须先分配它才能使用它。

def capitalize_letter(text, letter):
    output = ''
    for x in text:
        if x == letter:
            x = x.upper()
        output += x
    return output

print(capitalize_letter('goku', 'o'))

Output 是“悟空”

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM