设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
楼主: mty1111
打印 上一主题 下一主题

【Python 第41课】 用文件保存游戏(3)

[复制链接]

0

主题

0

好友

96

积分

注册会员

Rank: 2

31#
发表于 2016-12-15 15:38:28 |只看该作者
  1. #-*-coding:utf-8-*-
  2. a = 1
  3. while a == 1:
  4.     from random import randint
  5.     name = raw_input('请输入你的名字')#输入名字
  6.    
  7.     f = open('jifen.txt')
  8.     lines = f.readlines()#读取文件内容并制成list
  9.     f.close()
  10.     scores = {}#建立一个字典
  11.     for i in lines:#遍历lines
  12.         s = i.split()#通过空格隔开制成list
  13.         scores[s[0]] = s[1:]#从list提出元素并在字典里赋值,名字是KEY,数据是VALUE


  14.     score = scores.get(name)#在字典中查找输入的名字
  15.     if score is None:
  16.         score = [0, 0, 0]
  17.    
  18.     game_times = int(score[0])#总游戏数
  19.     min_times = int(score[1])#最少轮数
  20.     total_times = int(score[2])#总轮数
  21.     if game_times > 0:
  22.         avg_times = float(total_times)/game_times
  23.     else:
  24.         avg_times = 0
  25.     print ' 你已经玩%d了次,最少%d轮猜出答案,平均%.2f轮猜出答案 '%(game_times,min_times,avg_times)

  26.     num = randint(1 , 100)
  27.     times = 0
  28.     print ' 请猜一个100以内的数字'
  29.     bingo = False
  30.     while bingo == False:
  31.         times += 1
  32.         answer = input()
  33.         if answer < num:
  34.             print 'too small'
  35.         if answer > num:
  36.             print 'too big'
  37.         if answer == num:
  38.             print 'bingo'
  39.             bingo = True
  40.    
  41.     if game_times == 0 or times < min_times:
  42.         min_times = times
  43.     total_times += times
  44.    
  45.     game_times += 1


  46.     scores[name] = [str(game_times),str(min_times),str(total_times)]#由于是新玩家 没有数据 给新玩家赋值
  47.     result = ' '
  48.     for n in scores:#遍历scores的KEY
  49.         line = n + ' ' +' '.join(scores[n]) + '\n'
  50.         #n是scores中的key也就是名字 scores[n] 是value 也就是数据

  51.         result += line#将遍历出来的元素加进result字符组

  52.         f = open ('jifen.txt','w')
  53.         f.write(result)
  54.         f.close
  55.         
复制代码
老师,请帮我看下后面的注解对不对,想了好长时间
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

32#
发表于 2016-12-15 23:55:56 |只看该作者
l0ve1o24 发表于 2016-12-15 15:38
老师,请帮我看下后面的注解对不对,想了好长时间

最后那段缩进不对。保存文件不应该在循环里
另外 close 没有加括号,这个没有调用成功
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

33#
发表于 2017-2-23 20:21:58 |只看该作者
不太理解这段代码:
scores = {}

for l in lines:

   s = l.split()

   scores[s[0]] = s[1:]
请问老师,scores是作为一个字典存在,还是一个list,为什么初始了scores={},后面却又使用中括号scores=[] ,求教。
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

34#
发表于 2017-2-24 16:56:28 |只看该作者
清如泉 发表于 2017-2-23 20:21
不太理解这段代码:
scores = {}

scores 是字典。
字典也有中括号方法,只不过是对 key 的访问,不是索引

并没有 scores = [] 这个代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

14

积分

新手上路

Rank: 1

35#
发表于 2017-2-25 09:13:37 |只看该作者
crossin先生 发表于 2017-2-24 16:56
scores 是字典。
字典也有中括号方法,只不过是对 key 的访问,不是索引

非常感谢老师~
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

36#
发表于 2017-2-26 17:09:22 |只看该作者
小坏 发表于 2013-8-8 15:16
自己调试时出的问题:
1、问题1:join前面那个单引号里少打了一个空格,导致下次运行时split拆不开。
for n ...

join的用法是将join前面的字符串(这里是’空格‘)插入到join后面的list中这里是(scores[n])。
而且此时若将n直接与' '.join(scores[n])相加也不行,两个字符串连在了一起,所以还要用一个'空格'加到两者之间。所以两个 空格 一个都不能少。
你可以试着修改和运行下面的代码看看输出是什么样子:
name = "Sam"
nums = [str(10), str(20), str(30)]

line = name + '  ' + '  '.join(nums) + '\n'
print line
回复

使用道具 举报

1

主题

0

好友

145

积分

注册会员

Rank: 2

37#
发表于 2017-2-26 17:11:32 |只看该作者
zhangxw 发表于 2015-10-7 15:58
居然是犯了这个错误  他一直报错下一行  我就没有检查上一行

看样子以后报错的那一行以及上面一行都要看 ...

多写写代码 你就慢慢会明白报错时解释器 到底想说什么。。。虽然他们有时候表达不清。。。
-------下次代码报错时,多看看上下行
回复

使用道具 举报

38#
无效楼层,该帖已经被删除

0

主题

0

好友

56

积分

注册会员

Rank: 2

39#
发表于 2017-8-16 01:20:41 |只看该作者
本帖最后由 枫叶落时 于 2017-8-16 01:46 编辑

先生,我按照你给的图,抄了一遍,但是他显示
1.png 2.png
有时候就显示中文的问题,求解怎么办
回复

使用道具 举报

0

主题

0

好友

154

积分

注册会员

Rank: 2

40#
发表于 2017-8-16 09:13:24 |只看该作者
枫叶落时 发表于 2017-8-16 01:20
先生,我按照你给的图,抄了一遍,但是他显示

有时候就显示中文的问题,求解怎么办 ...

标注红色的一行,输出信息中使用了4个占位符,但是后面仅给出了3个变量。请检查是否遗漏
回复

使用道具 举报

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

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

GMT+8, 2024-6-1 14:49 , Processed in 0.028403 second(s), 27 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部