2013-01-22 33 views

回答

2

因爲您的循環終止條件沒有意義。你將永遠不會進入循環,因爲spot == len(nums)在循環開始時不是真的!

當你想讓while循環退出時,再考慮一下條件 - 它最初應該是真的,當你到達列表的末尾時會變成false。

1

while spot == len(nums):

由於spot是0和len(nums)是7這將永遠是正確的。我相信你的意思是!=而不是==

這看起來清潔:

for i in nums: 
if i > big: 
    big = i 
print big 
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()

枚舉(迭代器[,開始] ) - >迭代器索引,可迭代值爲

返回一個枚舉對象。迭代必須是 支持迭代的另一個對象。枚舉對象產生包含 計數(從開始,默認爲零)和由可迭代參數產生的值的對。枚舉是獲得索引列表有用: (0,序列[0]),(1,序列[1]),(2,以次[2]),...

+0

好吧,完全想知道,In [5]:'從哪裏來?我以前見過它,但我不知道它是什麼。這是Python解釋器的一些其他版本嗎? – jackcogdill

+0

@yentup我正在使用[IPython](http://ipython.org/)解釋器。 –

+0

Ohhh ok cool:P – jackcogdill

0

你可以只是做

nums = [12, 7, 8, 15, 2, 10, 3] 
big = max(nums) 
spot = nums.index(big) 
相關問題