【头歌】列表类型翻转教学

第1关:输入数据创建列表

10位评委为参加程序设计创意赛的选手打分,评分规则是不允许弃权,评分在0-10分之间,包含0和10。 每位评委打出分数后,记录员将该分数输入计算机中,所有分数都以浮点数类型存放在同一个列表中。输出包含全部成绩的列表。

编程要求

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩置于列表中输出。

scores = []  # 创建一个空列表来存储成绩

for i in range(10):
    score = float(input())
    scores.append(score)

print(scores)

第2关:计算每位选手的成绩

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩置于列表中输出;再计算并输出成绩中的最高分、最低分和的平均分(输出时严格保留小数点后3位数字)。

scores = []  # 创建一个空列表来存储成绩

for i in range(10):
    score = float(input())
    scores.append(score)


max_score = max(scores)
min_score = min(scores)
avg_score = sum(scores) / len(scores)
print(scores)
print("最高分{:.3f}".format(max_score)+",最低分{:.3f}".format(min_score)+",平均分{:.3f}".format(avg_score))

第3关:去除一个最高分和一个最低分

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩置于列表中输出;再根据规则对成绩进行修正,输出修正后成绩列表,计算并输出成绩中的最高分、最低分和的平均分(输出时严格保留小数点后3位数字)。

scores = []  # 创建一个空列表来存储成绩

for i in range(10):
    score = float(input())
    scores.append(score)
print(scores)
i=scores.index(max(scores))
scores.pop(i)
j=scores.index(min(scores))
scores.pop(j)
print(scores)

max_score = max(scores)
min_score = min(scores)
avg_score = sum(scores) / len(scores)

print("最高分{:.3f}".format(max_score)+",最低分{:.3f}".format(min_score)+",平均分{:.3f}".format(avg_score))

第4关:计算中位数成绩

编程要求

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩置于列表中输出;再根据规则去掉一个最高分和一个最低分升序排序输出,计算并输出成绩中位数(输出时严格保留小数点后3位数字)。

scores = []  # 创建一个空列表来存储成绩

for i in range(10):
    score = float(input())
    scores.append(score)
print(scores)
i=scores.index(max(scores))
scores.pop(i)
j=scores.index(min(scores))
scores.pop(j)
new_scores=sorted(scores)
print(new_scores)
median=(new_scores [3]+new_scores [4])/2
print("去掉最高分和最低分后,中位数成绩为:{:.3f}".format(median))

第5关:去除弃权评委成绩

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩以字符串类型置于列表中;去除列表中的空字符串元素后,将其他成绩转数值类型,再根据规则对列表中的成绩进行修正,输出修正后成绩列表,计算并输出成绩中的最高分、最低分和的平均分(输出时严格保留小数点后3位数字)。

score_ls = []
for i in range(10):
    a = input()
    score_ls.append(a) 
print(score_ls)
while '' in score_ls:
        score_ls.remove('')
print(score_ls)
score_ls = list(map(float, score_ls))
score_ls.remove(max(score_ls))
score_ls.remove(min(score_ls))
print(score_ls) 
print(f'{max(score_ls):.3f}, {min(score_ls):.3f}, {sum(score_ls) / len(score_ls):.3f}')

第6关:将平均成绩附加到列表末尾 

根据提示,在右侧编辑器补充代码,使程序能依次接收用户输入的10个成绩,将成绩以字符串类型置于列表中输出;去除弃权成绩,再去除一个最高分和一个最低分,然后计算平均成绩(最多保留小数点后2位)并附加到列表末尾。 输出末尾附加了平均成绩、元素为字符串的成绩列表。

score_ls = []
for i in range(10):
    a = input()
    score_ls.append(a) 
print(score_ls)
while '' in score_ls:
        score_ls.remove('')
score = list(map(str, score_ls))
score_ls = list(map(float, score_ls))
score_ls.remove(max(score_ls))
score_ls.remove(min(score_ls))
avg_score = sum(map(float, score_ls))/len(score_ls) 
score.append(str(round(avg_score, 2)))
print(score) 

第7关:读文件到二维列表 

根据提示,在右侧编辑器补充代码,使程序能将文件中的数据转为二维列表,输入一个整数n,以列表形式输出前n位选手的成绩。

def file_to_lst(file,n):
    list1 = []
    with open(file) as fr:  
        for i in range(n):
            score_ls = fr.readline().strip()
            score_ls = score_ls.split(',')
            list1.append(score_ls)
        print(list1)
            
