2016-02-19 48 views
0

这是作业: 编写一个程序,该程序从用户那里获取一个单词。对于单词中的每个字母,在字符串'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'中打印该字母的索引(例如,'A'将打印0,'z'将打印51)。在一行上打印所有索引,并用空格分隔。如何在用户输入的字符串中找到所有字母的索引

alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz' 

word = input('Type a word: ') 

for ind in word: 
    answer = ind.index(alphabet[0,-1]) 
    print(answer) 

我的代码无法运行。它说“TypeError:字符串索引必须是整数”。 0和-1都是整数,它们表示给定字符串的第一个和最后一个位置。我不明白为什么这个运行不正常。代码应该在位置0处使用字母表,看到字中没有匹配的值,然后移动到下一个字符,直到它到达键入字符串中的第一个字符的位置。然后它应该打印出这个数字,并继续。我究竟做错了什么?

+0

你的意思是'字母[0,-1]'? – Arman

+0

你的代码所说的是“取每个ind',在'alphabet' [0,1]'处找到'ind'中的字符,然后打印结果,即使我输入它,也没有意义。 –

+0

作为一边注意 - https://docs.python.org/2/library/string.html,你可以使用'string.ascii_letters' –

回答

1

您打电话给index错误的方法。你需要交换参数:

answer = alphabet.index(ind) 
+0

谢谢! –

+0

当你可以的时候,记得要“接受”一个答案;这允许SO整齐地退休问题 – Prune

+0

好极了,请点击复选标记“接受”我的答案:-) –

1

我认为你的意思是遵循这样的模式。从输入单词中获取每个字符,并查找出现字符的字母索引。

answer = [] 
for char in word: 
    answer += [alphabet.index(char)] 

你可以用一个列表理解

answer = [alphabet.index(char) for char in word] 
+1

您可能需要处理字母表中的缺失值,也许会返回一些特殊值。像这样的东西会做'i = alphabet.index(char)如果字母表中的字符不是' – karakfa

0

进一步简化或者你可以使用ord()功能只是用ASCII码,

word = input("word:") 
for i in range(len(word)): 
    print(ord(word[i:i+1]), end="") 

这会给你从输出数量字符串和它不仅仅限于字母表

相关问题