设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 34380|回复: 19
打印 上一主题 下一主题

【Python 第40课】 用文件保存游戏(2)

[复制链接]

10

主题

0

好友

52

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2013-7-25 17:14:42 |只看该作者 |倒序浏览
话接上回。我们已经能从文件中读取游戏成绩数据了,接下来就要考虑,怎么把我们每次游戏的结果保存进去。

首先,我们需要有一个变量来记录每次游戏所用的轮数:
  1. times = 0
复制代码
然后在游戏每进行一轮的时候,累加这个变量:
  1. times += 1
复制代码
当游戏结束后,我们要把这个变量的值,也就是本次游戏的数据,添加到我们的记录中。

如果是第一次玩,或者本次的轮数比最小轮数还少,就记录本次成绩为最小轮数:
  1. if game_times == 0 or times < min_times:
  2.    min_times = times
复制代码
把本次轮数加到游戏总轮数里:
  1. total_times += times
复制代码
把游戏次数加1:
  1. game_times += 1
复制代码
现在有了我们需要的数据,把它们拼成我们需要存储的格式:
  1. result = '%d %d %d' % (game_times, min_times, total_times)
复制代码
写入到文件中:
  1. f = open('e:\py\game.txt', 'w')
  2. f.write(result)
  3. f.close()
复制代码
0.jpg

按照类似的方法,你也可以记录一些其他的数据,比如设定一种记分规则作为游戏得分。虽然在这个小游戏里,记录成绩并没有太大的乐趣,但通过文件来记录数据的方法,以后会在很多程序中派上用场。

#==== Crossin的编程教室 ====#
微信ID:crossincode
QQ群:312723402

面向零基础初学者的编程课
每天5分钟,轻松学编程

回复

使用道具 举报

0

主题

0

好友

276

积分

中级会员

Rank: 3Rank: 3

沙发
发表于 2014-5-5 22:08:08 |只看该作者
请问你运行时输出‘Bingo’后怎么继续循环进入下一次的游戏的呢?我的总是要关闭后在运行才能进入下一次游戏
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2014-5-6 11:13:04 |只看该作者
文心雕龙 发表于 2014-5-5 22:08
请问你运行时输出‘Bingo’后怎么继续循环进入下一次的游戏的呢?我的总是要关闭后在运行才能进入下一次游 ...

外面再套一层 while 循环
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

276

积分

中级会员

Rank: 3Rank: 3

地板
发表于 2014-5-6 12:39:44 |只看该作者
crossin先生 发表于 2014-5-6 11:13
外面再套一层 while 循环

当然有while循环,但是还是不能实现 输出这个(================ RESTART =================)后多次游戏
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2014-5-6 19:16:49 |只看该作者
文心雕龙 发表于 2014-5-6 12:39
当然有while循环,但是还是不能实现 输出这个(================ RESTART =================)后多次游戏 ...

那要靠你自己输出了
在整个程序外面套一层大循环(当然不是直接写个while就完了,可能还要做一些小调整)
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

276

积分

中级会员

Rank: 3Rank: 3

6#
发表于 2014-5-6 21:50:48 |只看该作者
crossin先生 发表于 2014-5-6 19:16
那要靠你自己输出了
在整个程序外面套一层大循环(当然不是直接写个while就完了,可能还要做一些小调整) ...

谢谢,已经解决了,原来可以直接Run就行。。。。。
回复

使用道具 举报

0

主题

0

好友

39

积分

新手上路

Rank: 1

7#
发表于 2014-10-14 18:35:12 |只看该作者
本帖最后由 sun_yuanzy 于 2014-10-14 18:41 编辑

zan
回复

使用道具 举报

0

主题

0

好友

54

积分

注册会员

Rank: 2

8#
发表于 2015-5-28 12:05:00 |只看该作者
  1. #coding:utf-8
  2. from random import randint

  3. #load file
  4. f=open('game.txt')
  5. score=f.read().split()

  6. game_times = int(score[0])
  7. min_times = int(score[1])
  8. total_times = int(score[2])

  9. #judge
  10. if game_times>0:
  11.     avg_times = float(total_times)/game_times
  12. else:
  13.     avg_times = 0
  14. #output result
  15. print "你已经玩了%d次,最少%d轮猜出了答案,平均%.2f轮猜出了答案"%(game_times,min_times,avg_times)

  16. num=randint(1,100)
  17. times = 0
  18. print "Guess what i think?"
  19. bingo = False
  20. while bingo == False:
  21.     times+=1
  22.     answer = input()
  23.     if answer < num:
  24.         print "太小了!"
  25.     if answer > num:
  26.         print "太大了!"
  27.     if answer == num:
  28.         print "BINGO!"
  29.         bingo = True
  30. if game_times ==0 or times <= min_times:
  31.     min_times = times
  32. total_times +=times
  33. game_times +=1
  34. result = '%d %d %d'%(game_times,min_times,total_times)
  35. f = open('game.txt','w')
  36. f.write(result)
  37. f.close()
复制代码
回复

使用道具 举报

0

主题

1

好友

132

积分

注册会员

Rank: 2

9#
发表于 2015-12-8 14:19:54 |只看该作者
get
回复

使用道具 举报

0

主题

0

好友

96

积分

注册会员

Rank: 2

10#
发表于 2016-12-14 14:53:52 |只看该作者
  1. #-*-coding:utf-8-*-
  2. a = 1
  3. while a == 1:
  4.     from random import randint
  5.     f = open('jifen.txt')
  6.     score = f.read().split()
  7.     game_times = int(score[0])#总游戏数
  8.     min_times = int(score[1])#最少轮数
  9.     total_times = int(score[2])#总轮数
  10.     if game_times > 0:
  11.         avg_times = float(total_times)/game_times
  12.     else:
  13.         avg_times = 0
  14.     print ' 你已经玩%d了次,最少%d轮猜出答案,平均%.2f轮猜出答案 '%(game_times,min_times,avg_times)

  15.     num = randint(1 , 100)
  16.     times = 0
  17.     print ' 请猜一个100以内的数字'
  18.     bingo = False
  19.     while bingo == False:
  20.         times += 1
  21.         answer = input()
  22.         if answer < num:
  23.             print 'too small'
  24.         if answer > num:
  25.             print 'too big'
  26.         if answer == num:
  27.             print 'bingo'
  28.             bingo = True
  29.    
  30.     if game_times == 0 or times < min_times:
  31.         min_times = times
  32.     total_times += times
  33.    
  34.     game_times += 1

  35.     jilu = '%d %d %d'%(game_times,min_times,total_times)
  36.     f = open('jifen.txt', 'w')
  37.     f.write(jilu)
  38.     f.close()
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-11-22 19:43 , Processed in 0.040264 second(s), 23 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部