第二章-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)