重庆网站推广网络推广哪些平台可以发布软文
append、appext、insert,在某位置插入insert最在行。
(笔记模板由python脚本于2024年12月04日 19:41:46创建,本篇笔记适合python基础编程的coder翻阅)
-
Python 官网:https://www.python.org/
-
Free:大咖免费“圣经”教程《 python 完全自学教程》,不仅仅是基础那么简单……
地址:https://lqpybook.readthedocs.io/
自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。
—— 华罗庚
- My CSDN主页、My HOT博、My Python 学习个人备忘录
- 好文力荐、 老齐教室

本文质量分:
本文地址: https://blog.csdn.net/m0_57158496/
CSDN质量分查询入口:http://www.csdn.net/qc
- ◆ python数组增加元素
- 一、题目描述
- 二、算法解析
- 2.1 任务分解:
- 2.2 Python 代码实现
- 2.3 代码解释
- 2.4 示例运行
- 三、题解
- 3.1 示例题解
- 3.2 精细题解
- 四、完整源码(Python)
◆ python数组增加元素
一、题目描述
题目描述截屏图片
【题目来源于 CSDN 问答社区提问“问题标题”】
这是一道C++小题,在问答社区看到,怪手痒痒的,用仅会的python基础来拆解拆解——
二、算法解析
根据题目描述,我们需要编写一个Python程序来模拟班级中新同学的座位安排。
以下是详细的步骤和代码分析:
2.1 任务分解:
-
输入处理:
- 读取班级总人数
n
。 - 读取当前班级中每位同学的学号列表。
- 读取新同学的学号。
- 读取两个整数
p
和q
,表示新同学的位置关系。
- 读取班级总人数
-
逻辑处理:
- 根据输入的
p
和q
,确定新同学在班级中的具体位置。 - 如果
p
为 1,新同学坐在第q
个同学的前面。 - 如果
p
不为 1,新同学坐在第q
个同学的后面。
- 根据输入的
-
输出处理:
- 输出新同学安排好后,班级中每位同学的学号列表。
2.2 Python 代码实现
python脚本
# 读取输入
n = int(input()) # 班级总人数
current_students = list(map(int, input().split())) # 当前班级中每位同学的学号
new_student_id = int(input()) # 新同学的学号
p, q = map(int, input().split()) # 两个整数 p 和 q# 根据输入的 p 和 q 确定新同学的位置
if p == 1:# 新同学坐在第 q 个同学的前面new_position = q - 1
else:# 新同学坐在第 q 个同学的后面new_position = q# 在指定位置插入新同学的学号
current_students.insert(new_position, new_student_id)# 输出结果
print(' '.join(map(str, current_students)))
2.3 代码解释
- 输入处理:使用
input()
函数读取输入,并通过map(int, input().split())
将字符串转换为整数列表。 - 逻辑处理:根据
p
和q
的值,使用insert()
方法将新同学的学号插入到列表中的指定位置。 - 输出处理:使用
print()
函数输出最终的学号列表,通过' '.join(map(str, ...))
将列表转换为以空格分隔的字符串。
2.4 示例运行
假设输入为:
5
7 1 3 14 5
56
0 2
则输出为:
7 1 56 3 14 5
解释:p
为 0,q
为 2,新同学学号 56
插入到第 2 个同学 1
的后面,所以最终学号列表为 7 1 56 3 14 5
。
三、题解
3.1 示例题解
#!/usr/bin/env python3date = '''5
7 1 3 14 5
56
0 2''' # 输出 7 1 56 3 14 5
print(f"\n\n{' 数组增加元素 ':*^36}"f"\n\n输入样例:\n{date}") # 数据梳理 #
date = date.split('\n')
n = int(date[0]) # 班级同学人数0 < n < 60
students = list(map(int, date[1].split())) # 班级同学列表(学号列表)
new_stu = int(date[2])
p, q = map(int, date[-1].split()) # p,新同学排位前后“开关”;q,新同学排位入口
print(f"\n数据梳理:"f"\n{n = }\n{students = }"f"\n{new_stu = }\n{p = }, {q = }")# 新同学排位 #
new_index = q-1 if p == 1 else q # 确认新同学排位入口
print(f"\n{new_index = }")
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
students = ' '.join(map(str, students))
print(f"\n输出:"f"\n{students = }"f"\n\n{'':=^42}")
效果截屏
这个题解直接处理了一个硬编码的字符串 date
,该字符串包含了班级同学的人数、现有同学的学号列表、新同学的学号以及新同学插入位置的参数 p
和 q
。
-
数据梳理:
- 首先将输入的字符串按照换行符分割成列表。
- 提取班级同学人数
n
和现有同学的学号列表students
。 - 提取新同学的学号
new_stu
。 - 提取参数
p
和q
,其中p
决定新同学是插入到q
指定的位置之前还是之后,q
是新同学的入口位置。
-
新同学排位:
- 根据
p
的值确定新同学的插入位置new_index
。如果p
为 1,新同学将插入到q
之前,因此new_index
为q-1
;否则,新同学将插入到q
位置。 - 使用
list.insert()
方法在students
列表中插入新同学的学号new_stu
。 - 将更新后的学号列表转换为字符串并打印。
- 根据
3.2 精细题解
# 精细解题 #def data_input() -> tuple:''' 数据输入 '''print(f"\n\n{' 数组增加元素 ':*^36}") try:n = int(input(f"\n输入班级同学人数"f"\n{'(0 < n < 60):':>15}"))except ValueError:raise ValueError(f"{' 请输入整数 ':-^37}")if not (0 < n < 60):raise ValueError(f"\n{' 班级同学人数必须在0到60之间 ':-^30}")students = list(map(int, input(f"输入班级同学学号:\n{'如7 1 3 14 5':>27}\n{'':>18}").strip().split())) # 班级同学列表(学号列表)if len(students) != n:raise ValueError(f"\n{' 输入的学号数量与班级人数不符 ':-^28}")try:new_stu = int(input('输入新同学学号:'))except ValueError as e:raise ValueError(f"{' 请输入整数 ':-^37}")try:p, q = map(int, input(f"输入p和q的值,用空格分隔\n{'(q为大于等于1的整数)':>10}:").strip().split())except ValueError as e:raise ValueError(f"{' 请输入两个整数':-^35}")if q < 1:raise ValueError(f"{' q的值必须大于等于1 ':-^34}")return n, students, new_stu, p, qdef in_date():''' 递归数据输入函数 '''try:return data_input()except ValueError as e:print(f"\n{e}"f"\n\n{' 请根据提示重新输入 ':.^33}")return in_date()# 调用递归函数并获取数据
n, students, new_stu, p, q = in_date()# 根据q的值插入新同学
new_index = q-1 if p == 1 else q # 保证当p不是1时,在q之后安排新同学入座
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)# 打印结果
print(f"\n输出:"f"\n{' '.join(map(str, students))}"f"\n\n{'':=^42}")
效果截屏
这个题解提供了一个更加通用的解决方案,它允许用户输入数据而不是使用硬编码的字符串。
-
数据输入:
data_input()
函数用于从用户那里获取输入数据,包括班级同学人数n
、现有同学的学号列表students
、新同学的学号new_stu
以及插入位置的参数p
和q
。- 函数内部包含错误处理,确保用户输入的是有效的整数,并且输入的学号数量与班级人数相符。
-
递归数据输入函数:
in_date()
函数是一个递归函数,它调用data_input()
并处理任何由无效输入引起的ValueError
异常。如果发生错误,它会提示用户重新输入数据。
-
数据处理和输出:
- 从
in_date()
函数获取输入数据后,程序计算新同学的插入位置new_index
。 - 使用
list.insert()
方法将新同学插入到正确的位置。 - 最后,将更新后的学号列表转换为字符串并打印。
- 从
这两个题解都很好地展示了如何使用 Python 的列表操作来插入元素,同时也展示了如何处理用户输入和错误。第二个题解通过使用递归和异常处理,提供了更加健壮和用户友好的解决方案。😎😎
四、完整源码(Python)
(源码较长,点此跳过源码)
#!/usr/bin/env python3date = '''5
7 1 3 14 5
56
0 2''' # 输出 7 1 56 3 14 5
print(f"\n\n{' 数组增加元素 ':*^36}"f"\n\n输入样例:\n{date}") # 数据梳理 #
date = date.split('\n')
n = int(date[0]) # 班级同学人数0 < n < 60
students = list(map(int, date[1].split())) # 班级同学列表(学号列表)
new_stu = int(date[2])
p, q = map(int, date[-1].split()) # p,新同学排位前后“开关”;q,新同学排位入口
print(f"\n数据梳理:"f"\n{n = }\n{students = }"f"\n{new_stu = }\n{p = }, {q = }")# 新同学排位 #
new_index = q-1 if p == 1 else q # 确认新同学排位入口
print(f"\n{new_index = }")
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)
students = ' '.join(map(str, students))
print(f"\n输出:"f"\n{students = }"f"\n\n{'':=^42}")# 精细解题 #def data_input() -> tuple:''' 数据输入 '''print(f"\n\n{' 数组增加元素 ':*^36}") try:n = int(input(f"\n输入班级同学人数"f"\n{'(0 < n < 60):':>15}"))except ValueError:raise ValueError(f"{' 请输入整数 ':-^37}")if not (0 < n < 60):raise ValueError(f"\n{' 班级同学人数必须在0到60之间 ':-^30}")students = list(map(int, input(f"输入班级同学学号:\n{'如7 1 3 14 5':>27}\n{'':>18}").strip().split())) # 班级同学列表(学号列表)if len(students) != n:raise ValueError(f"\n{' 输入的学号数量与班级人数不符 ':-^28}")try:new_stu = int(input('输入新同学学号:'))except ValueError as e:raise ValueError(f"{' 请输入整数 ':-^37}")try:p, q = map(int, input(f"输入p和q的值,用空格分隔\n{'(q为大于等于1的整数)':>10}:").strip().split())except ValueError as e:raise ValueError(f"{' 请输入两个整数':-^35}")if q < 1:raise ValueError(f"{' q的值必须大于等于1 ':-^34}")return n, students, new_stu, p, qdef in_date():''' 递归数据输入函数 '''try:return data_input()except ValueError as e:print(f"\n{e}"f"\n\n{' 请根据提示重新输入 ':.^33}")return in_date()# 调用递归函数并获取数据
n, students, new_stu, p, q = in_date()# 根据q的值插入新同学
new_index = q-1 if p == 1 else q # 保证当p不是1时,在q之后安排新同学入座
students.insert(new_index, new_stu) # 新同学排位(list插入,list.insert方法是在index之前插入,就“抵消”list元素对象从0起index。所以,直接new_stu插入)# 打印结果
print(f"\n输出:"f"\n{' '.join(map(str, students))}"f"\n\n{'':=^42}")
上一篇: re通配表达式从“硬编码”到精炼简洁的历程示例(本文举例说明“re表达式从繁至简的历程”:源于对匹配字符串格式的详细把控,得益于对re通配符含义的深切理解。文章语言朴实,步步深入,浅析简单逻辑)
下一篇:
我的HOT博:
本次共计收集404篇博文笔记信息,总阅读量61.76w。数据采集于2024年11月25日 08:23:38,用时7分56.4秒。阅读量不小于6.00k的有 9 9 9篇。
- 让QQ群昵称色变的神奇代码
地址:https://blog.csdn.net/m0_57158496/article/details/122566500
浏览阅读:6.2w
点赞:25 收藏:89 评论:17
(本篇笔记于2022-01-18 19:15:08首次发布,最后修改于2022-01-20 07:56:47)
- Python列表(list)反序(降序)的7种实现方式
地址:https://blog.csdn.net/m0_57158496/article/details/128271700
浏览阅读:1.3w
点赞:9 收藏:40 评论:8
(本篇笔记于2022-12-11 23:54:15首次发布,最后修改于2023-03-20 18:13:55)
- pandas 数据类型之 DataFrame
地址:https://blog.csdn.net/m0_57158496/article/details/124525814
浏览阅读:1.0w
点赞:7 收藏:40
(本篇笔记于2022-05-01 13:20:17首次发布,最后修改于2022-05-08 08:46:13)
- 个人信息提取(字符串)
地址:https://blog.csdn.net/m0_57158496/article/details/124244618
浏览阅读:1.0w
点赞:3 收藏:20
(本篇笔记于2022-04-18 11:07:12首次发布,最后修改于2022-04-20 13:17:54)
- 罗马数字转换器|罗马数字生成器
地址:https://blog.csdn.net/m0_57158496/article/details/122592047
浏览阅读:8.2k
收藏:3
(本篇笔记于2022-01-19 23:26:42首次发布,最后修改于2022-01-21 18:37:46)
- 统计字符串字符出现的次数
地址:https://blog.csdn.net/m0_57158496/article/details/130517025
浏览阅读:8.1k
点赞:5 收藏:24
(本篇笔记于2023-05-06 22:28:18首次发布,最后修改于2023-05-12 06:21:40)
- Python字符串居中显示
地址:https://blog.csdn.net/m0_57158496/article/details/122163023
浏览阅读:8.0k
点赞:1 收藏:12 评论:1
- 回车符、换行符和回车换行符
地址:https://blog.csdn.net/m0_57158496/article/details/123109488
浏览阅读:6.7k
点赞:2 收藏:4
(本篇笔记于2022-02-24 13:10:02首次发布,最后修改于2022-02-25 20:07:40)
- python清屏
地址:https://blog.csdn.net/m0_57158496/article/details/120762101
浏览阅读:6.1k
点赞:1 收藏:10
截屏图片
(此文涉及ChatPT,曾被csdn多次下架,前几日又因新发笔记被误杀而落马。躺“未过审”还不如回收站,回收站还不如永久不见。😪值此年底清扫,果断移除。留此截图,以识“曾经”。2023-12-31)

精品文章:
- 好文力荐:齐伟书稿 《python 完全自学教程》 Free连载(已完稿并集结成书,还有PDF版本百度网盘永久分享,点击跳转免费🆓下载。)
- OPP三大特性:封装中的property
- 通过内置对象理解python'
- 正则表达式
- python中“*”的作用
- Python 完全自学手册
- 海象运算符
- Python中的 `!=`与`is not`不同
- 学习编程的正确方法
来源:老齐教室
◆ Python 入门指南【Python 3.6.3】
好文力荐:
- 全栈领域优质创作者——[寒佬](还是国内某高校学生)博文“非技术文—关于英语和如何正确的提问”,“英语”和“会提问”是编程学习的两大利器。
- 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
- 靠谱程序员的好习惯
- 大佬帅地的优质好文“函数功能、结束条件、函数等价式”三大要素让您认清递归
CSDN实用技巧博文:
- 8个好用到爆的Python实用技巧
- python忽略警告
- Python代码编写规范
- Python的docstring规范(说明文档的规范写法)