返回列表中找到的char和index - Python

时间:2015-12-03 10:47:00

标签: python list char compare

我有以下代码:

我试图将userInputList中的每个字符与Letters数组进行比较,如果在字母数组中找到,我想将其与索引号一起返回;因此,如果用户要键入hello:它将检查是否' h'它存在于Letters中,返回值并返回它的索引,即7。

目前我的if函数检查索引而不是实际字符,因此它将始终返回true。

任何帮助都将不胜感激。

Letters = ['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o',
           'p','q','r','s','t','u','v','w','x','y','z']

userInput = input("Please enter what you would like to deycrpt:")

userInputList = list(userInput)

for i in range(0,len(userInputList)):
    print(userInputList[i])
    if userInputList[i] in Letters:
        print("true")

    i+=1

感谢。

3 个答案:

答案 0 :(得分:0)

这应该有效:

# Python 2 users add the following line:
from __future__ import print_function

for letter in userInputList:
    print(letter, end=': ')
    try:
        print('found at index', Letters.index(letter))
    except ValueError:
        print('not found')

您可以直接在userInputList上进行迭代,而无需使用i。 方法index返回第一个找到的条目的索引,如果该值不在列表中,则引发IndexError。因此,请抓住此错误并打印出未找到该字母的信息。最后,print(letter, end=': ')在打印结束时抑制了换行符:,这使得下一个打印件中的字母和消息显示在同一行上。

答案 1 :(得分:0)

 x = ord(raw_input("Digit a key: ")) - 97
 if x < 26:
      print("found at %d" % x)
 else:
      print("Not found!")

答案 2 :(得分:0)

首先,一些评论: 不要使用i + = 1,&#34; for i in range loop&#34;已经为你做了这件事。

您也可以使用:

for i, item in enumerate(userInputList):

返回 i 中用户列表中的索引以及

中该索引处的字符

然后你的支票很好,但是它会给你我给你的for循环:

if item in Letters:
    print("{} is in position {}".format(item, i))

格式化功能将取代&#34; {}&#34;在值项目和i的字符串中(按此顺序)

这是你在找什么?