-5

最大数は 15 ですが、12 と表示されます。

nums = [12, 7, 8, 15, 2, 10, 3]

big = nums[0]

spot = 0

while spot == len(nums):
    spot = spot + 1
    if(nums[spot] > big):
        big = nums[spot]
print big
4

4 に答える 4

2

ここで使用enumerate()し、繰り返してnums[1:]ください:

In [5]: nums = [12, 7, 8, 15, 2, 10, 3]

In [6]: big = nums[0]

In [7]: for i,x in enumerate(nums[1:],1):
   ...:     if x>big:
   ...:         big=x
   ...:         spot=i
   ...:         

In [8]: spot
Out[8]: 3

In [9]: big
Out[9]: 15

help()enumerate()

enumerate(iterable [、start])->インデックスのイテレータ、iterableの値

列挙オブジェクトを返します。iterableは、反復をサポートする別のオブジェクトである必要があります。enumerateオブジェクトは、カウント(startから、デフォルトはゼロ)とiterable引数によって生成された値を含むペアを生成します。enumerateは、インデックス付きリストを取得するのに役立ちます:(0、seq [0])、(1、seq [1])、(2、seq [2])、..。

于 2013-01-22T00:21:06.480 に答える
2

ループの終了条件が意味をなさないためです。spot == len(nums)ループの開始時には true ではないため、ループに入ることはありません。

while ループを終了する条件についてもう一度考えてみてください。最初は true で、リストの最後に到達すると false になります。

于 2013-01-22T00:19:36.387 に答える
1

while spot == len(nums):

spotは0で7なので、これlen(nums)は決して当てはまりません。あなたは私が信じる!=代わりに意味しました。==

これはきれいに見えます:

for i in nums:
 if i > big:
  big = i
print big
于 2013-01-22T00:20:56.810 に答える
0

あなたはただすることができます

nums = [12, 7, 8, 15, 2, 10, 3]
big = max(nums)
spot = nums.index(big)
于 2013-01-22T00:44:55.247 に答える