0

私はプログラミングが初めてで、これを理解する方法がわかりません。

整数が最大整数を超えたときにエラーを発生させたい...だからインポートしたsys... 最大整数は2147483647で、最小は-2147483648です。フィボナッチ数列を使用してリストを作成しているので、次のようなコードを記述しようとしました。

if i > 2147483647:
    print "Overflow Error"

...最小値についても同様です。ただし、それは何もせず、過去の数字をリストすることはできます2147483647

私は何を間違っていますか?

4

2 に答える 2

2

Python long 整数には上限がなく、RAM に収まるものにのみ制限されます。

>>> import sys
>>> sys.maxint * 2
18446744073709551614L

値は、 Python が整数を表す代わりに型sys.maxintを使用し始める場所を示します。移行は自動的に行われます。longint

フィボナッチ数列を計算するときに、そのメモリ制限に達する可能性はほとんどありません。

于 2013-02-12T22:53:21.687 に答える
0

Martijn が言ったように、エラーは発生しません (非常に大きな数または非常に大きなサイズのリストを扱っている場合を除きます)。ただし、Python では、実際にすべてのメモリを使い果たすことはできません。メモリの使用量が多すぎると、エラーが発生します ( MemoryError)。

ただし、入力に制限を設定したい場合:

from sys import maxint
if i > maxint: raise ValueError('i cannot exceed 2147483647')
elif i < -1 * maxint: raise ValueError('i must be greater than -2147483647').

を上げることはお勧めしませんがOverflowErrorValueErrorより適切です。

質問がはっきりしないので、リストサイズが より大きいかどうかを確認しようとしている場合maxint:

from sys import maxint
if len(i) > maxint: raise ValueError('i cannot exceed 2147483647 elements')
# you don't need a minimum value, as the length cannot be negative

リストの最大値が より大きいかどうかを確認しようとしている場合maxint:

from sys import maxint
if max(i) > maxint: raise ValueError('i cannot exceed 2147483647')
于 2013-02-13T00:12:35.660 に答える