我有以下代码:
我试图将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
感谢。
答案 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的字符串中(按此顺序)
这是你在找什么?