久久国产乱子伦精品免费M,亚洲一区二区三区91,欧美国产在线视频,国产精品视频久久

自學Python編程【第三十九節】用文件保存游戲(3)

歡迎你來到馬哥自學Python編程教室,上面兩講我們學習了用文件保存游戲的前兩節,分別是游戲成績的讀取和記錄,按理說有來有往,應該結束了,那么我們這一講學習什么呢?

你的小游戲現在已經可以保存成績了,但只有一組成績,不管誰來玩,都會算在里面。所以今天我還要加上一個更多的功能:存儲多組成績。玩家需要做的就是,在游戲開始前,輸入自己的名字。而我會根據這個名字記錄他的成績。這個功能所用到的內容我們幾乎都說過,現在要把它們結合起來。

首先要輸入名字,這是我們用來區分玩家成績的依據:

name = raw_input('請輸入你的名字:')

接下來,我們讀取文件。與之前不同,我們用readlines把每組成績分開來:

lines = f.readlines()

再用一個字典來記錄所有的成績:

scores = {} 
for l in lines:
s = l.split()
scores[s[0]] = s[1:]

這個字典中,每一項的key是玩家的名字,value是一個由剩下的數據組成的數組。這里每一個value就相當于我們之前的成績數據。

我們要找到當前玩家的數據:

score = scores.get(name)

字典類的get方法是按照給定key尋找對應項,如果不存在這樣的key,就返回空值None。

所以如果沒有找到該玩家的數據,說明他是一個新玩家,我們給他初始化一組成績:

if score is None: 
score = [0, 0, 0]

這是我們拿到的score,已經和上一課中的score一樣了,因此剩下的很多代碼都不用改動。

當游戲結束,記錄成績的時候,和之前的方法不一樣。我們不能直接把這次成績存到文件里,那樣就會覆蓋掉別人的成績。必須先把成績更新到scores字典中,再統一寫回文件中。

把成績更新到scores中,如果沒有這一項,會自動生成新條目:

scores[name] = [str(game_times), str(min_times), str(total_times)]

對于每一項成績,我們要將其格式化:

result = '' 
for n in scores:
line = n + ' ' + ' '.join(scores[n]) + '\n'
result += line

把scores中的每一項按照“名字 游戲次數 最低輪數 總輪數\n”的格式拼成字符串,再全部放到result里,就得到了我們要保存的結果。

最后就和之前一樣,把result保存到文件中。

如果你充分理解了這個程序,恭喜你,你對文件處理已經有了一個基本的了解。在日常工作學習中,如果需要處理一些大量重復機械的文件操作,比如整理格式、更改文件中的部分文字、統計數據等等,都可以試著用Python來解決。

恭喜您在Python自學的道路上又堅持了一天,針對用文件保存游戲的Python自學教程我們就給大家分享完了,最近幾節的自學難度也在提升,唯一的解決辦法就是大家反復練習,反復敲代碼,自己不能解決有疑問的問題,就去找人幫助自己理解,堅持一下,我們一定能學會!

好啦,今天的分享到這里就結束了,希望大家能夠持續關注馬哥教育官網,每天都會有大量優質內容與大家的分享!

聲明:文章來源于網絡,侵刪!

相關新聞

歷經多年發展,已成為國內好評如潮的Linux云計算運維、SRE、Devops、網絡安全、云原生、Go、Python開發專業人才培訓機構!

    1. 主站蜘蛛池模板: 丹阳市| 平遥县| 错那县| 玛沁县| 巴东县| 富阳市| 正阳县| 武功县| 项城市| 红安县| 灵川县| 会同县| 尼木县| 乐东| 泸水县| 徐水县| 金湖县| 宁波市| 洛隆县| 仙桃市| 神池县| 河源市| 房山区| 夏河县| 合肥市| 玉林市| 贡觉县| 北京市| 绥棱县| 青神县| 合阳县| 志丹县| 浪卡子县| 博野县| 西乌| 名山县| 文成县| 渭南市| 峨边| 鄂托克前旗| 兴海县|