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) 列出指定目录中的所…...
后进先出(LIFO)详解
LIFO 是 Last In, First Out 的缩写,中文译为后进先出。这是一种数据结构的工作原则,类似于一摞盘子或一叠书本: 最后放进去的元素最先出来 -想象往筒状容器里放盘子: (1)你放进的最后一个盘子(…...
微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】
微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来,Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...
基于Flask实现的医疗保险欺诈识别监测模型
基于Flask实现的医疗保险欺诈识别监测模型 项目截图 项目简介 社会医疗保险是国家通过立法形式强制实施,由雇主和个人按一定比例缴纳保险费,建立社会医疗保险基金,支付雇员医疗费用的一种医疗保险制度, 它是促进社会文明和进步的…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错
出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
技术栈RabbitMq的介绍和使用
目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
【LeetCode】3309. 连接二进制表示可形成的最大数值(递归|回溯|位运算)
LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 题目描述解题思路Java代码 题目描述 题目链接:LeetCode 3309. 连接二进制表示可形成的最大数值(中等) 给你一个长度为 3 的整数数组 nums。 现以某种顺序 连接…...
