试图制作一个 python 递归函数来检查一个字符是否在给定的字符串中但是我没有
Trying to make a python recursive function that checks if a character is in the given string however i have failed to
def q5(s,c):
if s == "":
return s
elif c != s[0]:
return False
else:
return True
return q5(s[1:], c)
以字符串s和单字符字符串c为输入,递归判断s是否包含字符c,包含则返回True,不包含则返回False。
我正在使用递归一次处理一个字符并确定 c 是否包含在 s 中。
参数:
s (str): 输入字符串
, c (str): 单个字符
我在执行此操作时遇到问题,当我执行 q5("HI", "H") 时它 returns 正确,因为“H”在“HI”中但是当我执行 q5 ("HI", "I") 它 returns false 即使 "I" 也在字符串 "HI" 中。
问题是您 returning False
如果第一个字符不匹配。如果 确实 匹配,则需要 return True
,如果不匹配,则递归;最终你 return False
如果你到达字符串的末尾。
def q5(s,c):
if s == "":
return False
elif c == s[0]:
return True
else:
return q5(s[1:], c)
您基本上想知道字符串的第一个字符是否等于搜索字符 or
该字符出现在字符串的其余部分。
您可以直接且非常简洁地翻译该想法:
def q5(s,c):
if s == "":
return False
return s[0] == c or q5(s[1:], c)
q5("HI", "I")
# True
q5("HI", "H")
# True
q5("HI", "f")
# False
有一种不需要递归的更简单的方法,你可以像这样检查字母:
def q5(s,c):
if c in s:
return True
else:
return False
def q5(s,c):
if s == "":
return s
elif c != s[0]:
return False
else:
return True
return q5(s[1:], c)
以字符串s和单字符字符串c为输入,递归判断s是否包含字符c,包含则返回True,不包含则返回False。 我正在使用递归一次处理一个字符并确定 c 是否包含在 s 中。
参数: s (str): 输入字符串 , c (str): 单个字符
我在执行此操作时遇到问题,当我执行 q5("HI", "H") 时它 returns 正确,因为“H”在“HI”中但是当我执行 q5 ("HI", "I") 它 returns false 即使 "I" 也在字符串 "HI" 中。
问题是您 returning False
如果第一个字符不匹配。如果 确实 匹配,则需要 return True
,如果不匹配,则递归;最终你 return False
如果你到达字符串的末尾。
def q5(s,c):
if s == "":
return False
elif c == s[0]:
return True
else:
return q5(s[1:], c)
您基本上想知道字符串的第一个字符是否等于搜索字符 or
该字符出现在字符串的其余部分。
您可以直接且非常简洁地翻译该想法:
def q5(s,c):
if s == "":
return False
return s[0] == c or q5(s[1:], c)
q5("HI", "I")
# True
q5("HI", "H")
# True
q5("HI", "f")
# False
有一种不需要递归的更简单的方法,你可以像这样检查字母:
def q5(s,c):
if c in s:
return True
else:
return False