试图制作一个 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