0

では、numbersList という名前のリストを作成しました。変数番号 = 20、カウント = 0、スポット = 0 です。

numbersList = range(1, 11)
number = 20
count = 0
spot = 0.

リスト内の20になる数字を数えたいと思います。私はこれを試しました:

while spot <= len(numbersList):
    if(number % int(numbersList[spot]) == 0):
        count = count + 1
    spot = spot + 1
print count

しかし、リストのインデックスが範囲外であると言い続けています。助けてください!

4

4 に答える 4

2

whileループの最後の反復でインデックスが行き過ぎています。をに変更する<=<、動作するはずです:

while spot < len(numbersList):

または、forループを使用します。

for i in numbersList:
    if number % i == 0:
        count += 1
于 2013-02-20T04:08:44.967 に答える
1

float を使用してリストにインデックスを付けることはできず、spot = 0. は float です。その疑似期間を削除してみてください!

于 2013-02-20T04:08:39.720 に答える
1

最初の行は SyntaxError です

>>> when spot <= len(numbersList):
  File "<stdin>", line 1
    when spot <= len(numbersList):

私はあなたが使用するつもりだと思うwhile

しかし、for ループを使用する方が簡単です

for spot in numbersList:
    if number % spot == 0:
        count += 1
print count

これは、ジェネレーター式を sum に渡すことによって、より簡単に記述することもできます。

count = sum(number % spot == 0 for spot in numbersList)
于 2013-02-20T04:09:42.187 に答える
0

私は古典的なmap-reduceを好みます

 reduce( lambda x,y: x+y, [ number%spot for spot in numbersList ] )
于 2013-02-20T04:24:03.880 に答える