2016-09-17 82 views
0
#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”,“你好,当返回一个错误的布尔世界“) 真

,但是当我去找到一个茶重复类似于“l”或“o”的片段会返回错误。

isItThereS( “L”, “世界你好”) 假

我怎么会去得到那个不返回false,而是因为返回True字符在技术上是在字符串中?

+0

因为'True'的计算结果为'1',因此如果事件发生> 1,那么您将得到错误的输出。你必须使用像str.find()这样的内置方法来执行这样的操作,或者如果你还想修改这段代码,那么使用'return not letInWord == False' – ZdaR

回答

2

,你可以简单地使用在运营商

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

btw函数名可以改进 – armak

+0

这样做!非常感谢你。 :) – Wiggs

0

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

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