Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
索引溢出-Python_Python_String_Overflow - Fatal编程技术网

索引溢出-Python

索引溢出-Python,python,string,overflow,Python,String,Overflow,我习惯于用C语言编写代码,我正在尝试将我实现的函数传递给Python,我对该语言是新手。此函数在C中运行良好,但当我输入以下输入时,它会导致溢出: “拉斐尔 af 罗莎“ 有什么不对劲 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 repla

我习惯于用C语言编写代码,我正在尝试将我实现的函数传递给Python,我对该语言是新手。此函数在C中运行良好,但当我输入以下输入时,它会导致溢出:

“拉斐尔 af 罗莎“

有什么不对劲

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)
def substr(str1、str2、str3):
“”“该函数分析字符串并用另一部分替换该部分。”“”
#str1是部件将被更换的功能。
#str2是要更换的部件。
#str3是将替换str1中str2的字符串。
n=0

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

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

一个区别是Python的字符串是不可变的。这意味着您不能更改字符串的一部分,例如字符。必须用新字符串替换整个字符串。因此,您的语句
str1[k]=str1[k+1]
根本不起作用

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

place = str1.find(str2)
strf = str1[:place] + str3 + str1[place+len(str2):]
print(strf)
那会打印出来

Rrosaael
我想这正是你想要的

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

'Rafael'.replace('af', 'rosa')

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

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

一个区别是Python的字符串是不可变的。这意味着您不能更改字符串的一部分,例如字符。必须用新字符串替换整个字符串。因此,您的语句
str1[k]=str1[k+1]
根本不起作用

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

place = str1.find(str2)
strf = str1[:place] + str3 + str1[place+len(str2):]
print(strf)
那会打印出来

Rrosaael
我想这正是你想要的

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

'Rafael'.replace('af', 'rosa')
或者您可以简单地执行以下操作:

'Rafael'.replace('af', 'rosa')
或者您可以简单地执行以下操作:

'Rafael'.replace('af', 'rosa')

哇,我觉得自己像个白痴。我知道我的回答忽略了一些简单的方法——我一定累了。无论如何,+1代表您。这是replace()所在的python源代码。它会根据具体情况调用一些不同的版本。哇,我觉得自己像个白痴。我知道我的回答忽略了一些简单的方法——我一定累了。无论如何,+1代表您。这是replace()所在的python源代码。它会根据具体情况调用一些不同的版本。非常感谢,似乎修改代码不是解决方案,哈哈谢谢,似乎修改代码不是解决方案,哈哈