不确定为什么这不起作用。
我得到的错误:ord() expected a character, but string of length 0 found
代码:
phrase = 'test'
number = 0
text = 0
random1 = ''
while (number <= len(phrase)):
letter = phrase[number:number+1]
text = ord(letter) - ord('a')
....
number = number + 1
如果是打印字母,我会在第一次迭代时获得t
感谢,
答案 0 :(得分:2)
你在最后一次迭代中失败了。因为你让数字取值为len(phrase)
,所以你试图将字符串分割到最后。
例如:
>>> "abc"[3:4]
''
字符串索引的范围从0到len(s)-1。
BTW:Python为您提供了更好的迭代字符串的方法:
phrase = 'test'
for letter in phrase:
text = ord(letter) - ord('a')
....
答案 1 :(得分:1)
你正在迭代短语的结尾,试试这个:
phrase = 'test'
number = 0
text = 0
random1 = ''
while (number < len(phrase)):
letter = phrase[number:number+1]
text = ord(letter) - ord('a')
请注意:
while (number < len(phrase)):
答案 2 :(得分:0)
你想要一个字符而不是一个字符串,对吗?尝试替换
letter = phrase[number:number+1]
与
letter = phrase[number]
答案 3 :(得分:0)
您确实需要显示更多代码。我是什么人?你在每个循环中递增它吗?
通常情况下,如果你正在递增i以像for循环一样行动,你想要循环这样的数字&lt; len(短语),而不是&lt; =。
此外,您可以替换
letter = phrase [number:number + 1]
与
letter = phrase [number]
答案 4 :(得分:0)
使用for..in
来处理字符串中的每个字母:
<强>代码强>:
phrase = 'test'
for letter in phrase:
print letter
<强>输出强>:
t
e
s
t
这将是进行字符迭代的更“pythonic”方式。通过这种方式,您可以保证在不必考虑结束时触及每个字母,就像您的代码中发生的那样。