2017-07-22 42 views
-3

我目前正在学习使用ord()和chr(),但以下代码有困难。当到达字符串末尾时退出While循环

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 

为什么我的字符串超出范围,并抛出了错误,而不是退出,因为我想到了循环?

+3

b不会成为空间。空间从哪里来?顺便说一句好的标题。 – harold

+1

您的错误基于while循环和缩小的字符串,您可能希望将'chr'和'ord'部分从答案中提取出来并给它一个更具描述性的标题,以便将来具有相同错误的人可以找到这个回答。 –

+0

请编辑您的文章和a)使标题描述您遇到的问题或您问的问题,因此它对未来的读者有一定的实用价值,这些读者可以在搜索结果列表中看到它,以及b)更具体的关于你遇到的问题比*有困难*。你在发布的代码中遇到了哪些**特定的困难?见[问]。 –

回答

1

你的条件从未成为现实。 ' '并不意味着什么,它意味着一个空的空间。除非你的原始字符串在最后包含空格,否则它永远不会是真的。

它应该工作,如果你使它''而不是' '

而且,由于变量计算到True当他们持有的价值和False时减少到None类型,你可以写同样的事情while b:。只要b有一个值,这将是真实的,但只要它是空的,它就会停止循环。

+0

虽然更习惯写作的方式可能是'while b:' –

+0

我只是在想这是否会起作用我将它输入到我的编译器中,看看它会hahaha –

+0

感谢您确认对我来说我会添加它回答 –