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ù),輸入其他的字符退出;
②增加玩家姓名,并對該玩家的成績進(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請輸入一個(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("請輸入你的姓名:"))
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恭喜你,答對了!")
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對不起,你錯(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對不起,你錯(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游戲的精彩文章請點(diǎn)擊查看以下專題:
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python的input,print,eval函數(shù)概述
這篇文章主要為大家概述了python的input,print,eval函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-01-01
利用Python批量識(shí)別電子賬單數(shù)據(jù)的方法
這篇文章主要介紹了利用Python批量識(shí)別電子賬單數(shù)據(jù)的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作
這篇文章主要介紹了python 實(shí)現(xiàn)rolling和apply函數(shù)的向下取值操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06
使用Python的Tornado框架實(shí)現(xiàn)一個(gè)一對一聊天的程序
這篇文章主要介紹了使用Python的Tornado框架實(shí)現(xiàn)一個(gè)一對一聊天的程序,程序基于WebSocket,需要的朋友可以參考下2015-04-04

