湖南大学python头歌实训 实验7:列表

第二章-Python语言基础-2.4列表(理)

第1关:列表的增删改查

# -*- coding: utf-8 -*-
"""
Created on Sun Sep  6 17:25:27 2020

@author: hyr
列表的增删改查
好友名单管理
"""
#建立初始名单
nameList=eval(input())

############begin###############
#1.请在好友名单尾部添加一个好友'曾海洋'

############end#################
nameList.append('曾海洋')


############begin############
#2.请在好友名单开头添加一个好友'胡波'

##############end############
nameList.insert(0,'胡波')

#############begin###########
#3.请将首个王姓好友的名字修改为'王仁'。

#############end#############
n = 0
for i in nameList:
    n += 1
    if '王' in i:
        break
nameList[n-1] = '王仁'
############begin################
#4.删除首个赵姓好友
for i in nameList:
    if '赵' in i:
        nameList.remove(i)
        break
###########end#################



print(nameList)

第2关:列表数据的统计与排序

@author: hyr
列表的排序
对一个班的学生的数学成绩进行排序,并进行简单的统
"""


scores=eval(input())#录入多名学生的成绩


#########begin############
#1. 请找出最高分并输出
print(max(scores))

##########end############




###########begin###########
#2. 请找出最低分并输出

###########end############
print(min(scores))


###########begin############
#3. 请求出班级平均分并输出(保留4位小数)

###########end##############
print('{:.4f}'.format(sum(scores)/len(scores)))


############begin###########
#4.对分数进行升序排序并输出排序后的结果
scores = sorted(scores)
print(scores)
############end############



第3关:列表索引切片

# -*- coding: utf-8 -*-
"""
Created on Sun Sep  6 17:32:01 2020

@author: hyr
列表索引切片
对学生成绩进行降序排序,输出前三名的成绩,以及后三名的成绩,以及去掉一个最高的去掉一个最低分之后的成绩均值。
"""

#已录入的多名学生的成绩
scores=eval(input())#录入多名学生的成绩



##########begin###########
#1. 请对scores进行降序排序,并输出降序排列之后的结果

##########end#############
scores = sorted(scores,reverse = True)
print(scores)


#########begin############
#2.请找出前三名的成绩,并按降序输出

##########end############
print(scores[:3])



###########begin###########
#3. 请找出后三名的成绩,并按降序输出
print(scores[-3:])
###########end############



###########begin############
#4.请求出去掉一个最高分以及去掉一个最低分之后的成绩均值,并输出该均值(保留4位小数)

###########end##############
scores.pop(0)
scores.pop(-1)
avg_score = sum(scores) / len(scores)
print('{:.4f}'.format(avg_score))

第4关:嵌套列表

# -*- coding: utf-8 -*-
"""
Created on Mon Mar  8 09:01:10 2021

@author: hyr
"""

row=eval(input())#矩阵行数
list2D=[]#嵌套列表,用来存放一个矩阵数据
for i in range(row):#得到每行数据列表
    temp=eval(input())
    list2D.append(temp)

a=0
#第1题:请对矩阵list2D中的数据求最大值,并输出该最大值
for i in list2D:
    for n in i:
        if n >= a:
            a = n 
print(a)

print('##########')
#第2题:求出矩阵对角线元素的和,并输出该和值
l1 = []
for i in range(len(list2D)):
    num = list2D[i][i]
    l1.append(num)
print(sum(l1))


print('##########')
#第3题:将矩阵上三角元素全变为0值, 并输出该矩阵
for i in range(row):
    for j in range(i, len(list2D[0])):
        list2D[i][j] = 0
for i in list2D:
    print(i)

print('##########')   
#第4题:取出矩阵的最后两行,并输出这两行
for i in list2D[-2:]:
    print(i)

print('##########')
#第5题:删除矩阵的最后一行,并输出删除最后一行之后的矩阵
list2D.pop()
for i in list2D:
    print(i)

第5关:列表综合应用

# -*- coding: utf-8 -*-
"""
Created on Tue Mar 16 20:03:22 2021

