试图替换文本,但字符串未更改

2024-09-28 23:37:33 发布

您现在位置:Python中文网/ 问答频道 /正文

Write a Python program to get a string from a given string where all occurrences of its first char have been changed to '$', except the first char itself

我的代码是这样的:

stringa = "restart" 

def swaping(palavra):
    prim = palavra[0] 
    for i in palavra:
        if prim in palavra and prim not in palavra[0]:
            palavra.replace(prim, "$") 
    return palavra 

print(swaping(stringa))


它应该返回resta$t,但它返回了相同的形式restart

有人知道为什么它不起作用吗?示例解决方案与我的完全不同,他们选择将字符串一分为二,并最终将其绑定在一起


Tags: toinfromgetstringprogramgivenwrite
3条回答

在我看到的代码中,它永远不会进入if循环,因为prim not in palavra[0]在分配prim = palavra[0]时总是给出False,所以您的“字符串”不会更改。 我建议使用以下代码:

stringa = "restart" 

def swaping(palavra):
    prim = palavra[0] 
    palavra = ''.join([prim,palavra[1:].replace(prim,'$')])
    return palavra 

print(swaping(stringa))

字符串保持不变的原因是if语句总是返回False:

  • prim in palavra始终为真,因为prim是字符串palavra中的第一个字符
  • prim not in palavra[0]总是错误的,因为primpalavra[0],因此它本身总是错误的

将它们与and子句组合,每次都会得到一个False

而且,str.replace将替换它找到的每个事件(大多数情况下)。在Python中,除了将字符串一分为二并执行解决方案所执行的操作外,没有办法替换特定索引处的字符

无论如何,使用str.replace有一个更简单的解决方案:

def swapping(string):
    return string[0] + string[1:].replace(string[0], '$')

只是一个简单的replace(),如下所示:

string = 'restart'
new_str = string.replace('r', '$').replace('$', 'r', 1)
new_str

输出: ‘resta$t’

相关问题 更多 >