python气泡排序失败

2024-09-21 00:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经写了这段代码,我希望它能组织玩家的分数

file = open("leaderboard.txt", "a")
file.write(str(winnerscore)+ ": " + winner + "\n")
file.close()
fileReading = open("leaderboard.txt","r")
lines = fileReading.read()
fileReading.close()
lines = lines.split("\n")
for line in lines:
    print(line)

def bubbleSort(arr):
    n = len(arr) 

    for i in range(n-1): 

        for j in range(0, n-i-1): 


            if arr[j] > arr[j+1] : 
                arr[j], arr[j+1] = arr[j+1], arr[j] 

# Driver code to test above 
arr = int(float(lines[0]))

bubbleSort(arr) 

print ("Sorted array is:") 
for i in range(len(arr)): 
    print ("%s" %arr[i])

它会生成此内容,但不会对其进行排序:

76: Daniel
36: Gabriel
30: Perry
92: Avi
28: Yehuda
46: Jeremy
54: Mordechai
96: Paul
80: Pauline
72: Fran

不幸的是,它会出现以下错误消息:

  arr = int(float(lines[0]))
ValueError: could not convert string to float: '76: Daniel'
How do I fix this so it sorts from highest score to lowest score?

我如何制作它,以便它对列表中的分数进行排序


Tags: tointxtforcloserangeopenfloat
3条回答
import re
string1 = lines[0]
int(re.search(r'\d+', string1).group())

尝试使用上面的方法,而不是arr=int(float(行[0])。String1包含整数值。在这一点上,应用气泡排序

之所以会发生这种情况,是因为您正在处理像if 76: Daniel>36: Gabriel这样的项目 你可以试试这样的

mylist=['76: Daniel','36: Gabriel','30: Perry','92: Avi','28: Yehuda','46: Jeremy','54: Mordechai','96: Paul','80: Pauline','72: Fran']

def bubbleSort(arr):
    n=len(arr)
    for i in range(n-1): 

        for j in range(0, n-i-1): 


            if int(arr[j][:2]) < int(arr[j+1][:2]) : 
                arr[j], arr[j+1] = arr[j+1], arr[j] 
bubbleSort(mylist)
print(mylist)
>>>['96: Paul', '92: Avi', '80: Pauline', '76: Daniel', '72: Fran', '54: Mordechai', '46: Jeremy', '36: Gabriel', '30: Perry', '28: Yehuda']

使用的捷径:)

import pandas as pd

df = pd.read_table('leaderboard.txt', delimiter=":", names=('scor', 'Name'))
df.sort_values(by='scor', inplace=True)
df.head()

    scor        Name
7    96        Paul
3    92         Avi
8    80     Pauline
0    76      Daniel
9    72        Fran
6    54   Mordechai
5    46      Jeremy
1    36     Gabriel
2    30       Perry
4    28      Yehuda

arr = df.values  

相关问题 更多 >

    热门问题