Python 作业答疑_6.15~6.18
一、Python 一班
1. 比较字符串
1.1 问题描述
比较两个字符串A
和B
,字符串A
和B
中的字符都是大写字母,确定A
中是否包含B
中所有的字符。
1.2 问题示例
例如,给出A="ABCD"
,B="ACD"
,返回True
;给出A="ABCD"
,B="AABC"
,返回False
。
1.3 问题提示
先统计字符串A
中的字符以及字符的个数。再从B
中查找字符,如果出现A
中对应字符为 0
,则可认为A
中不包含B
字符串。不能使用循环嵌套。
1.4 编码实现
a = "ABCD"
b = "ACD"
table = [0 for _ in range(26)]
res = True
for c in a:if table[ord(c) - 65] == 0:table[ord(c) - 65] = 1else:table[ord(c) - 65] += 1
for c in b:if table[ord(c) - 65] == 0:res = Falseelse:table[ord(c) - 65] -= 1
print(res)
2. 能否转换
2.1 问题描述
给两个字符串S
和T
,判断S
能不能通过删除一些字母(包括0
个)变成T
。
2.2 问题示例
输入为S="longterm"
和T="long"
,输出为True
。
2.3 问题提示
要求不能使用循环嵌套;不能使用字符串相应的查找方法。只能使用基础语法自行设计算法实现。
时间复杂度要控制在 O(n)
,本题和上题的是不相同的,请注意审题。T
是 S
的一个子字符串。
2.4 编码实现
s = "longterm"
t = "long"
res = False
j = 0
for i in range(len(s)):if s[i] == t[j]:j += 1if j == len(t)-1:res = Truebreak
print(res)
3. 抽搐词
3.1 问题描述
正常单词不会有连续2
个以上相同的字母,如果出现连续3
个以上的字母,那么这是一个抽搐词。给出该单词,从左至右求出所有抽搐字母的起始点和结束点。
3.2 问题示例
输入str="whaaaaatttsup"
,输出为[[2,6],[7,9]]
,"aaaa"
和"ttt"
是抽搐字母;
输入str="whooooisssbesssst"
,输出为[[2,5],[7,9],[12,15]]
,"ooo""sss""ssss"
都是抽搐字母。
3.3 问题提示
在迭代字符串之前,声明一个临时变量,刚开始初始化为空字符串,如 oldc=''
,用来保存当前迭代字符的前一个字符。
3.4 编码实现
str = "whaaaaatttsup"
oldc = ""
res = []
count = 0
start = 0
for i in range(len(str)):if str[i] == oldc:count += 1else:res.append([start, start + count])count = 0start = ioldc = str[i]
print(res)
for i in res:if i[len(i) - 1] - i[0] >= 2:print(i)
二、Python 二班
1. 字符串写入的行数
1.1 问题描述
把字符串S
中的字符从左到右写入行中,每行最大宽度为100
,如果往后新写一个字符导致该行宽度超过100
,则写入下一行。
其中,一个字符的宽度由一个给定数组widths
决定,widths[0]
是字符a
的宽度,widths[1]
是字符b
的宽度,…,widths[25]
是字符z
的宽度。
把字符串S
全部写完,至少需要多少行?最后一行用去的宽度是多少?将结果作为整数列表返回。
1.2 问题示例
输入:
widths=[10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10]
S="abcdefghijklmnopqrstuvwxyz"
输出:[3,60]
每个字符的宽度都是10
,为了把这26
个字符都写进去,需要两个整行和一个长度60
的行。
1.3 问题提示
迭代字符串,获取每一个字符的宽度。使用 ord('字符')-97
可以获取字符在 widths
数组中的位置。 97
是小字字母的ASCII
编码。ord(‘字符’)
可以获取到每一个字符的编码。
1.4 编码实现
widths = [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10]
s = "abcdefghijklmnopqrstuvwxyz"
# 记录最终的行数
line = 0
# 宽度
width = 0
# 迭代字符串
for w in s:# 查找字符的宽度width += widths[ord(w) - 97]if width == 100:line += 1width = 0
if width >= 0:line += 1
print([line, width])
2. 独特的莫尔斯码
2.1 问题描述
莫尔斯码定义了一种标准编码,把每个字母映射到一系列点和短划线,例如:a->.-
,b->-...
,c->-.-.
。给出26
个字母的完整编码表格:
[".-","-...","-.-.","-..",".","..-.","--.","....","..",".---","-.-",".-..","--","-.","---",".--.","--.-",".-.","...","-","..-","...-",".--","-..-","-.--","--.."]
。
给定一个单词列表,单词中每个字母可以写成莫尔斯码。例如,将cab
写成-.-.-....-
,(把c
,a
,b
的莫尔斯码串接起来),即为一个词的转换。
返回所有单词中不同变换的数量。
2.2 问题示例
例如,输入words=["gin","zen","gig","msg"]
,输出2
,每一个单词的变换是:
"gin"->"--...-."
``“zen”->“–…-.”`
"gig"->"--...--."
"msg"->"--...--."
也就是有两种不同的变换结果:"--...-."
和"--...--."
。
2.3 问题提示
使用 ord()
函数获取字母在数组中的位置,再获取字母对应的编码。
2.4 编码实现
words = ["gin", "zen", "gig", "msg"]
# 莫尔斯码
mrsm = [".-", "-...", "-.-.", "-..", ".", "..-.", "--.", "....", "..", ".---", "-.-", ".-..", "--", "-.", "---", ".--.","--.-", ".-.", "...", "-", "..-", "...-", ".--", "-..-", "-.--", "--.."]
res = []
for w in words:ms = ""for c in w:# 单词的莫尔斯码ms += mrsm[ord(c) - 97]res.append(ms)
ma = 0
dic = {}
for r in res:# 统计莫尔斯吗的种类if r not in dic:dic[r] = 1else:dic[r] += 1
count = len(dic.keys())
print("不同的变换:", count)
3. 排序列表中最接近元素
3.1 问题描述
在一个排好序的数组A
中找到i
,使得A[i]
(数组A
中第i
个数)最接近目标数target
,输出i
。
3.2 问题示例
输入[1,2,3]
,目标数target=2
,输出1
,即A[1]
与目标数最接近;
输入[1,4,6]
,目标数target=3
,输出1
,即A[1]
与目标数最接近。
3.3 问题提示
可以认定为求最小值。最直接的方案是,计算列表中每一个数字与目标数字的差,然后再求最小值。
3.4 编码实现
方案一:
num = [1, 4, 6]
target=3
res=[]
for i in num:res.append(abs(target-i))
print(min(res))
方案二:
num=[1,4,6]
target=3
mi=abs(num[0]-target)
pos=0
for i in range(1,len(num)):if abs(target-num[i])<mi:mi=abs(target-num[i])pos=i
print(pos)
三、Python 三班
1. 利用递归方法求阶乘之和
1.1 问题描述
计算 1!+2!+3!+4!+5!
等于多少。
1.2 问题示例
本题要求先编写计算某一个数字阶乘的递归函数。
1.3 问题提示
要求使用递归方案,可以认为 5!=5X4!,4!=4X3!,3!=3X2!,2!=2X1!,1!=1
。
1.4 编码实现
def get_jc(num):if num==1:return 1return num*get_jc(num-1)s=0
for i in range(1,6):s+=get_jc(i)print(s)
2. 递归实现将所输入的5个字符,以相反顺序打印出来
2.1 问题描述
程序运行时,能接受用户输入5 个字符组成的字符串,程序运行后,以相反顺序输出字符串。
2.2 问题示例
如输入 abcde
,输出 edcba
。
2.3 问题提示
要求使用递归实现。
2.4 编码实现
def output(s, l):if l == 0:returnprint(s[l - 1],end='')output(s, l - 1)s = input('Input a string:')
l = len(s)
output(s, l)
3. 使用递归求解列表的和
3.1. 问题描述
给一个列表如: a[ 0,1,2,3,4,5,6,9,8]
使用递归的方式求和。
3.2. 问题示例
如:a=[1,2,3]
,结果为:6
。
3.3 问题提示
要求,使用递归实现。
3.4 编码实现
num = [0, 1, 2,4,5]def get_sum(num):if len(num) == 1:return num[0]return num[0] + get_sum(num[1:])res = get_sum(num)
print(res)
相关文章:
Python 作业答疑_6.15~6.18
一、Python 一班 1. 比较字符串 1.1 问题描述 比较两个字符串A和B,字符串A和B中的字符都是大写字母,确定A中是否包含B中所有的字符。 1.2 问题示例 例如,给出A"ABCD",B"ACD",返回True&#x…...

Diffusion 公式推导
Diffusion:通过扩散和逆扩散过程生成图像的生成式模型 中已经对 diffusion 的原理进行了直观地梳理,本文对其中的数学推导进行讲解,还是基于 DDPM。 目录 一. 预备知识1. 重参数技巧2. 高斯分布的可加性3. 扩散递推式的由来 二. 扩散过程1. 背…...

【C语言快速学习基础篇】之一基础类型、进制转换、数据位宽
文章目录 一、基础类型(根据系统不同占用字节数会有变化)1.1、有符号整形1.2、无符号整形1.3、字符型1.4、浮点型1.5、布尔型 二、进制转换2.1、二进制2.2、八进制2.3、十进制2.4、十六进制2.5、N进制2.6、进制转换关系对应表 三、数据位宽3.1、位3.2、字节3.3、字3.4、双字3.5…...

使用GPT-4V解决Pycharm设置问题
pycharm如何实现关联,用中文回答 在PyCharm中关联PDF文件类型,您可以按照以下步骤操作: 1. 打开PyCharm设置:点击菜单栏中的“File”(文件),然后选择“Settings”(设置)。…...
qt 安装
目录 前言 一、QT在线安装包下载 1.官方网站: 2.镜像(清华大学) 二、QT安装 1.更换安装源 2.安装界面 3.组件选择(重点) 参考 Qt2023新版保姆级 安装教程 前言 本文主要介绍2023新版QT安装过程,…...

【论文合集】在非欧空间中的图嵌入方法(Graph Embedding in Non-Euclidean Space)
文章目录 1. Hyperbolic Models1.1 Hyperbolic Graph Attention Network1.2 Poincar Embeddings for Learning Hierarchical Representations.1.3 Learning Continuous Hierarchies in the Lorentz Model of Hyperbolic Geometry1.4 Hyperbolic Graph Convolutional Neural Net…...

锐捷EWEB网管系统 RCE漏洞复现
0x01 产品简介 锐捷网管系统是由北京锐捷数据时代科技有限公司开发的新一代基于云的网络管理软件,以“数据时代创新网管与信息安全”为口号,定位于终端安全、IT运营及企业服务化管理统一解决方案。 0x02 漏洞概述 Ruijie-EWEB 网管系统 flwo.control.php 中的 type 参数存在…...
Clickhouse在货品标签场景的应用
背景 在电商场景中,我们经常需要对货品进行打标签的操作,简单来说就是对货品进行各种分类,按照价格段进行分组,此时运营人员就可以通过价格段捞取到满足条件的商品了,本文就来简单看下这个场景如何在clickhouse中实现…...
CentOS 7 lvm 更换坏盘操作步骤小记 —— 筑梦之路
背景介绍 硬盘容量不足、硬盘坏道太多等不可控的原因需要更换,要求不能丢失数据进行无损替换硬盘。 操作步骤 1. 将硬盘插入机器,上电连接到服务器 2. 在centos 7 系统中检测是否识别出来硬盘 lsblk 3. 给新插入的硬盘分区 parted /dev/sdc mklabel g…...

zabbix的自动发现和注册、proxy代理和SNMP监控
目录 一、zabbix自动发现与自动注册机制: 1、概念 2、zabbix 自动发现与自动注册的部署 二、zabbix的proxy代理功能: 1、工作流程 2、安装部署 三、zabbix-snmp 监控 1、概念 2、安装部署 四、总结: 一、zabbix自动发现与自动注册…...
以Hub为中心节点的网络技术探析
在计算机网络中,Hub是一个重要的组成部分,它作为中心节点,连接着各个站点,实现数据的传输和通信。本文将对以Hub为中心节点的网络进行深入的技术探析。 首先,我们需要了解什么是Hub。在网络术语中,Hub通常…...

百度推送收录工具-免费的各大搜索引擎推送工具
在互联网时代,网站收录是网站建设的重要一环。百度推送工具作为一种提高网站收录速度的方式备受关注。在这个信息爆炸的时代,对于网站管理员和站长们来说,了解并使用一些百度推送工具是非常重要的。本文将重点分享百度批量域名推送工具和百度…...

物流实时数仓ODS层——Mysql到Kafka
目录 1.采集流程 2.项目架构 3.resources目录下的log4j.properties文件 4.依赖 5.ODS层——OdsApp 6.环境入口类——CreateEnvUtil 7.kafka工具类——KafkaUtil 8.启动集群项目 这一层要从Mysql读取数据,分为事实数据和维度数据,将不同类型的数据…...
奇迹mu 架设过程中可能会出现的问题及解决办法
通常我们在架设奇迹的时候,可能会遇见这种问题那种问题,很多用户都不知道该如何解决,今天我们就来系统的说明一下一些常见的问题,帮助遇见这些问题的用户理清一个架设的思路,更清楚的判断问题出在哪里,该如…...

IDC MarketScape2023年分布式数据库报告:OceanBase位列“领导者”类别,产品能力突出
12 月 1 日,全球领先的IT市场研究和咨询公司 IDC 发布《IDC MarketScape:中国分布式关系型数据库2023年厂商评估》(Document number:# CHC50734323)。报告认为,头部厂商的优势正在扩大,OceanBase 位列“领导者”类别。…...
Docker创建mqtt容器mosquitto
#1.创建映射到主机的配置文件/bwss/agent/docker/mosquitto_public/config/mosquitto.conf 内容为: listener 51883 0.0.0.0 # 0.0.0.0 allow_anonymous false persistence false persistence_location /mosquitto/data password_file /mosquitto/config/passwd …...

运维知识点-SQLServer/mssql
SQLServer/mssql Microsoft structed query language常见注入提权 技术点:0x00 打点前提 0x01 上线CS0x02 提权0x03 转场msf0x04 抓取Hash0x05 清理痕迹 Microsoft structed query language 常见注入 基于联合查询注入 order by 判断列数(对应数据类型…...

Reactor实战,创建一个简单的单线程Reactor(理解了就相当于理解了多线程的Reactor)
单线程Reactor package org.example.utils.echo.single;import java.io.IOException; import java.net.InetSocketAddress; import java.nio.channels.*; import java.util.Iterator; import java.util.Set;public class EchoServerReactor implements Runnable{Selector sele…...
NoSQL大数据存储技术测试题(参考答案)
目录 1.绪论 2.NoSQL数据库的基本原理 4.HBase的基本原理与使用 5.HBase高级原理 7.MongoDB 8.其他NoSQL数据库 1.绪论 总分: 14.0 10分 单项选择题 4分 判断题 教师评语: 一 单项选择题(10分) 1、NoSQL一词表示的含义是()。…...

Python查看文件列表
os.listdir 是 Python 的一个内置函数,用于列出指定目录中的所有文件和子目录。它接受一个字符串参数,即要列出内容的目录的路径。 列出当前工作目录中的所有文件和子目录 files_and_dirs os.listdir() print(files_and_dirs) 列出指定目录中的所…...

wordpress后台更新后 前端没变化的解决方法
使用siteground主机的wordpress网站,会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后,网站没有变化的情况。 不熟悉siteground主机的新手,遇到这个问题,就很抓狂,明明是哪都没操作错误&#x…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

使用Spring AI和MCP协议构建图片搜索服务
目录 使用Spring AI和MCP协议构建图片搜索服务 引言 技术栈概览 项目架构设计 架构图 服务端开发 1. 创建Spring Boot项目 2. 实现图片搜索工具 3. 配置传输模式 Stdio模式(本地调用) SSE模式(远程调用) 4. 注册工具提…...

基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

Linux 下 DMA 内存映射浅析
序 系统 I/O 设备驱动程序通常调用其特定子系统的接口为 DMA 分配内存,但最终会调到 DMA 子系统的dma_alloc_coherent()/dma_alloc_attrs() 等接口。 关于 dma_alloc_coherent 接口详细的代码讲解、调用流程,可以参考这篇文章,我觉得写的非常…...
【java】【服务器】线程上下文丢失 是指什么
目录 ■前言 ■正文开始 线程上下文的核心组成部分 为什么会出现上下文丢失? 直观示例说明 为什么上下文如此重要? 解决上下文丢失的关键 总结 ■如果我想在servlet中使用线程,代码应该如何实现 推荐方案:使用 ManagedE…...

简约商务通用宣传年终总结12套PPT模版分享
IOS风格企业宣传PPT模版,年终工作总结PPT模版,简约精致扁平化商务通用动画PPT模版,素雅商务PPT模版 简约商务通用宣传年终总结12套PPT模版分享:商务通用年终总结类PPT模版https://pan.quark.cn/s/ece1e252d7df...

VSCode 没有添加Windows右键菜单
关键字:VSCode;Windows右键菜单;注册表。 文章目录 前言一、工程环境二、配置流程1.右键文件打开2.右键文件夹打开3.右键空白处打开文件夹 三、测试总结 前言 安装 VSCode 时没有注意,实际使用的时候发现 VSCode 在 Windows 菜单栏…...

break 语句和 continue 语句
break语句和continue语句都具有跳转作用,可以让代码不按既有的顺序执行 break break语句用于跳出代码块或循环 1 2 3 4 5 6 for (var i 0; i < 5; i) { if (i 3){ break; } console.log(i); } continue continue语句用于立即终…...
视觉slam--框架
视觉里程计的框架 传感器 VO--front end VO的缺点 后端--back end 后端对什么数据进行优化 利用什么数据进行优化的 后端是怎么进行优化的 回环检测 建图 建图是指构建地图的过程。 构建的地图是点云地图还是什么信息的地图? 建图并没有一个固定的形式和算法…...