最大数は 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
最大数は 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
ここで使用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])、..。
ループの終了条件が意味をなさないためです。spot == len(nums)
ループの開始時には true ではないため、ループに入ることはありません。
while ループを終了する条件についてもう一度考えてみてください。最初は true で、リストの最後に到達すると false になります。
while spot == len(nums):
spot
は0で7なので、これlen(nums)
は決して当てはまりません。あなたは私が信じる!=
代わりに意味しました。==
これはきれいに見えます:
for i in nums:
if i > big:
big = i
print big
あなたはただすることができます
nums = [12, 7, 8, 15, 2, 10, 3]
big = max(nums)
spot = nums.index(big)