我正在尝试编写一个程序来改变字符,如果在名为st的字符串中找到ch,我将用'!'替换它
我写了一个程序,但由于某些原因,如果我输入以下代码不能替换一个字母: st = a ch = a
我没有得到'!'的输出相反,我得到'一个'但我不想要我想要它'!'
我的代码是
st = raw_input("String: ")
ch = raw_input("character: ")
def replace_char(st,ch):
if st.find(ch):
new = st.replace(ch,'!')
print new
return new
elif len(st)==len(ch):
if ch==st:
print"!"
else:
print st
else:
print st
return st
replace_char(st,ch)
请帮助我从我的代码中得到错误或遗失的内容
答案 0 :(得分:3)
来自Python文档:
find(s, sub[, start[, end]])¶ Return the lowest index in s where the substring sub is found such that sub is wholly contained in s[start:end]. Return -1 on failure. Defaults for start and end and interpretation of negative values is the same as for slices.
它没有说明find()返回True或False。这是你的问题。
对于子字符串搜索,请更好地使用
if some_string in some_otherstring:
do_something()
答案 1 :(得分:1)
st.find(ch)返回ch在st中的位置,而不是True / False。因为如果Python中的== True为True,那么你的程序在某些情况下会起作用...... :) 考虑str =='a'和ch =='a',第一个条件失败,但第二个条件仅在str和ch具有相同长度时有效。我想你的st或ch中还有别的东西。 在我的电脑中你的程序工作,除非搜索ch在st中是第一个,如下所示:st ='afsdf'ch ='a'。 更好的解决方案如下:
st.replace(ch, '!')
它适用于所有情况。