0

RPiで作業しようとしているスクリプトがあります。64 ビット システムでは期待どおりに動作しますが、32 ビット システムでは動作しません。

OverflowError: Python int が大きすぎて C long に変換できません

ここにスクリプトがあります

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にはまったく慣れていません

4

1 に答える 1

2

Python Docs を参照してください。

CPython 実装の詳細: xrange() は、シンプルで高速であることを目的としています。実装では、これを達成するために制限が課される場合があります。Python の C 実装では、すべての引数がネイティブ C の long (「短い」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

于 2013-03-25T05:39:18.327 に答える