我习惯用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)
答案 0 :(得分:3)
或者您可以这样做:
'Rafael'.replace('af', 'rosa')
答案 1 :(得分: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')