2011-09-11 44 views
1

編輯:解決 - 源代碼在這裏:http://matthewdowney20.blogspot.com/2011/09/source-code-for-roku-remote-hack.htmlPython的整數發出

先感謝您的閱讀和可能回答這個。所以我的代碼())的命令下(選擇()和向上(都是預定義的)片,看起來像這樣:

def c1(row): 
    row_down = row 
    row_up = row 
    while row_down > '1': 
     Down() 
     row_down = row_down - 1 
     time.sleep(250) 
    Select() 
    time.sleep(.250) 
    while row_up > '1': 
     Up() 
     row_up = row_up - 1 
     time.sleep(250) 

所以,當我跑這跟任何C1(「3」)或c1(3)(不是jut 3,任何數字都這樣做)它停止響應,沒有錯誤或任何事情,但它執行第一個Down()命令,它看起來並沒有超過row_down = row_down - 1。所以我認爲它可能是卡在time.sleep(.250),因爲它沒有執行Select(),所以如果我從代碼中刪除time.sleep(.250),我得到這樣的錯誤:

Traceback (most recent call last): 
    File "test.py", line 338, in <module> 
    c1('3') 
    File "test.py", line 206, in c1 
    row_down = row_down - 1 
TypeError: unsupported operand type(s) for -: 'str' and 'int' 

這段代碼片段是設計用於從計算機控制roku播放器的大型程序的一部分,迄今爲止一切都已經奏效,但這是爲了在搜索字段中自動輸入,以便您不必連續滾動,直到找到一個字母並選擇。 c1(行)將是第1行第x行,如果你們中的任何一個人想要程序的源代碼,我會很樂意將它發送出去。無論如何謝謝你傾聽。

+0

我可以看到問題是什麼,但您沒有給我們足夠的信息給你一個*有用的*答案。 'row'是如何設置的,'Up()','Down()'和Select()'真的做了什麼? – SingleNegationElimination

+3

@ user802303:Python是強類型的。它不會將字符串視爲整數。另外,'time.sleep'在秒鐘內工作,所以第一個人睡了250秒。 –

+0

@TokenMacGuy:'row'是參數,我懷疑函數的作用並不重要。 –

回答

4

也許你的意思是

while row_down > 1: 

(注意:1不帶引號寫入)。如果是這樣,請致電c1c1(3)而不是c1('3')


此外,在CPython的(第2版,但不是第3版)的整數媲美字符串,但得到的答覆是可能不是你所期望的:

3 > '1' 
# False 

當任何整數比較的任何字符串,整數總是小於字符串,因爲(believe it or not!i(如整數)在字母表中的s(如字符串中)之前。


正如TokenMacGuy已經指出的那樣,除了用繩子整數提出了一個類型錯誤:

'3' - 1 
# TypeError: unsupported operand type(s) for +: 'int' and 'str' 

這也許可以解釋調用c1('3')當你看到的錯誤。

+0

謝謝,這完全幫助我調試它! –

+0

源代碼在這裏:http://matthewdowney20.blogspot.com/2011/09/source-code-for-roku-remote-hack.html –

1
>>> x = raw_input('enter a number: ') 
enter a number: 5 
>>> x 
'5' 
>>> type(x) 
<type 'str'> 
>>> x + 5 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: cannot concatenate 'str' and 'int' objects 
>>> type(int(x)) 
<type 'int'> 
>>> int(x) + 5 
10 
>>> 

(如果你使用python3,使用input代替raw_input

0

我懷疑循環運行出錯,因爲你可以從一個字符中減去以改變它:「b - 1 = a」。 (閱讀編輯)它也沒有錯誤是因爲,就像馬塞洛坎託斯在他的評論中所說的,第一次睡眠時間爲250秒,而不是0.250秒。刪除time.sleep時的錯誤可能會在您減去過去的ASCII字符範圍時出現,因爲它在沒有time.sleep的情況下更快地運行循環。

我希望有幫助!

編輯:其實,我認爲我所說的在C或其他方面的作品。在python中,它不起作用。我說的其他東西可能會流露出一些光芒!