a = (3,4,11,12,5,2,7,8,6,9,10)
for i in range(len(a)):
b = a[i]
for x in range(2,15):
if b > x:
c = i
print(c)
>>>
10
>>>
在上述例子中,我試圖由每個元件對一個特定的範圍進行比較,以提取從元組中的最大元素(2-14 )。
上述例子的結果應該是3(12指數),但我得到10
誰能告訴我什麼是錯的代碼
a = (3,4,11,12,5,2,7,8,6,9,10)
for i in range(len(a)):
b = a[i]
for x in range(2,15):
if b > x:
c = i
print(c)
>>>
10
>>>
在上述例子中,我試圖由每個元件對一個特定的範圍進行比較,以提取從元組中的最大元素(2-14 )。
上述例子的結果應該是3(12指數),但我得到10
誰能告訴我什麼是錯的代碼
你得到10的結果,因爲你元組有11個元件和最後的索引是10。
您在第二循環該指數等於設置爲c
:
for x in range(2,15):
if b > x:
c = i
因爲10我s是循環的元組的最後一個值,並且b > x
對於b = 10
至少有一次爲真,c
被賦予10(即10)的索引,並且最後打印的是該值。
你會如何解決這個問題呢?
我會做這樣的事情:
a = (3,4,11,12,5,2,7,8,6,9,10)
c = 0
for i in range(len(a)):
if a[i] in range(2, 15) and a[i] > a[c]:
c = i
print(c)
這將打印3
它只是遍歷元組,檢查當前值的範圍是2-15,如果該值大於以前的最高值,如果兩者真它設置爲當前指數作爲新c
輸出:
您的代碼只是傳遞最後一個元素的索引,它放置在您定義的範圍內(實際上是在索引10處)。
你需要存儲局部最大和反對它比較每個新元素(而不是使用範圍(2,15)。
我不是蟒蛇是familar,但得到的指數最大的元素,這可能是一個解決方案:?
a = (3,4,11,12,5,2,7,8,6,9,10)
localMaximum = 0
for i in range(len(a)):
b = a[i]
if b>localMaximum:
localMaximum = b
c = i
print(c)
在Python中,indendation是至關重要的,您是否介意編輯您的代碼塊以使它具有正確的縮進(4)? –
爲什麼要使用在所有循環
a = (3,4,11,12,5,2,7,8,6,9,10)
print(a.index(max(a)))
如果您正在尋找2個指數之間在特定範圍的局部最大
startindex, endindex = 2, 14
b = a[startindex : endindex]
print(b.index(max(b)) + startindex)
如果範圍爲2至14你的意思是在元組,而不是指數範圍值那麼這對我的作品。它會打印首次出現的索引。
a = (3,4,11,12,5,2,7,8,6,9,10)
subsetTuple = tuple(item for item in a if item in range(2,14))
print(a.index(max(subsetTuple)))
或者你也可以做到在同一行
a = (3,4,11,12,5,2,7,8,6,9,10)
print(max(enumerate(a), key = lambda pair: pair[1] if pair[1] in range(2, 14) else False)[0])
我想一個特定的範圍(2-14)內定位的元組的最大元素的索引。如果我的代碼正常工作c將是3(12的索引) – user3454234
@ user3454234是的,但是你的代碼無法正常工作,我解釋了原因,因爲那是你的問題:-) –
你會如何解決問題? – user3454234