如何创建一个查找列表中单词索引的函数?

时间:2017-03-24 20:58:12

标签: python python-3.x

我试图扩展我的刽子手游戏,以便你能够选择你想要的单词数量。我将通过使用选择方法(例如if,else)来做到这一点,但是在使用该函数后我遇到了一个错误,所以在找到错误的来源并开始解决错误之后,我确定了漏洞功能。基本上我试图使用index()函数来定位元素的位置但由于某种原因它不起作用它总是输出0.

def wordLength(word):
    r = word
    num=word.index(r)
    print(num)

5 个答案:

答案 0 :(得分:1)

我认为您要实现的目标是这样的(因为您提到您在问题的评论中使用了DataFrame1 tag1 tag2 tag3 tag4 ..... 0 0 1 0 1 1 0 0 1 1 2 1 1 0 0 3 1 1 0 0 4 0 1 0 0 5 0 0 0 0 DataFrame2 tag2 tag4 tag5 tag9 ..... 0 1 1 0 0 1 0 0 1 1 2 0 0 0 0 3 0 0 0 1 4 0 0 1 1 5 0 1 0 0 DataFrame3 tag1 tag3 tag4 tag6 ..... 0 0 1 0 1 1 0 0 1 1 2 1 1 0 0 3 1 0 0 0 4 0 1 0 0 5 1 0 0 1

.split()

结果为'3',这是句子中'a'的位置。

修改

或者,如果你想要每个单词中每个字母的索引号..

sentence = "this is a sentence"
sentence_split = sentence.split()

def wordLength(word, sentence):
    try:
        index = sentence.index(word)
        print(index)
    except:
        print("word not in sentence")

wordLength("a", sentence_split)

结果:[[0,'t'],[1,'h'],[2,'i'],[3,'s'],[0,'i'],[1, 's'],[0,'a'],[0,'s'],[1,'e'],[2,'n'],[3,'t'],[1,'e '],[2,'n'],[6,'c'],[1,'e']]

答案 1 :(得分:1)

如果我理解你的要求,那么你应该能够为刽子手游戏选择一个单词并创建单词中每个字母的列表,然后找到列表中字母的索引()。

如果没有更清楚的问题,就像你要求一个单词中的字母索引一样。我所拥有的就是下面的内容。

这样的事情应该有所帮助:

hm_word = []   #the list to be created for the given word

def wordlist(hangman_word): #Creates a list of each letter of the word
    for letter in hangman_word:  
        hm_word.append(letter)  

wordlist("bacon")# calls the function and puts in the word chosen

print (hm_word) #just to show the list has been created
print (hm_word.index("o")+1) #This prints the index of the letter 'o' however you can use a user input here.
#NOTE: I used +1 in the print for the index to show the index number starting from 1 not 0

您可以使用此作为起点,通过获取用户输入并将其放入索引()来获取猜测字母的索引。 我只用“o”作为它如何工作的一个例子。

答案 2 :(得分:1)

ng-controller

答案 3 :(得分:0)

它返回0,因为你在输入变量上为自己运行索引。您将需要索引输入变量的一部分。稍微修改一下你的例子,它将返回0以外的其他内容:

create function dbo.DelimitedSplitN4K (
        @pString nvarchar(4000)
      , @pDelimiter nchar(1)
      )
    returns table with schemabinding as
    return
      with e1(n) as (
        select 1 union all select 1 union all select 1 union all 
        select 1 union all select 1 union all select 1 union all 
        select 1 union all select 1 union all select 1 union all select 1
      )
      , e2(n) as (select 1 from e1 a, e1 b)
      , e4(n) as (select 1 from e2 a, e2 b)
      , cteTally(n) as (select top (isnull(datalength(@pString)/2,0))
          row_number() over (order by (select null)) from e4)
      , cteStart(n1) as (select 1 union all 
          select t.n+1 from cteTally t where substring(@pString,t.n,1) = @pDelimiter)
      , cteLen(n1,l1) as(select s.n1
      ,   isnull(nullif(charindex(@pDelimiter,@pString,s.n1),0)-s.n1,4000)
        from cteStart s
      )
     select ItemNumber = row_number() over(order by l.n1)
          , Item       = substring(@pString, l.n1, l.l1)
       from cteLen l;
    go

这应该打印数字2。

答案 4 :(得分:0)

"字长"这里对你的功能有点用词不当。如果你想要一个单词的长度,你可以这样做: LEN(字)

def findChar(word, char):
    # don't go any further if they aren't strings
    assert isinstance(word, basestring)
    assert isinstance(char, basestring)
    # return the character you are looking for,
    # in human friendly form (1 more than the python index)
    return word.lower().index(char.lower()) + 1

使用:

>>>print findChar('heat', 'a')
3   # a is in the third position.

这显然没有多次解决单个字符在单词中的问题。