python入门(五) 猜随机数小游戏改进(涉及数据和文件的更新)
2018-02-28 14:40
417 查看
# 猜随机数小游戏代码如下 from random import randint num = randint(0, 100) game_times = 0 # 玩家游戏次数 min_times = 0 # 最短次数猜中 total_times = 0 # 共猜测次数 times = 0 # 本次多少轮猜出答案 scores = {} # 记录数据的字典 # import random 可采用引入模块的形式写随机数代码 # num = random.randint(0, 100) def judge_new(name):#判断新老用户 global game_times global min_times global total_times try: f = open("data.txt") lines = f.readlines() # 读取成为list数据 f.close() except: print("文件打开失败.") #从列表中读取用户数据 for l in lines: s = l.split() # 把每一行拆分成list scores[s[0]] = s[1:] # 名字作为key,剩下的为value score = scores.get(name) # 查找当前玩家的数据 if score is None: score = [0, 0, 0] # 新手数据初始化 #拆分数据及新手数据初始化 game_times = int(score[0]) min_times = int(score[1]) total_times = int(score[2]) if game_times > 0: avg_times = float(total_times) / game_times print("%s, 你已经玩了%d次,最少%d轮猜出答案,平均%.2f轮猜出答案" % (name, game_times, min_times, avg_times)) print("%s, 请继续您的游戏." % name) else: avg_times = 0 print("%s, 请开始您的新游戏." % name) #判断结果输出 def judge_game(): global times _yournum = int(input("please input your number:")) times = 1 while _yournum != num: if _yournum < num: print("这是你的第%d次猜测," % times + "你的数字%d比随机数小." % _yournum) else: print("这是你的第%d 4000 次猜测,你的数字%d比随机数大." % (times, _yournum)) _yournum = int(input("please input your number:")) times = times + 1 # 此处不能够用for循环,python中for循环不太适用条件循环 print("这是你的第%d次猜测,你的数字%d与随机数相同." % (times, _yournum)) # 游戏部分 def upgrade(name): global game_times global min_times global total_times if game_times == 0 or times < min_times: min_times = times total_times += times game_times += 1 #游戏后更新变量 scores[name] = [str(game_times), str(min_times), str(total_times)] result = "" for n in scores: # n取到的为key值 line = n + " " + " ".join(scores ) + "\n" result += line #制作输出字符串 try: f = open("data.txt", "w") f.write(result) f.close() except: print("文件打开失败.") #结果输出文件 name = input("请输入你的名字:") # name 用来区分玩家的标志 judge_new(name) judge_game() upgrade(name)
以上程序中所用到的知识点如下:
字典
用法:dictionary = {'key' = value, ...}#一个键值对的集合字典查找函数get()用法:dictionary.get(查找的key值)#若查找不到,函数返回None处理异常
用法try:引发异常的语句块except:处理异常的语句块#适用情况#输入不合规定的值#需要打开的文件不存在python "=="和"is"的区别
#"=="如果如果变量引用的对象值相等,则会返回True#"is"如果两个变量指向相同的对象,则会返回True
python中的"与、或、非"
与:and
或:or
非:not
for...in遍历字典
用法for name in score:print(score[name])#遍历的变量中存储的是字典的key
# dir(模块名)#查看引入的模块中含有的函数和变量
相关文章推荐
- 快速入门Python中文件读写IO是如何来操作外部数据的?
- 『Python思考』数据检查和校验的函数_不断更新_不断改进
- Python学习入门基础教程(learning Python)--5.7 Python文件数据记录存储与处理
- 使用python读取csv文件,并将数据更新至mysql
- python入门(四) 统计班级同学总成绩(涉及文件)
- 【零基础入门学习Python笔记004】改进第一次设计的游戏
- python入门(二) 猜随机数小游戏改进
- Python 3从入门到精通12-创建新文件并写入内容,在文件尾部更新内容
- Python入门的36个例子 之 28 -> Pickle —— 利用文件存储对象
- [原]用c#做了一个桌面程序用来分离excel文件里的数据时出现“操作必须使用一个可更新的查询”错误的解决
- Enterprise Library 4.1数据访问应用程序块快速入门【5】在事务内执行多个更新程序
- 用python编写脚本从wireshark导出的数据文件中提取数据
- 批量图纸数据抽取及更新的实现(可不打开文件)
- MySoft.Data从入门到精通系列(五)【数据更新】
- Python处理日志之取得文件列表(更新)
- ADO.NET Entity Framework插入和更新数据(实体框架快速入门)
- python 例子生成随机数,读文件
- Python入门的36个例子 之 18 -> Modules —— 将它们放到不同的文件里
- excel文件更新数据库
- Enterprise Library 4.1数据访问应用程序块快速入门【6】使用DataSet更新数据库