Python 作业答疑_6.15~6.18

2023-12-08 01:15
文章标签 python 作业 答疑 6.15 6.18

本文主要是介绍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)

这篇关于Python 作业答疑_6.15~6.18的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/467987

相关文章

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

Python中模块graphviz使用入门

《Python中模块graphviz使用入门》graphviz是一个用于创建和操作图形的Python库,本文主要介绍了Python中模块graphviz使用入门,具有一定的参考价值,感兴趣的可以了解一... 目录1.安装2. 基本用法2.1 输出图像格式2.2 图像style设置2.3 属性2.4 子图和聚

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

基于Python打造一个智能单词管理神器

《基于Python打造一个智能单词管理神器》这篇文章主要为大家详细介绍了如何使用Python打造一个智能单词管理神器,从查询到导出的一站式解决,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 项目概述:为什么需要这个工具2. 环境搭建与快速入门2.1 环境要求2.2 首次运行配置3. 核心功能使用指

Python实现微信自动锁定工具

《Python实现微信自动锁定工具》在数字化办公时代,微信已成为职场沟通的重要工具,但临时离开时忘记锁屏可能导致敏感信息泄露,下面我们就来看看如何使用Python打造一个微信自动锁定工具吧... 目录引言:当微信隐私遇到自动化守护效果展示核心功能全景图技术亮点深度解析1. 无操作检测引擎2. 微信路径智能获

Python中pywin32 常用窗口操作的实现

《Python中pywin32常用窗口操作的实现》本文主要介绍了Python中pywin32常用窗口操作的实现,pywin32主要的作用是供Python开发者快速调用WindowsAPI的一个... 目录获取窗口句柄获取最前端窗口句柄获取指定坐标处的窗口根据窗口的完整标题匹配获取句柄根据窗口的类别匹配获取句

利用Python打造一个Excel记账模板

《利用Python打造一个Excel记账模板》这篇文章主要为大家详细介绍了如何使用Python打造一个超实用的Excel记账模板,可以帮助大家高效管理财务,迈向财富自由之路,感兴趣的小伙伴快跟随小编一... 目录设置预算百分比超支标红预警记账模板功能介绍基础记账预算管理可视化分析摸鱼时间理财法碎片时间利用财