我目前正在学习使用ord()和chr()但是使用以下代码时遇到了困难。
b = '1101'
i = 0
while b != ' ' :
i = i*2 + ( ord(b[0]) + ord('0') )
b = b[1:]
Traceback (most recent call last):
File "<pyshell#86>", line 2, in <module>
i = i*2 + ( ord(b[0]) + ord('0') )
IndexError: string index out of range
为什么我的字符串超出范围并抛出错误而不是像我期望的那样退出循环?
答案 0 :(得分:1)
你的状况永远不会成真。 ' '
并不意味着什么,它意味着一个空旷的空间。除非您的原始字符串在末尾包含空格,否则它将永远不会成立。
如果您将其设为''
而不是' '
,则应该有效。
此外,由于变量在保持值时评估为True
,而False
在缩小为None
类型时,您可以编写与while b:
相同的内容。只要b
包含值,就会成立,但只要它为空,它就会停止循环。