最大的数字是 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 对于获取索引列表很有用:(0, seq[0]), (1, seq[1]), (2, seq[2]), ...
因为您的循环终止条件没有意义。你永远不会进入循环,因为spot == len(nums)
在循环开始时不是真的!
当您希望 while 循环退出时,再考虑一下条件 - 它最初应该为 true,当您到达列表末尾时变为 false。
while spot == len(nums):
因为spot
是 0 和len(nums)
7,所以这永远不会是真的。你的意思!=
不是==
我相信。
这看起来更干净:
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)