最大的數字是15,但它打印12.幫助?爲什麼這不適用於Python?儘管最大的數字是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.幫助?爲什麼這不適用於Python?儘管最大的數字是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
因爲您的循環終止條件沒有意義。你將永遠不會進入循環,因爲spot == len(nums)
在循環開始時不是真的!
當你想讓while循環退出時,再考慮一下條件 - 它最初應該是真的,當你到達列表的末尾時會變成false。
while spot == len(nums):
由於spot
是0和len(nums)
是7這將永遠是正確的。我相信你的意思是!=
而不是==
。
這看起來清潔:
for i in nums:
if i > big:
big = i
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()
:
枚舉(迭代器[,開始] ) - >迭代器索引,可迭代值爲
返回一個枚舉對象。迭代必須是 支持迭代的另一個對象。枚舉對象產生包含 計數(從開始,默認爲零)和由可迭代參數產生的值的對。枚舉是獲得索引列表有用: (0,序列[0]),(1,序列[1]),(2,以次[2]),...
好吧,完全想知道,In [5]:'從哪裏來?我以前見過它,但我不知道它是什麼。這是Python解釋器的一些其他版本嗎? – jackcogdill
@yentup我正在使用[IPython](http://ipython.org/)解釋器。 –
Ohhh ok cool:P – jackcogdill
你可以只是做
nums = [12, 7, 8, 15, 2, 10, 3]
big = max(nums)
spot = nums.index(big)
你得到的錯誤是什麼? – Keith
那麼,什麼不工作? –
你想完成什麼?你有什麼嘗試?爲什麼它不工作? – tom