if __name__ == '__main__':
    filename = '/data/bigfiles/mark_score.csv'
    n = int(input())
    file_to_lst(filename,n)

 第8关:二维列表数据分析

根据提示,在右侧编辑器补充代码,使程序能将文件中的数据转为子列表元素是浮点数的二维列表,先去掉弃权评委的成绩(空字符串),再去掉每位选手的一个最高分和一个最低分,计算每位选手的平均分并附加到子列表末尾(平均分保留小数点后2位)。输入一个整数n,以列表形式输出前n位选手的成绩。

def file_to_lst(file, n):
    """将文件名变量file指向的文件中的用逗号分隔的数据转为二维列表"""
    list1 = []
    with open(file) as fr:  # 创建文件对象
        for i in range(n):
            score_ls = fr.readline().strip()
            score_ls = score_ls.split(',')
            list1.append(score_ls)
        return list1    
 
if __name__ == '__main__':
    filename = '/data/bigfiles/mark_score.csv'
    n = int(input())
    list2=[]
    for lst in file_to_lst(filename, n):  # 遍历二维列表,lst为子列表
        while '' in lst:  # 循环判定子列表中是否还有空字符串
            lst.remove('')  # 移除子列表中的空字符串
        lst = list(map(float, lst))  # 当前子列表转浮点数
        lst.remove(max(lst))
        lst.remove(min(lst))
        avg_score = sum(map(float, lst))/len(lst) 
        lst.append(float(round(avg_score, 2)))
        list2.append(lst)
    print(list2)

 

 第9关:成绩排序

编程要求

根据提示,在右侧编辑器补充代码,使程序能将文件中的数据转为子列表元素是浮点数的二维列表,去掉每位选手的一个最高分和一个最低分,计算每位选手的平均分并附加到子列表末尾(平均分保留小数点后2位)。 将二维列表根据平均成绩降序排序,当平均成绩相同时,根据仲裁成绩升序排序 输入一个整数n,以列表形式输出排序后前n位选手的成绩。

def file_to_lst(file):
    with open(file) as fr:
        score_ls = [line.strip().split(',') for line in fr]
    return score_ls
 
def del_null_string(score_ls):
    score_ls_float = []
    for lst in score_ls:
        while '' in lst:
            lst.remove('')
        lst = list(map(float,lst))
        score_ls_float.append(lst)
    return score_ls_float
 
def add_avg(score_ls_float):
    for i in range(len(score_ls_float)):
        score_ls_float[i].remove(max(score_ls_float[i]))
        score_ls_float[i].remove(min(score_ls_float[i]))
        avg = sum(score_ls_float[i]) / len(score_ls_float[i])
        score_ls_float[i].append(round(avg,2))
    return score_ls_float
 
if __name__ == '__main__':
    filename = '/data/bigfiles/mark_score.csv'
    n = int(input())
    score_lst = file_to_lst(filename)
    score_lst_f = del_null_string(score_lst)
    score_avg = add_avg(score_lst_f)
    print(sorted(score_avg, key=lambda x: (x[-1],-x[-2]),reverse=True)[:n])

 

  • 5
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
头歌计是一款能够翻转字符串的Python函数。首先,设计这个函数的目的是为了让学习者能够掌握字符串的倒序处理方法,提高他们对于字符串操作的熟练度。 在教学设计中,可以首先引导学习者了解字符串的基本概念和Python中对字符串的处理方式。然后,通过简单的例子和练习,向学习者展示如何翻转一个字符串。可以使用一些日常生活中的例子,比如翻转人名、地名或者句子等,来加深学习者对于倒序处理的理解。 接下来,介绍头歌计函数的使用方法。可以先说明函数的输入和输出以及函数名的含义。头歌计函数的输入参数为一个字符串,输出结果为字符串的倒序处理结果。学习者可以通过调用函数来实现字符串的翻转,从而加深对于函数的理解和使用。在教学中可以给出一些例子和练习,让学习者自己尝试调用头歌计函数并观察结果。 在教学设计的最后,可以引入一些更复杂的应用场景来让学习者练习和巩固所学的知识。比如,可以设计一道题目要求学习者编写一个函数,通过调用头歌计函数来判断一个字符串是否为回文串。 通过以上教学设计,学习者可以在实践中逐步理解和掌握头歌计函数的使用,提升他们对于字符串翻转和函数的应用能力。同时,这样的教学设计也可以增加学习的趣味性和互动性,激发学习者的学习兴趣,促进他们的主动学习和思考能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值