Python 作业答疑_6.15~6.18

一、Python 一班

1. 比较字符串

1.1 问题描述

比较两个字符串AB,字符串AB中的字符都是大写字母,确定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 问题描述

给两个字符串ST,判断S能不能通过删除一些字母(包括0个)变成T

2.2 问题示例

输入为S="longterm"T="long",输出为True

2.3 问题提示

要求不能使用循环嵌套;不能使用字符串相应的查找方法。只能使用基础语法自行设计算法实现。

时间复杂度要控制在 O(n),本题和上题的是不相同的,请注意审题。TS的一个子字符串。

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写成-.-.-....-,(把cab的莫尔斯码串接起来),即为一个词的转换。

返回所有单词中不同变换的数量。

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/205275.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

硬件基础:差模和共模

一直以来&#xff0c;都难以理解差模和共模这两个概念&#xff0c;什么差分信号、差模信号、共模信号&#xff0c;差模干扰、共模干扰……虽然看了一些资料&#xff0c;但貌似说法还挺多的&#xff0c;理解起来仍然是一头雾水。所以&#xff0c;专门用一篇文章来好好研究下这个…

结构体对齐和补齐

结构体的对齐和补齐的规则&#xff1a; 对齐&#xff1a;假定从零地址开始&#xff0c;每成员的起始地址编号&#xff0c;必须是它本身字节数的整数倍。 补齐&#xff1a;结构的总字节数必须是它最大成员的整数倍。 注意&#xff1a;在Linux系统下计算补齐、对齐时&#xff0c;…

算法学习系列(六):高精度加法、减法、乘法、除法

目录 引言一、高精度加法1.题目描述2.代码实现3.测试 二、高精度减法1.题目描述2.代码实现3.测试 三、高精度乘法1.题目描述2.代码实现3.测试 四、高精度除法1.题目描述2.代码实现3.测试 引言 本文介绍了高精度加法、高精度减法、高精度乘法、高精度除法&#xff0c;这个高精度…

软件开发自动化到智能文档检索:大语言模型驱动的开源项目盘点 | 开源专题 No.46

shroominic/codeinterpreter-api Stars: 2.4k License: MIT 这是一个 ChatGPT 代码解释器的开源实现项目&#xff0c;使用了 LangChain 和 CodeBoxes 进行后端沙盒式 Python 代码执行。该项目具有以下特性和优势&#xff1a; 数据集分析、股票图表绘制、图像处理等功能支持网…

KubeSphere Marketpalce 上新!Databend Playground 助力快速启动数据分析环境

12 月 5 日&#xff0c;Databend Labs 旗下 Databend Playground&#xff08;社区尝鲜版&#xff09;成功上架青云科技旗下 KubeSphere Marketplace 云原生应用扩展市场&#xff0c;为用户提供一个快速学习和验证 Databend 解决方案的实验环境。 关于 Databend Playground Dat…

Flask之手搓bootstrap翻页

使用bootstrap框架的翻页组件时&#xff0c;记起在学习使用laravel框架的时候&#xff0c;只需要添加相应的功能代码&#xff0c;就可以直接使用翻页组件了&#xff0c;但缺少自定义&#xff0c;或者说自定义起来有点麻烦。 自己手搓翻页组件&#xff0c;不仅能加深对flask的认…

Java架构师系统架构设计服务拆分应用

目录 1 概论2 微服务应用的分层架构-阿里系应用内部模块分层3 如何从不同维度对服务进行拆分4【案例分析】阿里新零售业务的微服务拆分5 如何理解微服务的无状态化6 如何通过接口版本控制实现向后兼容7 可用性的保障手段-流量整形8 如何设计网关层限流和分布式限流9 EDA事件驱动…

STM32基础教程 p18 UART通信协议基础知识

1 UART通信协议简介 UART通信协议详细介绍 1.1 串行通信的简介 1. 单工通信&#xff1a;学校广播 2. 半双工通信&#xff1a;对讲机 3. 全双工通信&#xff1a;手机打电话 UART:通用的同步异步收发器 1.1.1 同步通信 组成&#xff1a;数据线、时钟线、偏选信号线 收发双方…

从文字到使用,一文读懂Kafka服务使用

