首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >索引溢出- Python

索引溢出- Python
EN

Stack Overflow用户
提问于 2018-06-11 03:01:01
回答 2查看 185关注 0票数 0

我习惯了用C编写代码,我正在尝试将我实现的函数传递给Python,而我对这门语言还是个新手。这个函数在C中工作得很好,但当我输入以下输入时,它会溢出:

"Rafael af rosa“

会出什么问题呢?

代码语言:javascript
复制
def substr(str1,str2,str3):
    """The function analyzes a string and replaces a part with another."""
    #str1 is the function which the part will be replaced.
    #str2 is the part to be replaced.
    #str3 is the string that will replace str2 in str1.
    n=0
    while n<len(str1):
        if str1[n]==str2[0]:
            k=0
            l=n
            d=1
            while k<len(str2):
                if str1[l]!=str2[k]:
                    d=0
                    break
                k+=1
                l+=1
            if d==1:
                if len(str2)>len(str3):
                    l=0
                    while l<(len(str2)-len(str3)):
                        k=n
                        while str1[k]!=0:
                            str1[k]=str1[k+1]
                            k+=1
                        l+=1
                if len(str3)>len(str2):
                    l=0
                    while l<(len(str3)-len(str2)):
                        k=len(str1)
                        while k>=n:
                            str1[k+1]=str1[k]
                            k-=1
                        l+=1
                k=n
                l=0
                while l<len(str3):
                    str1[k]=str3[l]
                    k+=1
                    l+=1
                n+=len(str3)-1
        n+=1
    return str1

str1=input()
str2=input()
str3=input()
strf=substr(str1,str2,str3)
print(strf)
EN

回答 2

Stack Overflow用户

发布于 2018-06-11 03:23:01

或者您可以简单地执行以下操作:

代码语言:javascript
复制
'Rafael'.replace('af', 'rosa')
票数 3
EN

Stack Overflow用户

发布于 2018-06-11 03:22:36

欢迎学习Python编程!作为一个从C到Delphi再到Python的人,我可以说你的新语言非常有用和有趣。

然而,Python与C有很大的不同,并且有不同的处理方式。与其将C代码翻译成Python,不如学习Python并从头开始重新编写代码。

一个不同之处在于,Python的字符串是不可变的。这意味着您不能更改字符串的一部分,例如字符。必须将整个字符串替换为新字符串。因此,您的语句str1[k]=str1[k+1]将完全不起作用。

Python具有非常强大的内置字符串处理功能。例如,您可以使用正则表达式轻松地进行替换。如果您想坚持使用Python的内置功能,您可以这样做

代码语言:javascript
复制
place = str1.find(str2)
strf = str1[:place] + str3 + str1[place+len(str2):]
print(strf)

这会打印出来

代码语言:javascript
复制
Rrosaael

我想这就是你想要的。

(哇,我觉得自己像个笨蛋。)更好的是,按照@BertKellerman的建议去做:

代码语言:javascript
复制
'Rafael'.replace('af', 'rosa')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50787091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档