设为首页收藏本站

Crossin的编程教室

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

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

[复制链接]

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

11#
发表于 2016-6-29 14:24:19 |显示全部楼层
Yumiao_HyunMin 发表于 2016-6-28 15:12
想问个问题,如果想让输出的总成绩按照每个人总分降序排列要怎么写?我在results.append(result)后面用了la ...

排序本身写的没问题,你的results是什么格式的,l[1]表示用每一项的第2个元素来排序
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

12#
发表于 2016-6-29 16:33:56 |显示全部楼层
Yumiao_HyunMin 发表于 2016-6-29 15:47
我在for 里面输出results以后,中文名字都是用\x跟着十六进制数来表示:

这样肯定没法比的,你得把分数分离出来,变成数字类型才能比较大小排序,比如把每一项都变成
['xxxx', 200]
['yyy', 201]
这样的格式
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

13#
发表于 2016-6-30 15:09:43 |显示全部楼层
Yumiao_HyunMin 发表于 2016-6-30 12:54
先生您好!我改了下代码把四个人的成绩变成了四个list:最后输出results可以看到是这样的:但是排序还是 ...

你的results应该是包含所有结果的整个list,而不是分4次做。你现在是循环了4次,每次拿其中一个,然后完了写到文件里。所以执行完就剩最后一条记录。
另外,分数你要用数字类型,才能排序。
所以你的 results 应该是类似这样的数据:
  1. [['\xe5\xbc\xa0\xe9\xa3\x9e \t:', 200], ['\xe5\x88\x98\xe5\xa4\x87 \t:', 205], ['\xe5\x85\xb3\xe7\xbe\xbd \t:', 376], ['\xe6\x9b\xb9\xe6\x93\x8d \t:', 100]]
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

14#
发表于 2016-7-3 14:50:16 |显示全部楼层
liqingyunfeng 发表于 2016-7-2 22:46
老师看我这样写的输出是正确的能行吗?
f= file('score.txt')
lines=f.readlines()
  1. result = ''
  2. for line in lines:
  3.     data=line.split()
  4.     sum = 0
  5.     for score in data[1:]:
  6.         sum += int(score)
  7.     result += '%s\t:%d\n'%(data[0],sum)
  8. output = file('www.txt','a')
  9. output.write(result)
  10. output.close()
复制代码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

15#
发表于 2016-12-10 18:57:15 |显示全部楼层
l0ve1o24 发表于 2016-12-10 16:26
这堂课好难,看了半天
先读取文件成list
再for循环一个个列出来

是。
有点复杂,慢慢理清楚
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

16#
发表于 2017-9-21 23:40:15 |显示全部楼层
python小小白 发表于 2017-9-21 16:03
你好,请问results = []代表什么呢?

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

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

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

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

18#
发表于 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
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

19#
发表于 2018-3-17 15:10:36 |显示全部楼层
kakason 发表于 2018-3-17 00:45
先生,不明白文中所说的每次循环前sum 都要清0,sum不是用来赋值0后来循环一个一个相加的吗? ...

清0是在循环之前啊,每个人的总分不要先清零再算吗
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

174

主题

45

好友

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

20#
发表于 2018-4-16 23:09:05 |显示全部楼层
jzhan030 发表于 2018-4-16 15:53
Traceback (most recent call last):
  File "C:/Users/win10/PycharmProjects/python3/read the data.py", ...

应该是的
有中文,而且不是gbk编码
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

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

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

GMT+8, 2024-5-3 08:16 , Processed in 0.030689 second(s), 22 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部