&#x1f3c6;作者简介&#xff0c;普修罗双战士&#xff0c;一直追求不断学习和成长&#xff0c;在技术的道路上持续探索和实践。 &#x1f3c6;多年互联网行业从业经验&#xff0c;历任核心研发工程师&#xff0c;项目技术负责人。 &#x1f389;欢迎 &#x1f44d;点赞✍评论…

大数据在互联网营销中的应用:案例与策略

互联网时代的营销领域正经历着一场由大数据驱动的变革。在2023年&#xff0c;大数据的应用已成为推动市场策略和决策的关键因素。本文将探讨大数据如何影响互联网营销&#xff0c;并通过实际案例分析展示其在提升营销效果方面的作用。 首先&#xff0c;通过分析海量数据&#x…

NumSharp

github地址&#xff1a;https://github.com/SciSharp/NumSharp High Performance Computation for N-D Tensors in .NET, similar API to NumPy. NumSharp (NS) is a NumPy port to C# targetting .NET Standard. NumSharp is the fundamental package needed for scientific …

第二十一章——网络通信

一.网络程序设计基础 1.局域网与互联网 2.网络协议 1.IP协议 IP是Internet Protocol的简称&#xff0c;是一种网络协议。 1.1 TCP/IP层次结构 2.TCP与UDP协议 TCP可保证数据从一端送至另一端时&#xff0c;能够确实送达&#xff0c;而且抵达的数据的排列顺序和送出时的顺序相…

设备间的指令通信

指令通信的概念 要进行设备和设备之间的交流就需要通过串口发送数据进行交流 而串口发送简单的数据只需要传输介质 但是要发送复杂的数据就需要介质和传输的规则了 三种应用场景 比如在上位机和mcu之间 通过上位机管理控制器 从而控制电池 单片机和单片机之间 用户输入数据到…

HTTPS加密协议:保护你的隐私与安全的铠甲

在当今数字时代&#xff0c;隐私和安全保护变得至关重要。而HTTPS加密协议作为互联网通信的保护铠甲&#xff0c;扮演着重要角色。无论你是网站开发者还是普通用户&#xff0c;了解HTTPS加密协议的工作原理和技术细节都是至关重要的。本篇博文将带你深入探索HTTPS加密协议&…

国产麒麟操作系统部署记录

前提&#xff1a;部署项目首先要安装各种软件&#xff0c;在内网环境下无法在线下载。 思路&#xff1a;首先部署一台能上网的系统&#xff0c;在此系统下只下载包&#xff0c;然后传到另一台内网系统下进行安装&#xff1b; 1、最开始yum未安装&#xff0c;因此需要先安装yu…

C语言中的动态内存管理

在C语言中&#xff0c;动态内存管理是通过一系列的标准库函数来实现的&#xff0c;这些函数包括malloc, free, calloc 和 realloc。它们允许程序在运行时动态地分配和释放内存&#xff0c;这是管理复杂数据结构&#xff08;如链表、树等&#xff09;时非常有用的功能。 为什么…

硬件基础:运放

理想运算放大器 理想运算放大器放大倍数无穷大&#xff1b;输入端阻抗无穷大&#xff0c;所以输入端电流为0&#xff1b;输出电压和负载无关&#xff0c;不管负载怎么变化&#xff0c;输出电压都是固定的。 还有个就是输出阻抗为0&#xff1b; 输出阻抗越小&#xff0c;输出时就…

Avalonia中如何实现文件拖拽上传

前言 前面我们讲了在Avalonia中如何将View事件映射到ViewModel层感兴趣的读者可以看一下&#xff0c;本章我们将讲一下在Avalonia框架下如何实现文件和文字的拖拽到指定区域进行处理和上传。 先看效果 界面设计比较简单&#xff0c;还是在前一张的基础上加了一个指定区域&…

基于springboot + vue的社区医院信息系统

qq&#xff08;2829419543&#xff09;获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;springboot 前端&#xff1a;采用vue技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xf…

leetcode 622. 设计循环链表

这道题讲了两种方法&#xff0c;第一个代码是用数组实现的&#xff0c;第二个是用链表实现的&#xff0c;希望对你们有帮助 &#xff08;最好在VS自己测试一遍&#xff0c;再放到 leetcode上哦&#xff09; 下面的是主函数&#xff08;作参考&#xff09;&#xff0c;静下心来…