亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在 Python 中對文件中的分數進行排序

在 Python 中對文件中的分數進行排序

鳳凰求蠱 2021-10-19 17:04:16
這是使用該文件的部分:file = open('Dice Game.txt', 'a')file.write(winner + '\n')file.close()file = open('Dice Game.txt', 'r')for line in file:    name = line.strip()    print(name)file.close()我知道打印樂譜的部分非常笨重,但這似乎是我讓它正確打印的唯一方法。我已經嘗試了很多我在網上找到的不同解決方案,但沒有一個解決方案按降序對文件進行數字排序(并打印前 5 個分數),它們似乎都給出了錯誤(當嘗試使用sort和sorted)。變量獲勝者如果定義為:winner = str(score) + '=' + str(username)我想弄清楚我應該如何更改該變量或如何按原樣對其進行排序。
查看完整描述

3 回答

?
犯罪嫌疑人X

TA貢獻2080條經驗 獲得超4個贊

要簡單地附加一個條目,您不需要打開文件兩次,因為您可以在r+模式下打開。這將讓你閱讀和寫作。rmode 將文件指針放在文件的開頭而不是結尾。當你打開文件時,你應該使用一個with語句來自動關閉文件,即使發生錯誤:


with open('Dice Game.txt', 'r+') as file:

    data = [line.strip() for line in file]

    print(winner, file=file)

data.append(winner)

賦值給的理解將data文件指針移到最后。然后print語句寫到最后。


對數據進行排序是完全獨立的蠕蟲。您必須拆分數據并按分數的數值進行排序。然后你將不得不重寫整個文件。雖然您可以通過一次打開來完成此操作,但在您的原始示例中打開兩次可能會更容易:


fname = 'Dice Game.txt'

with open(fname, 'r') as file:

    data = [int(score), name.rstrip() for score, name in (line.split('=', 1) for line in file)]

data.sort()

with open(fname, 'w') as file:

    file.writelines(f'{score}={name}\n' for score, name in data)


查看完整回答
反對 回復 2021-10-19
?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

讓我們存儲文件中的內容。


lines = []

for line in file:

    winner = line.strip()  # something like '30=Jim'

    score, name = winner.split('=')  # => '30', 'Jim'


    # now store that information for later

    lines.append((int(score), name))  # we're putting (30, 'Jim') in lines


# lines contains [(30, 'Jim'), (20, 'Amy'), (60, 'Susan'), ...]

print(lines)

您現在可以使用您在網上找到的一種方法進行排序lines嗎?


查看完整回答
反對 回復 2021-10-19
  • 3 回答
  • 0 關注
  • 245 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號