さて、ちょっと問題があります。申し訳ありませんが、Python は初めてです。
数字であるスコアでリストを並べ替えようとしていますが、引き分けの場合は名前の長さで並べ替える必要があり、名前が短いほどランクが高くなります。
だから私はここにこのリストを持っています
11 Jenny
8 Adam
10 Mark
8 Ada
ここでこのコードを使用すると、次のように返されます
11 Jenny
10 Mark
10 Mark
10 Mark
def sort(names, counts):
newArr = []
newNames = names
newCount = counts
for x in range(0, len(names)):
newArr.append(findBiggest(newNames, newCount))
for z in range(0, len(names)):
name = newArr[len(newArr) - 1].split(" ")[1]
print name
if names[z] == name:
tempArr1 = newNames
tempArr2 = newCount
newNames = []
newCount = []
for y in range(0, len(tempArr1)):
if y != z:
newNames.append(tempArr1[y])
newCount.append(tempArr2[y])
return newArr
def findBiggest(names, counts):
biggest = 0;
for x in range(0, len(counts)):
if int(counts[x]) > biggest:
biggest = int(counts[x])
biggestCountArr = [[], []]
for x in range(0, len(counts)):
if int(counts[x]) == biggest:
biggestCountArr[0].append(counts[x])
biggestCountArr[1].append(names[x])
if len(biggestCountArr[0]) == 1:
return str(biggestCountArr[0][0]) + " " + biggestCountArr[1][0]
else:
return smallestLength(biggestCountArr)
def smallestLength(twoDArr):
names = twoDArr[1]
shortestLen = 0
for x in range(0, len(names)):
if len(names[x]) > shortestLen:
shortestlen = len(names[x])
for x in range(0, len(names)):
if len(names[x]) == shortestLen:
return str(twoDArr[0][x]) + " " + twoDArr[1][x]
ちょうどあなたが知っているので
11 Jenny
8 Adam
10 Mark
8 Ada
として出てくるはずです
11 Jenny
10 Mark
8 Ada
8 Adam