Python作业答疑
1. 旋转字符串
1.1 问题描述
给定一个字符串(以字符数组的形式)和一个偏移量,根据偏移量原地从左向右旋转字符串。
1.2 问题示例
输入str="abcdefg",offset=3,输出"efgabcd"。
输入str="abcdefg",offset=0,输出"abcdefg"。
输入str="abcdefg",offset=1,输出"gabcdef",返回旋转后的字符串。
输入str="abcdefg",offset =2,输出"fgabcde",返回旋转后的字符串。
提示:在 Python 中,字符串是不能进行修改的,如果要修改字符串中的字符,可以先转换成列表。
要求至少使用到 2 种以上的的解决方法。
1.3 解题思路
1.3.1 使用字符串的切片一
def rotate_str(s, offset):if len(s) > 0:# 如果offset = offset % len(s)# 使用切片s = s[-offset:] + s[0:len(s)- offset]return ss = input("请输入一个字符串")
offset = int(input("请输入偏移量"))
s = rotate_str(s, offset)
print(s)
1.3.2 使用列表的 pop 和insert方法
def rotate_str_(s, offset):if len(s) > 0:offset = offset % len(s)# 转换成列表lst = list(s)for i in range(offset):lst.insert(0, lst.pop())# 返回字符串 return "".join(lst)s = input("请输入一个字符串")
offset = int(input("请输入偏移量"))
s = rotate_str_(s, offset)
print(s)
1.3.3 使用字符串的切片二
def rotate_str_01(s, offset):if len(s) > 0:offset = offset % len(s)# 原字符串扩大 2 倍s = (s * 2)[len(s) - offset:2 * len(s) - offset]return ss = input("请输入一个字符串")
offset = int(input("请输入偏移量"))
s = rotate_str_01(s, offset)
print(s)
2. 相对排名
2.1 问题描述
根据N名运动员得分,找到相对等级和获得最高分前 3名的人,分别获得金牌、银牌和铜牌。N是正整数,并且不超过10 000。所有运动员的成绩都保证是独一无二的。
2.2 问题示例
输入运动员的得分 [5,4,3,2,1],输出["金牌","银牌","铜牌","4","5"],前3名运动员得分较高,根据得分依次获得金牌、银牌和铜牌。对于后两名运动员,根据分数输出相对等级。
输入运动员的成绩[6,5,1,8,4,3],输出 ["银牌","铜牌",6,"金牌",4,5]。
提示:输入的运动员成绩不一定刚开始就是有序的。
2.3 解题思路
#运动员的成绩
scores = [6, 5, 1, 8, 4, 3]
# 由高向低排序成绩
sort_scores = sorted(scores, reverse=True)
# 保存每一个成绩的名次
dic = {}
for i in range(len(sort_scores)):if i == 0:dic[sort_scores[i]] = "金牌"elif i == 1:dic[sort_scores[i]] = "银牌"elif i == 2:dic[sort_scores[i]] = "铜牌"else:dic[sort_scores[i]] = i + 1res = []
for i in scores:res.append(dic[i])
print(res)
'''
['银牌', '铜牌', 6, '金牌', 4, 5]
'''
3. 下一个更大的数
3.1 问题描述
- 两个不重复的数组
nums1和nums2,其中nums1是nums2的子集。 - 在
nums2的相应位置找到nums1所有元素的下一个更大数字。nums1中的数字x的下一个更大数字是nums2中x右边第1个更大的数字。 - 如果它不存在,则为此数字输出
-1。nums1和nums2中的所有数字都是唯一的,nums1和nums2的长度不超过1000。
3.2 问题示例
输入nums1=[4,1,2],nums2=[1,3,4,2],输出[-1,3,-1]。
- 对于第
1个数组中的数字4,在第2个数组中找不到下一个更大的数字,因此输出-1。 - 对于第
1个数组中的数字1,第2个数组中的下一个更大数字是3。 - 对于第
1个数组中的数字2,第2个数组中没有下一个更大的数字,因此输出-1。
提示:注意审题。
3.3 解题思路
3.3.1 使用列表的index方法
nums1 = [4, 1, 2]
nums2 = [1, 3, 4, 2]res = []
for i in nums1:# 在nums1中的数字在nums2中的位置pos = nums2.index(i)flag = -1# 是否存在比自己大的数字if len(nums2)-1 >= pos + 1 is not None and nums2[pos + 1] > i:flag = nums2[pos + 1]res.append(flag)print(res)
'''
输出结果
[-1, 3, -1]
'''
3.3.2 使用栈
nums1 = [4, 1, 2]
nums2 = [1, 3, 4, 2]
# 保存结果
res = {}
# 栈
stack = []
for i in nums2:# 查找栈顶数据是否比自己小if len(stack) > 0 and stack[-1] < i:res[stack[-1]] = istack.pop()stack.append(i)
for i in stack:res[i] = -1for i in nums1:print(res[i], end=" ")
提示,也可以先把nums2中的数字按先后顺序压入到栈中,然后提取栈顶数据,
nums1 = [4, 1, 2]
nums2 = [1, 3, 4, 2]res = {}
stack = []
# 把nums2中的数字全部压入栈中
for i in nums2:stack.append(i)
pre_top = None
for i in range(len(stack)):# 提取栈顶数据top = stack[-1]if pre_top is not None and top < pre_top:res[top] = pre_topelse:res[top] = -1 pre_top = stack.pop()
for i in nums1:print(res[i], end=" ")
4. 点积
4.1 问题描述
给出2个列表,求它们的点积。
4.2 问题示例
输入为A=[1,1,1]和B=[2,2,2],输出为6,1*2+1*2+1*2=6。输入为A=[3,2]和B=[2,3,3],输出为-1,没有点积。
提求:至少 2 种方法实现。直接使用列表和numpy。
4.3 解题思路
4.3.1 使用列表
a = [1, 1, 1]
b = [2, 2, 2]
res = 0
if len(a) == len(b):for i in range(len(a)):res += a[i] * b[i]
print(res)
4.3.2 使用 numpy
import numpy as np
a = [1, 1, 1]
b = [2, 2, 2]
res = 0
a = np.array(a)
b = np.array(b)
res = a.dot( b)
print(res)
5. 查询区间
5.1 问题描述
给定一个包含若干个区间的List列表,长度是1000,如[500,1500]、[2100,3100]。给定一个number,判断number是否在这些区间内,返回True或False。
5.2 问题示例
输入是lst=[[100,1100],[1000,2000],[5500,6500]]和number=6000,输出是True,因为6000在区间[5500,6500]。
输入是lst=[[100,1100],[2000,3000]]和number=3500,输出是False,因为3500不在lst的任何一个区间中。
5.3 解题思路
lst = [[100, 1100], [1000, 2000], [5500, 6500]]
number = 6000
is_exist = False
for i in lst:if number >= min(i) and number <= max(i):is_exist = Truebreak
print(is_exist)
6. 新郎和新娘
6.1 问题描述
有三对情侣结婚,假设三个新郎为A、B、C,三个新娘为X、Y、Z。
有参加婚礼的人搞不清谁和谁结婚,所以去询问了这六位新人中的三位,得到的回答为:
- 新郎
A说他要和新娘X结婚; - 新娘
X说她的未婚夫是新郎C; - 而新郎
C说他要和新娘Z结婚。 - 听到这样的回答后,提问者知道他们都是在开玩笑,说的都是假话,但他仍搞不清谁和谁结婚。
现在请编程求出到底哪位新郎和哪位新娘结婚。
6.2 解题思路
xin_lang = ["A", "B", "C"]
for x in xin_lang:for y in xin_lang:for z in xin_lang:if x != xin_lang[0] and x != xin_lang[2] and z != xin_lang[2] and x != y and x != z and y != z:print("X", x)print("Y", y)print("Z", z)
7. 编写求平均分的函数
7.1 问题描述
输入学生的成绩,把学生的成绩传入自定义函数,函数输出学生成绩的平均分。
提示:学生人数不限。自定义函数接收一个列表,输出平均分。
7.2 解题思路
def get_avg(lst):s = 0for i in lst:s += ireturn s / len(lst)scores = []
for i in range(5):s = int(input("请输入学生成绩"))scores.append(s)res = get_avg(scores)
print(res)
8.提取单词
8.1 问题描述
如有一个字符串”this is a test”请根据用户指定的单词位置,输出单词。如 用户输入 4 ,则输出 test。
提示:必须通过调用自定义函数实现效果。
8.2 解题思路
def get_word(s, pos):lst = s.split(" ")return lst[pos - 1]
#
s = "this is a test"
w = get_word(s, 4)
print(w)
9. 求年龄
9.1 问题描述
有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁,问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁,最后问第一个人,他说是10岁。请问第五个人多大?
9.2 解题思路
age=10
def get_age(age):for i in range(4):age=age+2return age
print (get_age(age))
10. 回文数函数
10.1 问题描述
实现判断一个数是不是回文数的函数。
10.2 解题思路
def get_huiwei(num):if str(num)[::-1] == str(num):return Truereturn False
print(get_huiwei(12312))
相关文章:
Python作业答疑
1. 旋转字符串 1.1 问题描述 给定一个字符串(以字符数组的形式)和一个偏移量,根据偏移量原地从左向右旋转字符串。 1.2 问题示例 输入str"abcdefg",offset3,输出"efgabcd"。 输入str"ab…...
计算机网络实用工具之Hydra
简介 Hydra 是一个并行登录破解程序,支持多种协议进行攻击。它非常快速且灵活,并且很容易添加新模块。 该工具使研究人员和安全顾问能够展示远程未经授权访问系统是多么容易。 目前该工具支持以下协议: Asterisk, AFP, Cisco AAA, Cisco au…...
AUTOSAR 入门
前言 AUTOSAR是什么Vector DaVinci 工具功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必…...
新版IDEA中,module模块无法被识别,类全部变成咖啡杯无法被识
新版IDEA中,module模块无法被识别,类全部变成咖啡杯无法被识 如下图: 解决方法:java的Directory文件没有被设置为根目录,解决方法如下: 这是方法之一,还有很多的原因 可能的原因: …...
vue.js el-table 动态单元格列合并
一、业务需求: 一个展示列表,表格中有一部分列是根据后端接口动态展示,对于不同类型的数据展示效果不一样。如果接口返回数据是’类型1‘的,则正常展示,如果是’类型2‘的数据,则合并当前数据的动态表格。…...
word模板导出word文件
前期准备工作word模板 右键字段如果无编辑域 ctrlF9 一下,然后再右键 wps 直接 ctrlF9 会变成编辑域 pom.xml所需依赖 <dependencies> <!--word 依赖--> <dependency><groupId>fr.opensagres.xdocreport</groupId><artifactId…...
debianubuntu的nvidia驱动升级
背景 给出的机器的驱动版本不符合要求,使用自定义的驱动版本。 前置 如果使用nvidia官方的.run安装的驱动包,可以使用系统自带的nvidia-uninstall命令卸载比较方便,不建议使用apt pruge nvidia-*命令删除。会带来其他的问题。 卸载完成之…...
【开源视频联动物联网平台】视频接入网关的用法
视频接入网关是一种功能强大的视频网关设备,能够解决各种视频接入、视频输出、视频转码和视频融合等问题。它可以在应急指挥、智慧融合等项目中发挥重要作用,与各种系统进行对接,解决视频能力跨系统集成的难题。 很多视频接入网关在接入协议…...
【bug排查解决】现象级延迟8-10s
业务背景 最近公司在做物联网相关的项目,调试过程中发现好玩的bug。 首先一个数据采集场景,plc采集数据全链路: kepServer(kepserver IOT gateway) -> emqx (查看日志)-> iot服务 -> 业…...
【人生感悟】不能对一个人太好是有心理学原理的
1、不能对一个人太好是有心理学原理的,当你长期友善对待一个人时,如果这个人认知程度不是很高,层次稍微的偏低,那他可能直接把你的友善理解为理所应当,甚至是你在讨好他,还会把你们之间的关系理解成他是高于…...
动态规划学习——最长回文子序列,让字符串变成回文串的最小插入次数
一,最长回文串 1.题目 给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。 子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。 示例 1: 输入&…...
CSS新手入门笔记整理:CSS列表样式
列表项符号:list-style-type 在HTML中,对于有序列表和无序列表的列表项符号,都是使用type属性来定义的。 语法 list-style-type:取值; list-style-type属性是针对ol或者ul元素的,而不是li元素。 有序列表属性 属性值 说明 …...
12月07日,每日信息差
以下是2023年12月07日的11条信息差 第一、社交媒体公司X计划在日本成立应用开发团队 第二、造车进程加快,小米汽车在多地招聘零售门店主管,零售门店主管工作地点涉及武汉、重庆、长沙、郑州、佛山、东莞、厦门等城市 第三、我国西南地区首座百万千瓦级…...
spring mvc理解
spring mvc M:model 模型 V:view 视图 C:controller 控制器 S: service 服务处理 D: Dao 数据持久化 视图 我理解就是web页面,帮助用户调用后端接口。 前后端分离之后,view似乎就和后端没什么关系了。 模型 格式…...
HTML-标签之文字排版、图片、链接、音视频
1、标签语法 HTML超文本标记语言——HyperText Markup Language 超文本是链接标记也叫标签,带尖括号的文本 2、HTML基本骨架 HTML基本骨架是网页模板 html:整个网页head:网页头部,存放给浏览器看的代码,例如CSSbody…...
圣诞将至—C语言圣诞树代码来啦
文章目录 圣诞将至—C实现语言圣诞树源码 圣诞将至—C实现语言圣诞树 圣诞树 源码 #define _CRT_SECURE_NO_WARNINGS#include <stdio.h> #include <math.h> #include <stdlib.h> #include <windows.h> #include <time.h> #define PI 3.14159265…...
Git常用命令#merge分支合并
要查看所有分支,包括本地和远程仓库的分支,可以使用以下命令: 1.查看分支 1.1 查看本地分支 git branch这个命令会列出本地所有的分支,当前所在的分支会有 * 标记。 1.2 查看远程分支 git branch -r这个命令会列出远程仓库的分…...
Windows server 2019 域环境部署
环境准备 准备3台服务器,配置都是8g2核,50g硬盘,操作系统版本Windows Server 2019 Datacenter 域服务器:adc,192.168.56.120服务器1:server1:,192.168.56.121服务器2:server2&…...
Cocos Creator加入图片没有被识别
原因,需要更换类型,选择下图中的类型...
java double类型保留两位小数并去除后面多余的0
public static void main(String[] args) {double value9.100001;//保留两位小数String format String.format("%.2f", value);//去除多余的0String strValue new BigDecimal(format).stripTrailingZeros().toPlainString();System.out.println("strValue &q…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践
6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...
AI编程--插件对比分析:CodeRider、GitHub Copilot及其他
AI编程插件对比分析:CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展,AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者,分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
