![](/img/trans.png)
[英]My Function To Count The Largest Binary Gap Doesn't Work But I Can't Figure Out Why
[英]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.