Python-VBA编程500例-025(入门级)

文章介绍了如何使用VBA编写一个函数,通过遍历输入的单词列表,将每个单词转换成摩尔斯码,然后计算并返回唯一摩尔斯码的数量。
摘要由CSDN通过智能技术生成
    """
    # 定义摩斯码字典,其中键为字母,值为对应的摩斯码
    morse_code = {
        'a': ".-", 'b': "-...", 'c': "-.-.", 'd': "-..", 'e': ".", 'f': "..-.",
        'g': "--.", 'h': "....", 'i': "..", 'j': ".---", 'k': "-.-", 'l': ".-..",
        'm': "--", 'n': "-.", 'o': "---", 'p': ".--.", 'q': "--.-", 'r': ".-.",
        's': "...", 't': "-", 'u': "..-", 'v': "...-", 'w': ".--", 'x': "-..-",
        'y': "-.--", 'z': "--.."
    }
    # 使用集合来保存出现过的摩斯码
    unique_morse = set()
    # 遍历单词列表
    for word in words:
        # 初始化摩斯码字符串
        morse_word = ''
        # 遍历单词中的每个字母
        for char in word:
            # 拼接摩斯码
            morse_word += morse_code[char.lower()]
        # 将拼接好的摩斯码添加到集合中
        unique_morse.add(morse_word)
    # 返回集合中不同摩斯码的数量
    return len(unique_morse)

主函数

if name == ‘main’:
# 输入input_words变量值
input_words = [“myelsa”, “my”, “myelsa”, “my”]
# 实例化Solution类
solution = Solution()
# 打印并输出结果
print(“输入为:”, input_words)
print(“输出为:”, solution.uniqueMorseRepresentations(input_words))

4.运行结果:

输入为: [‘myelsa’, ‘my’, ‘myelsa’, ‘my’]

输出为: 2


##### 1-2、VBA:



Rem 自定义函数,功能:摩尔斯电码
Function UniqueMorseRepresentations(words() As Variant) As Long
’ 声明两个对象变量 morseDict 和 uniqueMorse 用于存储摩斯电码字典和唯一摩尔斯电码集合
Dim morseDict As Object, uniqueMorse As Object
’ 声明循环计数器 i 和 j
Dim i As Integer, j As Integer
’ 声明用于遍历数组 words 的变量 word
Dim word As Variant
’ 声明用于构建摩尔斯电码字符串的变量 morseWord 和 char
Dim morseWord As String, char As String

' 定义摩斯电码常量数组
Const morseCode As String = ".- -... -.-. -.. . ..-. --. .... .. .--- -.- .-.. -- -. --- .--. --.- .-. ... - ..- ..- ...- .-- -..- -.-- --.."
' 定义字母常量数组
Const letters As String = "abcdefghijklmnopqrstuvwxyz"
' 创建一个摩斯电码字典对象
Set morseDict = CreateObject("Scripting.Dictionary")
' 遍历 letters 字符串,为每一个字母创建摩斯电码条目
For i = 1 To Len(letters)
    ' 将字母和对应的摩尔斯电码添加到字典中
    morseDict.Add mid(letters, i, 1), mid(morseCode, i * 3 - 2, 3)
Next i
' 创建一个用于存储唯一摩尔斯电码的对象
Set uniqueMorse = CreateObject("Scripting.Dictionary")
' 遍历 words 数组中的每个单词
For Each word In words
    ' 初始化摩尔斯电码字符串为空
    morseWord = ""
    ' 遍历单词中的每个字符
    For j = 1 To Len(word)
        ' 获取当前字符的小写形式
        char = LCase(mid(word, j, 1))
        ' 检查字符是否在摩斯电码字典中
        If morseDict.Exists(char) Then
            ' 将当前字符的摩斯电码追加到 morseWord 字符串中
            morseWord = morseWord & morseDict(char)
        End If
    Next j
    ' 检查 morseWord 是否已经在 uniqueMorse 集合中存在
    If Not uniqueMorse.Exists(morseWord) Then
        ' 如果不存在,则添加到 uniqueMorse 集合中
        uniqueMorse.Add morseWord, Nothing
    End If
Next word
' 返回 uniqueMorse 集合中的项目数量,即唯一摩尔斯电码的数量
UniqueMorseRepresentations = uniqueMorse.count

End Function
Rem 执行程序,功能:调用自定义函数UniqueMorseRepresentations,在立即窗口中输出结果
Sub TestRun()
’ 声明一个 Variant 类型的数组 input_words 和一个 Long 类型的变量 result
Dim input_words() As Variant
Dim result As Long

' 初始化 input_words 数组并赋值
input_words = Array("myelsa", "my", "myelsa", "my")
' 调用 UniqueMorseRepresentations 函数,并将结果赋值给 result
result = UniqueMorseRepresentations(input_words)
' 使用 Debug.Print 输出结果
Debug.Print "输出为:" & result

End Sub
'结果输出:
'输出为:2


**注意:1-2中的代码需粘贴到你的VBA编辑器中,按F5执行TestRun程序,在立即窗口中输出结果。**


##### 2、相关文章:


**2-1、**[Python-VBA编程500例-023(入门级)]( )")****


**2-2、[Python-VBA编程500例-024(入门级)]( )")**


**2-3、[Python-VBA编程500例-026(入门级)]( )")**


**2-4、[Python-VBA编程500例-027(入门级)]( )")**


##### Myelsa的Python算法之旅(高铁直达):[Myelsa的Python算法之旅(高铁直达)-CSDN博客]( )-CSDN博客")


##### 欢迎访问个人主页:[非风V非雨-CSDN博客]( )
 **自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。**

**深知大多数Python工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!**

**因此收集整理了一份《2024年Python开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。**

![img](https://img-blog.csdnimg.cn/img_convert/59289682d6d67a23fc391656b157b648.png)

![img](https://img-blog.csdnimg.cn/img_convert/4fa476cfe194d62964c3b89598303728.png)

![img](https://img-blog.csdnimg.cn/img_convert/0b5bcd9c687047417f47d0ef4ba05590.png)

![img](https://img-blog.csdnimg.cn/img_convert/2b2280d5aa18f6ca0211c1dc338472af.png)

![img](https://img-blog.csdnimg.cn/img_convert/6c361282296f86381401c05e862fe4e9.png)

![img](https://img-blog.csdnimg.cn/img_convert/9f49b566129f47b8a67243c1008edf79.png)

**既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

进阶课程,基本涵盖了95%以上前端开发知识点,真正体系化!**

**由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**

**如果你觉得这些内容对你有帮助,可以扫码获取!!!(备注:Python)**

![](https://img-blog.csdnimg.cn/img_convert/582e342ccdb2ac8696aca8a6fa1a70e8.jpeg)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值