设为首页收藏本站

Crossin的编程教室

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

【Python 第33课】 处理文件中的数据

[复制链接]

0

主题

0

好友

154

积分

注册会员

Rank: 2

41#
发表于 2017-8-14 08:58:23 |只看该作者
枫叶落时 发表于 2017-8-11 00:26
先生,我对自增的用法很疑惑,以及上面用的自增也很不解,自增等于列表中的元素相加吗? ...

你所指的自增用法是指
a += b这样的用法吗?
这个语句的作用是讲b的值加到a现有的值上并赋值给a,等价于
a = a + b
回复

使用道具 举报

0

主题

0

好友

56

积分

注册会员

Rank: 2

42#
发表于 2017-8-14 14:14:45 |只看该作者
谢谢你,明白了~
回复

使用道具 举报

0

主题

0

好友

6

积分

新手上路

Rank: 1

43#
发表于 2017-9-21 16:03:40 |只看该作者
你好,请问results = []代表什么呢?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

44#
发表于 2017-9-21 23:40:15 |只看该作者
python小小白 发表于 2017-9-21 16:03
你好,请问results = []代表什么呢?

results 赋值为一个空列表
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

46

积分

新手上路

Rank: 1

45#
发表于 2017-9-28 16:31:46 |只看该作者
花了一晚上时间终于想清楚了。
  1. score=open('scores.txt')
  2. data1=score.readlines() #把所有内容转换为list

  3. results=[]

  4. for i in data1:
  5.     a=i.split()

  6.     sum=0
  7.     for score in a[1:]:
  8.         sum+=int(score)
  9.     result='%s : %d'%(a[0],sum)

  10.     results.append(result) #将result结果添加到之前建立好的results的list中

  11. final=open('new.txt','w')
  12. final.writelines(results)
  13. final.close()
复制代码
但是输出结果有些问题,变成了一行
a : 10b : 6c : 3
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

46#
发表于 2017-9-28 17:29:09 |只看该作者
Matthewguo 发表于 2017-9-28 16:31
花了一晚上时间终于想清楚了。但是输出结果有些问题,变成了一行
a : 10b : 6c : 3
...

writelines不负责帮你加换行,所以要手动给每行加上 \n
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

1

主题

0

好友

15

积分

新手上路

Rank: 1

47#
发表于 2017-10-16 13:37:50 |只看该作者
本帖最后由 LnnQi 于 2017-10-16 13:44 编辑
  1. f = open('score.txt')
  2. lines = f.readlines()
  3. print(lines)
  4. f.close()

  5. results = []

  6. for line in lines:
  7.     print(line)
  8.     data = line.split()
  9.     print(data)
  10.     sum = 0
  11.     for score in data[1:]:
  12.         sum += int(score)
  13.     result = '%s \t:%d\n' %(data[0],sum)
  14.     print(result)
  15.     results.append(result)

  16. print(results)
  17. output = open('result.txt','w')
  18. output.writelines(result)
  19. output.close()
复制代码
检查了几遍感觉应该没错,但是result.txt里只有一行诸葛亮,主公们被吃掉了……
倒数第二行把list写错了,把汇总输出的results写成了临时存数据的result……


回复

使用道具 举报

0

主题

0

好友

88

积分

注册会员

Rank: 2

48#
发表于 2018-3-10 16:50:34 |只看该作者
f=open('score.txt')       #打开分数的文件,保存于f中
lines=f.readlines()       #按行读取数据,保存于lines,为list
f.close()                 #关闭文件
for line in lines:        
    data=line.split()     #每一行按空格分离,每一行又是一个list
    summ=0
    for score in data[1:]:             #第二个元素(也就是分数)开始求和
        summ=summ+int(score)
        result='%s:%d'%(data[0],summ)
       results=[]
        results.append(result)
    print(results)
output=open('jieguo.txt','w')
r=str(results)
output.write(r)

运行后能把成绩总分输出,但最后3行好像有问题,创建了jieguo.txt文件,但里面是空白,没法写入结果,请问这是怎么回事?
(另外:我用的py3)
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

49#
发表于 2018-3-11 15:42:45 |只看该作者
yamika 发表于 2018-3-10 16:50
f=open('score.txt')       #打开分数的文件,保存于f中
lines=f.readlines()       #按行读取数据,保存于 ...

你没有close()
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

0

主题

0

好友

88

积分

注册会员

Rank: 2

50#
发表于 2018-3-11 19:21:17 |只看该作者
crossin先生 发表于 2018-3-11 15:42
你没有close()

解决了!原来不关文件影响这样严重。感谢指导!
回复

使用道具 举报

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

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

GMT+8, 2024-4-20 09:21 , Processed in 0.030377 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部