noob python问题,从列表中提取字母

noob python问题,从列表中提取字母,python,Python,不知道为什么这不起作用。 获取错误:ord()应为字符,但找到长度为0的字符串 代码: phrase = 'test' number = 0 text = 0 random1 = '' while (number <= len(phrase)): letter = phrase[number:number+1] text = ord(letter) - ord('a') .... number = number + 1 短语='test' 数字=0

不知道为什么这不起作用。 获取错误:
ord()应为字符,但找到长度为0的字符串

代码:

phrase =  'test'
number = 0
text = 0
random1 = ''

while (number <= len(phrase)):

    letter = phrase[number:number+1]

    text = ord(letter) - ord('a')
    ....
    number = number + 1
短语='test'
数字=0
文本=0
随机数1=''

而(number)您在上一次迭代中失败了。因为您让number取值
len(短语)
,所以您试图将字符串切分到末尾之外

例如:

>>> "abc"[3:4]
''
字符串索引的范围从0到len(s)-1

顺便说一句:Python提供了更好的方法来迭代字符串:

phrase = 'test'
for letter in phrase:
    text = ord(letter) - ord('a')
    ....

你想要的是字符而不是字符串,对吗?试着替换你的

letter = phrase[number:number+1]


如果要迭代到短语末尾,请尝试以下操作:

phrase =  'test'
number = 0
text = 0
random1 = ''

while (number < len(phrase)):

    letter = phrase[number:number+1]

    text = ord(letter) - ord('a')
短语='test'
数字=0
文本=0
随机数1=''
while(数字
注意:

while (number < len(phrase)):
while(数字
您确实需要显示更多的代码。我是什么?您是否在每个循环中递增它


通常,如果将i递增,使其与for循环类似,则需要循环,使numberfor..in
来处理字符串中的每个字母:

代码

phrase = 'test'
for letter in phrase:
   print letter
t
e
s
t
输出

phrase = 'test'
for letter in phrase:
   print letter
t
e
s
t

这将是做字符迭代的更“Pythic”方式。这样你就可以保证每一个字母都不用考虑到结尾,就像你的代码中所发生的那样。

我在那里没有看到<代码> i <代码>。