if __name__ == '__main__':
l=[]
s=[]
for _ in range(int(input())):
name = input()
score = float(input())
l.append(name)
s.append(score)
mx=max(s[0],s[1])
smin=min(s[0],s[1])
n=len(s)
for i in range(2,n):
if(mx>s[i]):
smin=mx
mx=s[i]
elif(s[i]<smin) and \
max!=s[i]:
smin=s[i]
ind=smin
sminval=s.index(ind)
g=0
for i in range(n):
index_sec=s.index(s[i])
print(index_sec)
if(smin==s[i])and\
sminval!=index_sec:
x=s[i]
g=g 1
y=l[sminval]
輸入
5
Harry
37.21
Berry
37.210
Tina
37.2
Akriti
41
Harsh
39
輸出
0
0
2
3
4
而我得到這種型別的索引值(i)。我無法找到正確的元素索引,我需要解釋為什么會發生這種情況?
uj5u.com熱心網友回復:
這不是非常結構化的代碼,因此很難弄清楚您真正想要它做什么。我沒法給你修。但是,如果您想知道發生了什么,這里有一個演練。
行“ index_sec=s.index(s[i])”將回傳串列“s”中與在位置 i 找到的值匹配的第一個索引。僅當所有分數s都是唯一的時,這才是唯一索引。
然而,哈利和貝瑞的得分都是“37.2”。因此,當您查找 Harry 分數的索引,并查找 Berry 分數的值時,您將不會得到 Harry 和 Berry……您將得到串列中的第一個……在這種情況下,Harry…… . 兩次。
換一種說法,當你拿哈利的分數查起來時,你會得到哈利。但是,當您查看 Berry 的分數并查找時,您也會得到 Harry,因為 Harry 是串列中第一個具有該分數的專案。由于 Harry 在索引 0 中,結果是“0”后跟“0”。
uj5u.com熱心網友回復:
完全誠實,我也不知道要做什么,目標是什么。我只能說,您錯誤地使用了 max() 和 min() 方法。您要查找的是串列 s 的第一項和 s 的第二項之間的最大和最小值。你的意思是:
mx=max(s[0],s[len(s)-1])
smin=min(s[0],s[len(s)-1])
但是,這也是不正確的,因為這只會在第一項和最后一項之間進行檢查。但是你想要所有專案中最大的。所以正確的語法是:
mx=max(s)
smin=min(s)
除此之外,我真的無能為力,因為我不知道代碼的范圍是什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/348101.html
