添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

第6章-7 找出总分最高的学生 (15 分)
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。

输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2
成绩3”,中间以空格分隔。

输出格式: 在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。

N = int(input())
t = []
score = []
rank = []
for i in range(N):
    s = input()
    t.append(s.split())
    score.append(int(t[i][2])+int(t[i][3])+int(t[i][4]))
    rank.append(score[i])
rank.sort()
x = score.index(rank[N-1])
print(t[x][1],t[x][0],score[x])

1.这道题比较困扰我的地方是:每个人的信息输入都是占一行的,以空格为分隔,我不太清楚如何处理。
2.在别人的代码里,他先通过s = input()将一行的信息输入,然后再通过s.split将一行的信息分割开来,放入t列表中存放。这样就实现了对以空格为间隔的一行数据的处理。

第6章-8 输出全排列 (20 分) 输入整数n(3<=n<=7),编写程序输出1,2,…,n整数的全排列,按字典序输出。

输入格式: 一行输入正整数n。

输出格式: 按字典序输出1到n的全排列。每种排列占一行,数字间无空格。

别人的代码:

def f(x,s=""):
	s+=x
	if len(s)<n:
		for i in num:
			if i not in s:
				f(i,s)
	else:
		print(s)
n=int(input())
num=[str(i+1) for i in range(n)]
for i in num:
	f(i)

1.一开始我是从交换的角度思考,在看了别人的代码之后发现还可以通过增添的角度解决这个问题。
2.解析一下别人的代码:
首先通过num=[str(i+1) for i in range(n)]将1~n的数字以字符的形式存放在列表中,然后进行一个for循环。
整个过程类似于压栈,先是1进入,只要栈内的字符长度没有达到n,就进入下一个内层循环,循环内的判断条件是如果栈内没有i,那么i就入栈,继续递归,由于循环一直都是从1开始的,所以可以保证符合字典序。
第一个输出的自然是1234,接着,1的下一个数就是3了,然后就是1324、1342,函数的递归使得每一次的数字都不一样。

第7章-1 词频统计 (30 分) 请编写程序,对一段英文文本,统计其中所有不同单词的个数,以及词频最大的前10%的单词。

所谓“单词”,是指由不超过80个单词字符组成的连续字符串,但长度超过15的单词将只截取保留前15个单词字符。而合法的“单词字符”为大小写字母、数字和下划线,其它字符均认为是单词分隔符。

输入格式: 输入给出一段非空文本,最后以符号#结尾。输入保证存在至少10个不同的单词。

输出格式: 在第一行中输出文本中所有不同单词的个数。注意“单词”不区分英文大小写,例如“PAT”和“pat”被认为是同一个单词。

随后按照词频递减的顺序,按照词频:单词的格式输出词频最大的前10%的单词。若有并列,则按递增字典序输出。

别人的代码:

import sys
s=sys.stdin.read()
s=s[:s.find("#")]
#构建一个字符串中所有非数字、字母、下划线的字符的集合
t=set([i if i.isalnum()==False and i!='_' else " " for i in s ])
for i in t:
    #将字符串中所有非法字符替换为空格
    s=s.replace(i," ")
#所有字符转小写,并将字符串以空格为分割建立一个列表,每一项为一个小写单词
word=s.lower().split(" ")
dic={}
for i in word:
    #取长度为15的单词
    i=i[:15]
    dic[i]=dic.get(i,0)+1
#由于初始字符串中有多个连续空格,因此split()时会有空字符串存在,需要删除
del dic[""]
#排序,以词频为主要关键字,字典序为次要关键序,'-'表示降序
result=sorted(dic.items(),key=lambda x:(-x[1],x[0]))
print(len(result))
all=int(0.1*len(result))
for i in range(0,all):
    print(str(result[i][1])+":"+result[i][0])

1.首先最令我头疼的就是数据的输入,这里他利用了系统标准输入模块:sys.stdin.read(),成功将多行文字一次性读入。
然后通过s.find 函数找到含有“#”的一段,通过s=s[:s.find("#")]实现代码切片。
2.学习到了几个对字符串处理的函数,s.replace(i," "),将字符换为空格;word = s.lower()将字母全部变为小写

