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…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
2025年能源电力系统与流体力学国际会议 (EPSFD 2025)
2025年能源电力系统与流体力学国际会议(EPSFD 2025)将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会,EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...
Python:操作 Excel 折叠
💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...
相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了: 这一篇我们开始讲: 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下: 一、场景操作步骤 操作步…...
无法与IP建立连接,未能下载VSCode服务器
如题,在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈,发现是VSCode版本自动更新惹的祸!!! 在VSCode的帮助->关于这里发现前几天VSCode自动更新了,我的版本号变成了1.100.3 才导致了远程连接出…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
剑指offer20_链表中环的入口节点
链表中环的入口节点 给定一个链表,若其中包含环,则输出环的入口节点。 若其中不包含环,则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...
Redis数据倾斜问题解决
Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中,部分节点存储的数据量或访问量远高于其他节点,导致这些节点负载过高,影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决
Spring Cloud Gateway 中自定义验证码接口返回 404 的排查与解决 问题背景 在一个基于 Spring Cloud Gateway WebFlux 构建的微服务项目中,新增了一个本地验证码接口 /code,使用函数式路由(RouterFunction)和 Hutool 的 Circle…...
