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 <代码>。