python数字猜谜_PYTHON猜数字

# 要求:

# 为猜数字游戏增加记录玩家成绩的功能,包括玩家用户名、玩的次数和平均猜中的轮数等;

# 如果记录里没有玩家输入的用户名,就新建一条记录,否则在原有记录上更新数据;

# 对玩家输入做检测,判定输入的有效性,并保证程序不会因异常输入而出错;

# 将游戏打包为 exe 文件。(可选)

#思路:

#文件记录三个变量:玩家姓名,玩的总次数,玩的总轮数,平均猜中的轮数

# #打开文件,如果玩家存在,读取玩家原先的游戏次数,总轮数

# 如果玩家不存在,创建玩家姓名

# 开始游戏

# 游戏结束,保存玩家游戏次数(原游戏次数+本次游戏次数),总轮数(原轮数+本次轮数)

# 关闭文件

#用到的知识点:输入输出,循环(循环内添加变量),条件判断

#盲点:如何对输入有效性做检测,打包exe文件

#盲点:如何进行文件处理,记录数据,更新数据

# f=open("玩家游戏成绩记录.txt","w")

# f.write("name,0,0,0")

# f.close()

name=input("请输入你的玩家ID吧:")

f=open("玩家游戏成绩记录.txt","r+")

lines=f.readlines()

scores={}

for l in lines:

s=l.split()

scores[s[0]]=s[1:]

score=scores.get(name)

if score==None:

score=[0,0,0]

else:

score = scores.get(name)

import random

total_times=int(score[0])

times=float(score[1])

if times!=0:

average_times = times / total_times

else:

average_times=0

if name not in scores.keys():

print("你好,%s!\n欢迎新玩家"%(name))

else:

print("%s,你好,欢迎回来!\n你已经玩了%d次,平均%.2f猜中一次"%(name,total_times,average_times))

while True:

choice = input("1:开始游戏 2:退出游戏\n")

if choice=="1":

print("%s,下面请你猜一个1-10之间的数字"%(name))

real_number = random.randint(1, 10)

while True:

number = input("猜猜我是几")

b=number.isdigit()

if b==True:

number=int(number)

times=times+1

if number

print("你猜的太小了")

elif number>real_number:

print("你猜的太大了")

else:

print("你猜对了")

break

else:

print("你的输入有错误,请输入数字")

total_times=total_times+1

average_times=float(times/total_times)

print("%s,你一共玩了%d次,平均%.2f轮猜中一次"%(name,total_times,average_times))

else:

print("%s,我们下回见"%(name))

break

scores[name]=[str(total_times),str(times),str(average_times)]

result=""

for n in scores:

lines=n+" "+" ".join(scores[n])+"\n"

result+=lines

print(result)

f.write(result)

f.close

#改变文件中数值的方法:

#将文件逐行读出

#将对应的姓名和值储存成字典

###########原始处理方法:用字典取出值(字符串),转化为列表修改。

###########标红:不用那么复杂,当字典按键取值的时候,值自动生成一个列表,需要需改内容,只需要

########### 变量名=字典(键)=值(值的类型为列表)

########### 变量名[位置]=新变量

########## 存储的时候:

########### for n in 字典:###字典会按键返回每个键的内容为一个元素

########## result=n(键)+" ".join(字典名(n))+"\n" ###把键+值转化成字符串

########## result+=line #####每次的内容转化为字符串后

########## f=open("文件名","w")

######### f.write(result)

######### f.close

######### 总结:f的文件需要先读取出来,转化为可以改变的序列,通过追踪序列的某个位置得到该位置的变量,换成新变量,最终把这个序列转化为字符串重新存回去

######## 因为写入模式一次性会覆盖所有内容,所以每次都要先取出全部,修改其中的部分,再把新的全部内容存回去

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值