@author: hzh
"""

#列表综合案例1:输出杨辉三角形(列表的嵌套) 
n = int(input())
lst = []
for i in range(1,n+1):
    li = []
    for x in range(1,i+1):
        if x==1 or x==i:
            li.append(1)
        else:
            li.append(lst[-1][x-2]+lst[-1][x-1])
    lst.append(li)
    print(li)
#########ends##############  

  
#列表综合案例2:约瑟夫问题
n,m = map(int,input().split(","))
seat = [x for x in range(1,n+1)]
li = []
index = 0
while seat:
    index = (index+m)%len(seat)-1
    li.append(seat.pop(index))
print("出圈列表:\n",li,sep="")

这两个都是有难度、很经典的题目;约瑟夫问题可以用%破解,也可以无脑一点,把每个元素pop出来验证,判断合不合法,再决定是加入队尾还是记录,形成一个O。

实验八 列表

第1关:欧拉筛法求素数

x=eval(input())
#代码开始
l = [n for n in range(2,x+1)]
for i in range(2,x+1):
    num = l.pop(0)
    active = 0
    for n in range(2,i+1):
        if num != n and num%n == 0:
            active += 1
    if active == 0:
        l.append(num)
#代码结束
print(l)

第2关:统计文档中诗人列表

f1=open("sy8//中学诗词.txt","r",encoding='utf-8')
zj=[]
#代码开始
content = f1.readlines()
for i in content:
    if ' ' in i and '。' not in i:
        #print(i)
        zj.append(i.split()[-1])
zj = sorted(zj)
#代码结束
n = ''
l1 = []
for i in zj:
    if i != n:
        l1.append(i)
    n = i    
zj = l1
for i in range(1,len(zj)+1):
    print(i,zj[i-1])
f1.close()

先看看每一行找找规律,再修改几回就好啦

第3关:使用列表求解约瑟夫环

n=eval(input("输入人数"))
k=eval(input("输入序号"))
#代码开始
li = [int(i) for i in range(1,n+1)]
c = 0
while li:
    c += 1
    n = li.pop(0)
    if c == k:
        print(n)
        c = 0
    else:
        li.append(n)

就是上文提到的方法啦,这种是博主第一个想到的方法,比较直观

第4关:两数之和

lst1=[1,4,5,6,7,8,9,10,11,12,13,15,18,19,20,21,29,34,54,65]
n=eval(input("请输入n"))
#代码开始 
def s(n:int):
    global lst1
    for i in range(len(lst1)):
        for  j in range(len(lst1)):
            #print(lst1[i]+lst1[n])
            if (lst1[i]+lst1[j]) == n and j > i:
                print(i,j)
                return i
    return n
                

if s(n) == n:
    print("not found")            


#代码结束

第5关:用户数据的增加、删除、查询

yhlb=["mary","harry","mike","tom","rose"]
mmlb=["123456","888888","999999","765432","678901"]
print("""请选择
1 用户增加
2 用户删除
3 用户查询
4 查看数据,退出系统""")
#代码开始
x = eval(input('请输入'))
while x != 4:
    if x == 1:
        name = input('请输入用户名')
        code = input('请输入密码')
        if name in yhlb:
            print('用户已经存在 无法增加')
        else:
            print('用户已增加')
            yhlb.append(name)
            mmlb.append(code)
    if x == 2:
        name = input('请输入用户名')
        if name  not in yhlb:
            print('用户不存在 无法删除')
        else:
            print('用户已删除')
            for i in range(len(yhlb)):
                if yhlb[i] == name:
                    yhlb.pop(i)
                    mmlb.pop(i)
    if x == 3:
        name = input('请输入用户名')
        if name  not in yhlb:
            print('用户不存在')
        else:
            for i in range(len(yhlb)):
                if yhlb[i] == name:
                    print('密码{}'.format(mmlb[i]))
    x = eval(input('请输入'))
#代码结束
for i in range(0,len(yhlb)):
    print("用户名{:6}密码{:6}".format(yhlb[i],mmlb[i]))

耐心读题,慢慢写就行

实验4-1 列表基础

第1关:列表元素的增删改:客人名单的变化

guests = []
while True:
    try:
        guest = input()
        if len(guest)==0:   #当输入为空时结束
            raise
        guests.append(guest)
    except:
        break
# 请在此添加代码,对guests列表进行插入、删除等操作
###### Begin ######
deleted_guest = guests.pop(-1)
guests.insert(2,deleted_guest)
guests.remove(guests[1])
print(deleted_guest)
print(guests)
#######  End #######

第2关:列表元素的排序:给客人排序

# coding=utf-8

# 创建并初始化`source_list`列表
source_list = []
while True:
    try:
        list_element = input()
        if len(list_element) == 0:
            raise        
        source_list.append(list_element)
    except:
        break
    
# 请在此添加代码,对source_list列表进行排序等操作并打印输出排序后的列表
########## Begin ##########
source_list.sort()
print(source_list)

########## End ##########

第3关:数值列表:用数字说话

# coding=utf-8

# 创建并读入range函数的相应参数
lower = int(input())
upper = int(input())
step = int(input())

# 请在此添加代码,实现编程要求
########## Begin ##########
li = [i for i in range(lower,upper+1,step)]
print(len(li))
print(max(li)-min(li))


########## End ##########

第4关:列表切片:你的菜单和我的菜单

# coding=utf-8

# 创建并初始化my_menu列表
my_menu = []
while True:
    try:
        food = input()
        if len(food) == 0:
            raise
        my_menu.append(food)
    except:
        break

# 请在此添加代码,对my_menu列表进行切片操作
########## Begin ##########
print(my_menu[::3])
print(my_menu[-3:])


########## End ##########


总结:

大多数还是比较简单的,熟悉基础操作就好,杨辉三角好好掌握,期中要考(doge)

版权声明:本文为博主作者:湖大方脸原创文章,版权归属原作者,如果侵权,请联系我们删除!

原文链接:https://blog.csdn.net/hkxxxx_/article/details/135219797

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
扎眼的阳光的头像扎眼的阳光普通用户
上一篇 2024年5月6日
下一篇 2024年5月6日

相关推荐