4 回答

TA貢獻(xiàn)2080條經(jīng)驗 獲得超4個贊
簡短的使用方法:)
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

TA貢獻(xiàn)1868條經(jīng)驗 獲得超4個贊
發(fā)生這種情況是因為您正在比較諸如此類的項目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']

TA貢獻(xiàn)1719條經(jīng)驗 獲得超6個贊
import re
string1 = lines[0]
int(re.search(r'\d+', string1).group())
而不是 arr = int(float(lines[0])),嘗試使用上面的那個。String1 包含整數(shù)值。在那上面應(yīng)用冒泡排序。

TA貢獻(xiàn)1936條經(jīng)驗 獲得超7個贊
這很明顯,Python 會告訴您問題出在哪里:您正在明確嘗試將lines[0]
包含字符的整個第一行 ( ) 轉(zhuǎn)換為數(shù)字。
僅提取第一行arr
和這一行的后續(xù)排序是沒有用的。而且,轉(zhuǎn)換為float
然后轉(zhuǎn)換int
為絕對沒有必要。
如果所有數(shù)字的長度都相同(2 個字符),您可以通過簡單地忽略轉(zhuǎn)換來簡單地將行排序為字符串(而不是數(shù)字)。您可以簡單地將錯誤行更改為
arr = lines
讓你的程序工作。(當(dāng)然,或者將以下所有arr
引用重命名lines
為 。)
我還會刪除程序的前 3 行,它們目前與程序的其余部分無關(guān)。
添加回答
舉報