python 猜数游戏(保存游戏记录)

猜数游戏

内容如下:
①游戏可以重复进行,每当一个用户结束后,程序会提示是否还要继续,输入y继续,输入其他的字符退出;
②增加玩家姓名,并对该玩家的成绩进行记录,并存储在new.txt文件中;
③增加文件读取功能,即每次程序启动,都首先读取new.txt文件,并给出之前玩家的最高成绩和姓名。(当最高成绩重叠时,取最新记录)

import random
import os
if os.path.exists("D:\\new.txt")==False:        #检测文件是否存在
    file = open('D:\\' + 'new' + '.txt','w')    #若不存在则立即创建
    file.close()

temp=1	#控制是否继续
while temp:
    work=random.randrange(1,101)		
    print(work)
    
    with open("D:\\new.txt") as f:              #读出最高纪录
        name=""
        socre=0
        i=1	#奇为成绩,偶为姓名
        for line in f:
            if i%2!=0:
                if socre <= int(line):		#(最高成绩相同时,取最新成绩)
                    socre=int(line)
                    flag=1
            else:
                if temp==1:
                    name=line.rstrip()
                    flag=0
            i+=1
    
    achievement=100	#成绩初始为100
    time=0		#次数初始为0

    print("——————————猜数游戏——————————")
    print("\t\t请输入一个1到100的整数")
    print("\t\t游戏最高纪录%s"%name)
    print("\t\t分数为:%d"%socre)
    print("\n\t\t注意:")
    print("\t\t  满分100分,每打错一次扣2分!")
    print("\t\t  输入的不是1到100的整数,会有严厉惩罚!")
    print()
    name=str(input("请输入你的姓名:"))
    while(achievement!=0):
        try:
            num=int(input("你猜测的数是:"))
            time+=1

            if (num<1 or num>100):			#整数1,100以外的情况
                print("超出范围了,你要受到惩罚!")
                achievement-=4
	    
            else:
                if num==work:
                    print("\t恭喜你,答对了!")
                    print("\t%s的分数是%d"%(name,achievement))
                    print("\t你猜数的次数是%d"%time)
                    if time==1:
                        print("\t你太优秀了!")
                    elif 1<time<11:
                        print("\t你还算优秀了!")
                    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("数的范围是%d到100"%num)
                    else:
                        print("数的范围是1到%d!"%num)

            if achievement==0:				     #成绩为0时
                print("\t对不起,你错了!")
                print("\t%s的分数是%d"%(name,achievement))
                print("\t你猜数的次数是%d"%time)
                break
	
        except:						     #输入非整数时
            time+=1
            achievement-=4
            print("输入的不是整数,你要受到惩罚!")
            if achievement==0:
                print("\t对不起,你错了!")
                print("\t%s的分数是%d"%(name,achievement))
                print("\t你猜数的次数是%d"%time)
                break
	
    string=str(input("是否还要继续?(y,继续):"))      	     #判断继续时是否为y   
    if string!="y":
        temp=0
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值