设为首页收藏本站

Crossin的编程教室

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

如何将成绩排序

[复制链接]

7

主题

0

好友

122

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2019-2-20 14:35:23 |只看该作者 |倒序浏览
# -*- coding: utf-8 -*-
from random import randint
num= randint(1,1024)
b=False
c=0
print '让我们来猜数字把'
while b== False:
    print '请输入1~1024中任一数字'
    a=input()
    c=c+1
    if a>num:
        print '%d 太大了' %a
    if a< num:
        print '%d 太小了' %a
    if a==num:
        print '请输入您的姓名'
        name=raw_input()
        print 'you try %d time to get a 正确答案' %c
        x=open('aaa.txt','a')
        ddd=('\n'+name+'     '+str(c))
        x.write(ddd)
        x.close()
        b=True


我这实现了将每次的成绩记录下来,我想将成绩排序,该怎么做
回复

使用道具 举报

7

主题

0

好友

122

积分

注册会员

Rank: 2

沙发
发表于 2019-2-20 15:14:18 |只看该作者
lists=file('aaa.txt')
lines=lists.readlines()
lists.close()
results=[]
for line in lines:
    data=line.split()
    result=(data[0],data[1])
    results.append(result)
print sorted(results,key=lambda x:x[1])

这样好像可以,但是我第一行是姓名+成绩,我不想让这个加入排序。。。
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2019-2-20 17:40:33 |只看该作者
1861674 发表于 2019-2-20 15:14
lists=file('aaa.txt')
lines=lists.readlines()
lists.close()

那你可以先把 result[0] 拿出来,对 result[1:]排序,然后在重新合并到一起
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

122

积分

注册会员

Rank: 2

地板
发表于 2019-2-21 10:17:50 |只看该作者
crossin先生 发表于 2019-2-20 17:40
那你可以先把 result[0] 拿出来,对 result[1:]排序,然后在重新合并到一起

from random import randint
num= randint(1,1024)
b=False
c=0
print '让我们来猜数字把'
while b== False:
    print '请输入1~1024中任一数字'
    a=input()
    c=c+1
    if a>num:
        print '%d 太大了' %a
    if a< num:
        print '%d 太小了' %a
    if a==num:
        print '恭喜你猜对了'
        print '请输入您的姓名'
        name=raw_input()
        print '你用了 %d 次猜到正确答案' %c
        x=open('aaa.txt','a')
        ddd=('\n'+name+'     '+str(c))
        x.write(ddd)
        x.close()
        b=True


lists=file('aaa.txt')
lines=lists.readlines()
lists.close()
results=[]
for line in lines:
    data=line.split()
    result=(data[0],data[1])
    results.append(result)
results1=results[0]
del results[0]
results2=sorted(results,key=lambda x:x[1])
results2[0:0]=results1
print results2


这样可以了,谢谢老师,那如何将输出换行了,我先自己研究下,还在考虑排序
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

5#
发表于 2019-2-21 14:42:47 |只看该作者
1861674 发表于 2019-2-21 10:17
from random import randint
num= randint(1,1024)
b=False

输出文件就是自己加上字符 \n
控制台换行也可以 \n,或者单独 print
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

122

积分

注册会员

Rank: 2

6#
发表于 2019-2-21 17:49:38 |只看该作者
crossin先生 发表于 2019-2-21 14:42
输出文件就是自己加上字符 \n
控制台换行也可以 \n,或者单独 print

老师我有两个问题
1:我现在输出的是我排序后的list,不知道怎么加上换行,
2:我现在并没有把排序后的内容保存进我的文件,正常写的时候会需要保存进我的文件吗?
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

7#
发表于 2019-2-21 22:00:20 |只看该作者
1861674 发表于 2019-2-21 17:49
老师我有两个问题
1:我现在输出的是我排序后的list,不知道怎么加上换行,
2:我现在并没有把排序后的内 ...

1, 不要直接 print results2,而是 for 循环遍历 results2,然后输出每一行
2,你最开始的代码里是有保存的,那个就可以。如果你结果是列表,也可以用writelines来保存(不过需要每行结尾加上 \n 字符),或者同样通过for循环遍历保存
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

122

积分

注册会员

Rank: 2

8#
发表于 2019-2-26 10:13:10 |只看该作者
crossin先生 发表于 2019-2-21 22:00
1, 不要直接 print results2,而是 for 循环遍历 results2,然后输出每一行
2,你最开始的代码里是有保存 ...

lists=file('aaa.txt')
lines=lists.readlines()
lists.close()
results=[]
for line in lines:
    data=line.split()
    result=(data[0],data[1],data[2])
    results.append(result)
results1=results[0]
del results[0]
results2=sorted(results,key=lambda xx[1],x[2]))
#results2[0:0]=results1
print results1
for line1 in results2:   
    print line1
results2[0:0]=results1
xxx=file('aaa.txt')

xxx=results2[:]
print xxx
xxx.close()

我将整个编辑后的list直接复制到了我要写入的文件里,写入到xxx中成功了,但是关闭的时候报错这是怎么回事?下文是报错
Traceback (most recent call last):
  File "C:\Users\hes\Desktop\新建文件夹\pythonstudy.py", line 66, in <module>
    xxx.close()
AttributeError: 'list' object has no attribute 'close'
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

9#
发表于 2019-2-26 16:07:04 |只看该作者
1861674 发表于 2019-2-26 10:13
lists=file('aaa.txt')
lines=lists.readlines()
lists.close()

写入文件不是这么干的,参考下例子程序

xxx.write(要写入的内容)
xxx.close()
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

7

主题

0

好友

122

积分

注册会员

Rank: 2

10#
发表于 2019-3-14 10:58:37 |只看该作者
crossin先生 发表于 2019-2-26 16:07
写入文件不是这么干的,参考下例子程序

xxx.write(要写入的内容)

source=[r'D:\photo']
target_dir=[r'D:\new']
target =time.strftime('%Y%m%d%H%M%S')+'.zip'
print target
zip_command="zip -qr '%s' %s " %(target,''.join(source))



最后一步zip压缩命令为什么总是未执行成功?
回复

使用道具 举报

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

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

GMT+8, 2024-4-25 23:56 , Processed in 0.022287 second(s), 21 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部