2013-03-25 45 views
0

我有一個腳本,我試圖讓我的RPi工作。它的工作原理在64位系統上如預期,但不能在32我得到python overflowror在32位樹莓派上運行的長整數

OverflowError:Python的INT太大,轉換爲C長

這裏是腳本

for number in xrange(int("0101010101"), int("9898989898")+1): 
    number = `number`.zfill(10) 
    prev = '' 
    i = 0 
    for c in `number`: 
      if c in prev: 
        break 
      else: 
        i += 1 
        prev = c 
      if i>=len(`number`): 
        print number 

我能做到這一點精用Perl,但不能弄清楚如何使用Python

這裏完成是Perl相當於

my $num = ""; 
for $num ("0101010101" .. "0101989898"){ 
    if ($num =~ /00|11|22|33|44|55|66|77|88|99/o) { 
      ++$num;} 
    else { 
      print "$num\n";}} 

也嘗試用python3編寫它,但我完全不熟悉3

+0

該代碼甚至無法正常運行。你確定要''編號'.zfill(10)''?(填充字符串'編號')? – 2013-03-25 04:48:06

+0

是的,輸出它0101010101打印爲101010101.想要保留10位數字我只是複製/粘貼了代碼我發佈在python解釋器中,以確保我沒有輸入錯字,它對我運行良好,所以不知道它爲什麼不會運行。 – otkaz 2013-03-25 05:35:11

+0

我不確定它是否是語義錯誤 – 2013-03-25 06:04:26

回答

2

你可以看看Python文檔以供參考。

CPython的實現細節:x範圍()旨在是簡單,快速。爲了實現這一點,實現可能會施加限制。 Python的C實現將所有參數限制爲本地C long(「short」Python整數),並且還要求元素的數量適合本地C long。如果需要更大的範圍,可以使用itertools模塊製作替代版本:islice(count(start,step),(stop-start + step-1 + 2 *(step < 0))// step)。 http://docs.python.org/2/library/functions.html#xrange

+0

我認爲我對於python來說,這太愚蠢了,perls語法總是有意義的,我用itertools搞亂了,但是不知道如何格式化所有的東西,感謝指向正確的方向 – otkaz 2013-03-25 06:30:27

+0

我使用了intertools。 count再次感謝您的幫助 – otkaz 2013-03-25 07:16:46

+0

不要灰心喪氣,每次都要學習它,只需要瞭解與語言有關的事情,不要發佈完整的答案,因爲只有通過實驗才能自學,您可以接受答案, 如果它 真的有幫助。 – 2013-03-25 08:55:55