python第二次作业(列表,字典)

1.增删改+指定位置操作)现有列表 score = 78, 92, 65, 88, 70

  1. 在索引2的位置插入数字95
  2. 删除列表中数值最小的元素
  3. 将最后一个元素修改为100
  4. 打印处理完成后的完整列表

代码:

python 复制代码
score = [78, 92, 65, 88, 70]
score.insert(2, 95)
min_score = min(score)  
score.remove(min_score) 
score[-1] = 100 
print(score)

运行结果:

思路:

①创建列表score,使用insert(索引,元素)在指定的索引2位置插入数字95,原位置后面的元素会自动后移。

②先算出列表中最小的值 -- min(列表);再删除列表中最小的值,remove(元素)直接删除列表中匹配的第一个元素,最小值唯一,可直接使用。

③列表最后一个元素,列表-1在python中代表列表最后一个元素,修改时直接赋值即可。

④使用print直接打印列表score

2.(索引、切片、倒序截取)

words = "春天","夏天","秋天","冬天","清晨","傍晚"

  1. 取出偶数下标全部元素
  2. 倒序切片取出中间4个元素
  3. 截取从第2个到倒数第2个元素并打印

代码:

python 复制代码
words = ["春天","夏天","秋天","冬天","清晨","傍晚"]
even_index_words = words[::2]  
print("偶数下标元素:", even_index_words)
middle_reverse = words[4:0:-1]
print("倒序中间4个:", middle_reverse)
result = words[1:-1]
print("第2个到倒数第2个:", result)

运行结果:

思路:

①列表下标从0开始计数,第一个元素下标是0,以此类推。本题中偶数下标为0、2、4,切片从头到尾,步长为2,最后打印结果。

②倒序切片取出中间4个元素,就是从索引4往回走到索引1,4:0:1表示从索引4走到索引0结束(不包含索引0),步长为-1,往回一次走一步到索引1。

③截取第2个到倒数第2个,直接从下标1开始到最后一个元素之前结束,刚好取到倒数第2个元素。

3.(遍历、条件筛选求和)

数字列表 nums = 12, -5, 33, 8, -10, 45, 21, -3
使用for循环完成:

  1. 筛选出列表里所有正数
  2. 计算所有正数的累加和
  3. 分别打印正数列表、正数总和

代码:

python 复制代码
nums = [12, -5, 33, 8, -10, 45, 21, -3]
positive_nums = []  
sum_positive = 0    

for num in nums:
    if num > 0:
        positive_nums.append(num)  
        sum_positive += num        

print("正数列表:", positive_nums)
print("正数总和:", sum_positive)

运行结果:

思路:

先准备两个容器,空列表储存筛选出的正数,变量sum_positive初值为0,用来累加求和。筛选正数,大于0就是正数,判断出之后将正数加入到列表,然后直接累加到总和中。

4.(用户输入+列表追加+统计次数)

初始化空列表 list1 = \[\]

  1. 循环让用户连续输入5个整数,全部存入列表
  2. 接收用户额外输入一个目标数字
  3. 统计目标数字在列表中出现的次数并输出提示

代码:

python 复制代码
list1 = []

for i in range(5):
    num = int(input("请输入整数:"))
    list1.append(num)
target = int(input("请输入要查询的目标数字:"))
count = list1.count(target)
print(f"数字{target}在列表中出现了{count}次")

运行结果:

思路:

创建一个空列表list1,使用for循环让用户输入5个整数,执行5次循环(range(5)),用int()转变为整数存入列表。使用target接收用户输入的目标数字,count统计数字出现的次数,最后打印。

5.(综合难题:去重、筛选、排序、逆序)

原始列表 data = 16, 7, 22, 7, 9, 16, 30, 9, 12, 22, 5
要求分步实现:

  1. 列表去重,保留原始数据所有不重复数字
  2. 筛选出大于10的数字组成新列表
  3. 新列表从小到大排序后,再整体反转
  4. 输出最终结果

代码:

python 复制代码
data = [16, 7, 22, 7, 9, 16, 30, 9, 12, 22, 5]

unique_data = []
for num in data:
    if num not in unique_data:
        unique_data.append(num)

greater_than_10 = []
for num in unique_data:
    if num > 10:
        greater_than_10.append(num)

greater_than_10.sort()    
greater_than_10.reverse() 
print("最终结果:", greater_than_10)

运行结果:

思路:

首先创建列表data。

①去重考虑用循环实现,遍历原列表,遇到没有出现过的数字就加入新的列表。

②筛选大于10的数字,直接使用if语句判断,符合条件加入新列表。

③从小到大排序,直接使用sort(),列表自带方法,直接把列表从小到大排序;整体反转直接使用reverse(),列表自带方法,直接将元素前后反转。

④输出结果直接打印。

6.(字符串分割+字典存储)

给定字符串 info = "张三:23,李四:21,王五:25" ,规则:

  1. 先按逗号分割每个人信息;
  2. 再按冒号分割姓名、年龄;
  3. 把数据存入字典,姓名为键,年龄转为数字为值;
  4. 最终打印完整字典,并输出字典里所有人的平均年龄。

代码:

python 复制代码
info = "张三:23,李四:21,王五:25"
person_dict = {}

person_list = info.split(',')
for item in person_list:
    name, age_str = item.split(':')
    person_dict[name] = int(age_str)

avg_age = sum(person_dict.values()) / len(person_dict)
print("完整字典:", person_dict)
print("平均年龄:", avg_age)

运行结果:

思路:

