2017-07-22 41 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

感謝您確認對我來說我會添加它回答 –