【问题标题】:Multiple characters in a string return a false boolean when trying to find a character in the string尝试在字符串中查找字符时,字符串中的多个字符返回 false 布尔值
【发布时间】:2016-09-17 09:07:43
【问题描述】:
#Function takes a character and a string and returns a boolean reflecting if
#the character is found in the string.
def isItThereS(letter, word):
    letInWord = 0
    for l in word:
        if l == letter:
            letInWord += 1
    return letInWord == True

当我把它放在像

这样的运算符中时

isItThereS("h","hello world") 是的

但是当我去寻找一个像“l”或“o”这样重复的字符时,它会返回 false。

isItThereS("l","你好世界") 假的

我该如何让它不返回 false,而是返回 True,因为从技术上讲,该字符在字符串中?

【问题讨论】:

  • 因为True 评估为1,所以如果出现>1,那么你会得到错误的输出。您必须使用像str.find() 这样的内置方法来执行此类操作,或者如果您仍想修改这段代码,请使用return not letInWord == False

标签: python string python-3.x character


【解决方案1】:

您可以简单地使用 in 运算符

def isItThereS(letter, word):
  return letter in word

【讨论】:

  • 顺便说一下函数名是可以改进的
  • 做到了!非常感谢你。 :)
【解决方案2】:

如果您真的想要为此使用自定义函数,请将返回值更改为 return letInWord >= 1。因为除了1 == True 之外的所有内容都将评估为False。 (因此,更合适的函数名称是 is_it_there_only_once)。

否则请使用armak提供的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-26
    • 2021-07-16
    • 2014-03-17
    • 2011-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多