①逗号分隔,使用split('分隔符')会把字符串按照指定符号切开。

②逐个处理每个人,冒号分隔姓名和年龄,姓名作为键,年龄转换为整数存入字典。

③打印出字典,用sum()求和,len()算总人数,相除得到平均值。

7.(字符串清洗+字典统计)

输入一段句子 text = "apple banana apple orange banana apple"
要求:

  1. 去除字符串多余空格,分割成单词列表;
  2. 使用字典统计每个水果出现的次数;
  3. 打印统计字典,并且打印出现次数最多的水果。

代码:

python 复制代码
text = "apple banana apple orange banana apple"

word_list = text.split()
count_dict = {}
for word in word_list:
    if word in count_dict:
        count_dict[word] += 1
    else:
        count_dict[word] = 1

print("单词统计:", count_dict)
most_word = max(count_dict, key=count_dict.get)
print("出现次数最多的水果:", most_word)

运行结果:

思路:

①直接使用split()分割,会自动处理多余的空格。

②统计次数,遍历每个单词,见过就+1。

③最大次数使用max():按照字典的值找到最大值。

8.(字典遍历+字符串拼接)

有学生分数字典:
score = {"小明": 88, "小红": 95, "小刚": 72, "小丽": 91}
要求:

  1. 遍历字典,筛选分数大于90分的学生;
  2. 将高分学生姓名用 、 拼接成一句字符串;
  3. 打印输出:本次优秀学生名单:xxx、xxx

代码:

python 复制代码
score = {"小明": 88, "小红": 95, "小刚": 72, "小丽": 91}
student = []  

for name, s in score.items():
    if s > 90:
        student.append(name)
result_str = '、'.join(student)

print(f"本次优秀学生名单:{result_str}")

运行结果:

思路:

先创建一个字典存放学生信息,一个空列表存放学生姓名。使用 字典.items() 遍历字典,筛选出分数大于90分的学生,得到高分学生信息后用'分隔符'.join(列表)将高分学生姓名用顿号拼接,最后打印。

9.(字符串替换、切片+字典更新)

user = {"name": "tom", "age": 28}
name_str = "TOM_1996"
需求:

  1. 截取 name_str 下划线前的英文,全部小写,替换字典里原来的name;
  2. 截取下划线后数字转为整数,计算今年2026减去出生年份,更新age;
  3. 打印更新后的完整字典。

代码:

python 复制代码
user = {"name": "tom", "age": 28}
name_str = "TOM_1996"

parts = name_str.split('_')
new_name = parts[0].lower()
user['name'] = new_name
birth_year = int(parts[1])
new_age = 2026 - birth_year
user['age'] = new_age

print("更新后的字典:", user)

运行结果:

思路:

使用split()分割,取下划线前的英文,.lower()方法直接转为小写再更新字典;取下划线后的数字转为整数,先使用int()转为整数,再和2026相减计算年龄。

10.(综合大题:字符串解析、字典嵌套、条件筛选)

原始文本:
data = "篮球:张三,90;羽毛球:李四,85;篮球:王五,82;乒乓球:赵六,95"
要求:

  1. 按分号拆分每条运动数据;
  2. 构建嵌套字典,格式 {运动名称: {姓名: 分数}} ;
  3. 遍历字典,找出篮球项目平均分;
  4. 用字符串格式化输出:篮球项目平均分数为xx分。

代码:

python 复制代码
data = "篮球:张三,90;羽毛球:李四,85;篮球:王五,82;乒乓球:赵六,95"
sport_dict = {}
item_list = data.split(';')

for item in item_list:
    sport, info = item.split(':')
    name, score_str = info.split(',')
    score = int(score_str)
    if sport not in sport_dict:
        sport_dict[sport] = {}
    sport_dict[sport][name] = score
basketball_scores = sport_dict['篮球'].values()
avg_score = sum(basketball_scores) / len(basketball_scores)


print(f"篮球项目平均分数为{avg_score}分")

运行结果:

思路:

①使用split()用分号拆分数据。

②构建嵌套字典:

首先按冒号拆分出运动名和姓名+分数,然后按逗号拆分姓名和分数,如果运动没有在字典中,构建一个空字典把姓名和运动存入。

③计算篮球平均分,调用字典中篮球分数除以人数得到结果,最后格式化输出。

相关推荐
星恒随风1 小时前
C++ STL 详解:set 与 multiset 的使用、区间查询和算法应用
开发语言·c++·笔记·学习·算法
数聚天成DeepSData1 小时前
外贸海关进出口数据去哪免费下载?从统计到明细的查找指南
linux·服务器·开发语言·前端·网络·人工智能·自然语言处理
三金121381 小时前
Python的一些内置模块
python
再卷也是菜1 小时前
C++11支持并发库
开发语言·c++
Lhan.zzZ1 小时前
QML 开发中的“陷阱”:动态模型更新时,ComboBox 索引为何总是失效?
开发语言·qt
小园子的小菜2 小时前
Java 并发四大工具类深度解析:CountDownLatch、CyclicBarrier、Semaphore、Exchanger 原理、源码与面试考点
java·开发语言·面试
NPE~2 小时前
RAG 实战教程:从零构建企业智能问答 Agent
python·ai·实战·rag·agent搭建
河西石头2 小时前
再谈C#的抽象类和接口:从“适配器”到“毛坯房”的设计哲学
开发语言·c#·接口·依赖注入·抽象类·依赖倒挂
颜x小2 小时前
[C#]——接口与继承
开发语言·c++·c#