python實(shí)現(xiàn)猜數(shù)游戲(保存游戲記錄)
本文實(shí)例為大家分享了python實(shí)現(xiàn)猜數(shù)游戲的具體代碼,供大家參考,具體內(nèi)容如下
內(nèi)容如下:
①游戲可以重復(fù)進(jìn)行,每當(dāng)一個(gè)用戶結(jié)束后,程序會(huì)提示是否還要繼續(xù),輸入y繼續(xù),輸入其他的字符退出;
②增加玩家姓名,并對(duì)該玩家的成績進(jìn)行記錄,并存儲(chǔ)在new.txt文件中;
③增加文件讀取功能,即每次程序啟動(dòng),都首先讀取new.txt文件,并給出之前玩家的最高成績和姓名。(當(dāng)最高成績重疊時(shí),取最新記錄)
import random import os if os.path.exists("D:\\new.txt")==False: #檢測文件是否存在 file = open('D:\\' + 'new' + '.txt','w') #若不存在則立即創(chuàng)建 file.close() temp=1 #控制是否繼續(xù) while temp: work=random.randrange(1,101) print(work) with open("D:\\new.txt") as f: #讀出最高紀(jì)錄 name="" socre=0 i=1 #奇為成績,偶為姓名 for line in f: if i%2!=0: if socre <= int(line): #(最高成績相同時(shí),取最新成績) socre=int(line) flag=1 else: if temp==1: name=line.rstrip() flag=0 i+=1 achievement=100 #成績初始為100 time=0 #次數(shù)初始為0 print("——————————猜數(shù)游戲——————————") print("\t\t請(qǐng)輸入一個(gè)1到100的整數(shù)") print("\t\t游戲最高紀(jì)錄%s"%name) print("\t\t分?jǐn)?shù)為:%d"%socre) print("\n\t\t注意:") print("\t\t 滿分100分,每打錯(cuò)一次扣2分!") print("\t\t 輸入的不是1到100的整數(shù),會(huì)有嚴(yán)厲懲罰!") print() name=str(input("請(qǐng)輸入你的姓名:")) while(achievement!=0): try: num=int(input("你猜測的數(shù)是:")) time+=1 if (num<1 or num>100): #整數(shù)1,100以外的情況 print("超出范圍了,你要受到懲罰!") achievement-=4 else: if num==work: print("\t恭喜你,答對(duì)了!") print("\t%s的分?jǐn)?shù)是%d"%(name,achievement)) print("\t你猜數(shù)的次數(shù)是%d"%time) if time==1: print("\t你太優(yōu)秀了!") elif 1<time<11: print("\t你還算優(yōu)秀了!") elif 10<time<21: print("\t你還可以吧!") else: print("\t一般水平!") string=str(achievement)+"\n" #將成績,姓名寫入 with open("D:\\new.txt","a") as file: file.write(string) string=name+"\n" with open("D:\\new.txt","a") as file: file.write(string) break else: achievement-=2 if num<work: print("數(shù)的范圍是%d到100"%num) else: print("數(shù)的范圍是1到%d!"%num) if achievement==0: #成績?yōu)?時(shí) print("\t對(duì)不起,你錯(cuò)了!") print("\t%s的分?jǐn)?shù)是%d"%(name,achievement)) print("\t你猜數(shù)的次數(shù)是%d"%time) break except: #輸入非整數(shù)時(shí) time+=1 achievement-=4 print("輸入的不是整數(shù),你要受到懲罰!") if achievement==0: print("\t對(duì)不起,你錯(cuò)了!") print("\t%s的分?jǐn)?shù)是%d"%(name,achievement)) print("\t你猜數(shù)的次數(shù)是%d"%time) break string=str(input("是否還要繼續(xù)?(y,繼續(xù)):")) #判斷繼續(xù)時(shí)是否為y if string!="y": temp=0
更多關(guān)于python游戲的精彩文章請(qǐng)點(diǎn)擊查看以下專題:
以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程
這篇文章主要介紹了Python中使用pprint函數(shù)進(jìn)行格式化輸出的教程,包括能夠控制輸出寬度等非常有用的特性,需要的朋友可以參考下2015-04-04python通過getopt模塊如何獲取執(zhí)行的命令參數(shù)詳解
這篇文章主要給大家介紹了關(guān)于python通過getopt模塊如何獲取執(zhí)行的命令參數(shù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Python函數(shù)之zip函數(shù)的介紹與實(shí)際應(yīng)用
zip() 函數(shù)用于將可迭代的對(duì)象作為參數(shù),將對(duì)象中對(duì)應(yīng)的元素打包成一個(gè)個(gè)元組,然后返回由這些元組組成的對(duì)象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下2022-03-03通過Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟
Jenkins是一個(gè)流行的開源自動(dòng)化服務(wù)器,用于快速構(gòu)建、測試和部署軟件,本文主要介紹了通過Python腳本+Jenkins實(shí)現(xiàn)項(xiàng)目重啟,具有一定的參考價(jià)值,感興趣的可以了解一下2023-10-10Python項(xiàng)目 基于Scapy實(shí)現(xiàn)SYN泛洪攻擊的方法
今天小編就為大家分享一篇Python項(xiàng)目 基于Scapy實(shí)現(xiàn)SYN泛洪攻擊的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-07-07Django的HttpRequest和HttpResponse對(duì)象詳解
這篇文章主要介紹了Django的HttpRequest和HttpResponse對(duì)象,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下2018-01-01