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) 列出指定目录中的所…...

SpringBoot-17-MyBatis动态SQL标签之常用标签
文章目录 1 代码1.1 实体User.java1.2 接口UserMapper.java1.3 映射UserMapper.xml1.3.1 标签if1.3.2 标签if和where1.3.3 标签choose和when和otherwise1.4 UserController.java2 常用动态SQL标签2.1 标签set2.1.1 UserMapper.java2.1.2 UserMapper.xml2.1.3 UserController.ja…...
逻辑回归:给不确定性划界的分类大师
想象你是一名医生。面对患者的检查报告(肿瘤大小、血液指标),你需要做出一个**决定性判断**:恶性还是良性?这种“非黑即白”的抉择,正是**逻辑回归(Logistic Regression)** 的战场&a…...

大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
基于服务器使用 apt 安装、配置 Nginx
🧾 一、查看可安装的 Nginx 版本 首先,你可以运行以下命令查看可用版本: apt-cache madison nginx-core输出示例: nginx-core | 1.18.0-6ubuntu14.6 | http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages ng…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成
厌倦手动写WordPress文章?AI自动生成,效率提升10倍! 支持多语言、自动配图、定时发布,让内容创作更轻松! AI内容生成 → 不想每天写文章?AI一键生成高质量内容!多语言支持 → 跨境电商必备&am…...

IoT/HCIP实验-3/LiteOS操作系统内核实验(任务、内存、信号量、CMSIS..)
文章目录 概述HelloWorld 工程C/C配置编译器主配置Makefile脚本烧录器主配置运行结果程序调用栈 任务管理实验实验结果osal 系统适配层osal_task_create 其他实验实验源码内存管理实验互斥锁实验信号量实验 CMISIS接口实验还是得JlINKCMSIS 简介LiteOS->CMSIS任务间消息交互…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...