第一题:第6章-7 找出总分最高的学生 (15 分)给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2成绩3”,中间以空格分隔。输出格式: 在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。题目保证这样的学生是唯一的。代码:
目描述 你永远叫不醒一个装睡的人 —— 但是通过分析一个人的呼吸频率和脉搏,你可以发现谁在装睡!医生告诉我们,正常人睡眠时的呼吸频率是每分钟15-20次,脉搏是每分钟50-70次。下面给定一系列人的呼吸频率与脉搏,请你找出他们中间有可能在装睡的人,即至少一项指标不在正常范围内的人。 输入格式: 输入在第一行给出一个正整数N(≤10)。随后N行,每行给出一个人的名字(仅由英文字母组成的、长度不超过3个字符的串)、其呼吸频率和脉搏(均为不超过100的正整数)。 输出格式: 按照输入顺序检查每个人,如果其至少一
函数指针(理科实验班) 梦山高中现需要将某普通班的最优秀学生调整入理科实验班。为此,将从两个方面考察学生,一是数学和英语两门课的总分;另一个是所有四门课的总分。分别找出两科总分和全科总分的第一名,并从中决定调整人选。 输入将首先输入学生数n, (n为不超过80的正整数);接下来依次输入各位学生的学号,数学、英语、语文、理科综合成绩。学号及四科成绩均为不超过300的正整数。 输出时:第一行输出两科总分第一的学号,第二行输出四科总分第一的学号。 约定在两位学生成绩相同时,优先选择学号较小的学生;各位学生的学号均
第6章-7 找出总分最高的学生 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。目保证这样的学生是唯一的。 输入样例: 00001 hua
给出N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数)。 要求输出总分最高学生的姓名、学号和总分。要求使用结构存储学生基本信息 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。目保证这样的学生是唯一的。 输入样例1
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中输出总分最高学生的...
PTA第10-找出总分最高的学生 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中...
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。 输出格式: 首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序,每行输出一位平均线以下的学生的姓名和学号,间隔一个空格。 输入样例: 00001 zhang 70
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。 输出格式: 首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序...
#找出总分最高的学生 @TOC 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中输出...
给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和成绩([0,100]区间内的整数),要求计算他们的平均成绩,并顺序输出平均线以下的学生名单。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩”,中间以空格分隔。 输出格式: 首先在一行中输出平均成绩,保留2位小数。然后按照输入顺序...
找出总分最高的学生 (15 分) 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式:
实验9-7 找出总分最高的学生 (15分) 给定N个学生的基本信息,包括学号(由5个数字组成的字符串)、姓名(长度小于10的不包含空白字符的非空字符串)和3门课程的成绩([0,100]区间内的整数),要求输出总分最高学生的姓名、学号和总分。 输入格式: 输入在一行中给出正整数N(≤10)。随后N行,每行给出一位学生的信息,格式为“学号 姓名 成绩1 成绩2 成绩3”,中间以空格分隔。 输出格式: 在一行中输出总分最高学生的姓名、学号和总分,间隔一个空格。目保证这样的学生是唯一的。 输入样例: 【已解决】Unable to negotiate with — port 22: no matching host key type found. Their offer: ssh 已解决【partially initialized module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘】 已解决【partially initialized module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘】 量子泡沫: 确实有用! 已解决【partially initialized module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘】 我在钓一条很大的鱼: 偏方,但药到病除 洛谷--入门题 (1) 努力把前端搞懂的小王: 第二题这个别人的代码思维绝了啊 2021|五月观影 释怀人生: 大佬写的很好,手动点赞! python刷题第七周 LaoYuanPython: 写博不易,贵在坚持!同为Python的爱好者,欢迎到本人博客的Python专栏来交流! 已解决【partially initialized module ‘cv2‘ has no attribute ‘gapi_wip_gst_GStreamerPipeline‘】 【已解决】Unable to negotiate with — port 22: no matching host key type found. Their offer: ssh 《reStructured Pre-training》笔记