电话号码对应英文单词 (python)

2023-10-27

在电话号码输入数字,输出他所有的单词组合。

解法 1

循环法,这里假设电话号码只有3位,那么可以使用3个for循环来进行输出。

c = ["","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"] # 分别代表着0,1,2,3,4,5,6,7,8,9
total = [0,0,3,3,3,3,3,4,3,4] # 分别代表着c中字母的数量
number = list(map(int, input().split()))
TelLength = len(number) # 电话号码的位数
answer = [0 for _ in range(TelLength)] # 表示数字目前代表的在C的相对位置,比如A为0,B为1,C为3

for answer[0] in range(total[number[0]]):
    for answer[1] in range(total[number[1]]):
        for answer[2] in range(total[number[2]]):
            for i in range(3):
                print(c[number[i]][answer[i]], end="")
            print()

解法 2

将解法1进行改写,使其应用范围更广代码更简洁。

c = ["","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"] # 分别代表着0,1,2,3,4,5,6,7,8,9
total = [0,0,3,3,3,3,3,4,3,4] # 分别代表着c中字母的数量
number = list(map(int, input().split()))
TelLength = len(number) # 电话号码的位数
answer = [0 for _ in range(TelLength)] # 表示数字目前代表的在C的相对位置,比如A为0,B为1,C为3

while True:
    # 输出数据
    for i in range(TelLength):
        print(c[number[i]][answer[i]], end="")
    print()
    k = TelLength - 1 #从最下层开始遍历
    while k>=0:
        if answer[k] < total[number[k]] - 1:#如果没有到达尾部,直接取
            answer[k] += 1
            break
        else:
            answer[k] = 0 # 该层的值变成第一位
            k -= 1 #遍历上层
    if k < 0:# 最上层也遍历完了
        break

解法 3

采用递归的方法来进行改写解法1。

c = ["","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"] # 分别代表着0,1,2,3,4,5,6,7,8,9
total = [0,0,3,3,3,3,3,4,3,4] # 分别代表着c中字母的数量
number = list(map(int, input().split()))
TelLength = len(number) # 电话号码的位数
answer = [0 for _ in range(TelLength)] # 表示数字目前代表的在C的相对位置,比如A为0,B为1,C为3


def RecursiveSearch(numbre, answer, index, n):
    if index == n:
        for i in range(TelLength):
            print(c[number[i]][answer[i]], end="")
        print()
        return
    for answer[index] in range(total[number[index]]):
        RecursiveSearch(numbre, answer, index+1, n)
RecursiveSearch(number, answer, 0, TelLength)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

电话号码对应英文单词 (python) 的相关文章

随机推荐

  • thinkphp的debug调试开启、关闭

    官方文档 https www kancloud cn manual thinkphp6 0 1037618 前言 强烈建议在开发阶段始终开启调试模式 直到正式部署后关闭调试模式 方便及时发现隐患问题和分析 解决问题 开启 如果你是通过 Co
  • 4月程序员薪资出炉,又又又拖后腿了?

    无论你等或不等 4月全国程序员就业薪资排行榜都已经来了 在这次的排行中 北京以18094元排行第一名 杭州 南京等新一线城市的排名表现不错 甚至超过一线城市广州 快来看看你拖城市后腿了没有 来源网络 如侵删 从城市排行中可以看到 现在程序员
  • CUDA Samples: Long Vector Add

    以下CUDA sample是分别用C 和CUDA实现的两个非常大的向量相加操作 并对其中使用到的CUDA函数进行了解说 各个文件内容如下 common hpp ifndef FBC CUDA TEST COMMON HPP define F
  • mybatis的一些特殊符号标识(大于,小于,等于,不等于)

    特殊字符 替代符号 红色基本为常用的 amp lt lt gt gt quot apos 小于等于 a lt b a lt b a b 大于等于 a gt b a gt b a b 不等于 a ba b a
  • 【allegro 17.4软件操作保姆级教程十一】表贴器件封装制作

    个人主页 highman110 作者简介 一名硬件工程师 持续学习 不断记录 保持思考 输出干货内容 目录 封装组成元素 焊盘类型 表贴器件封装制作 环境设置 计算坐标 放置pin脚 绘制丝印线 放置位号和value 放置1脚标识 放置其他
  • Linux QT GUI 界面程序打包 linuxdeployqt

    说明 1 主要依赖linuxdeployqt打包工具 2 打包Linux上的QT界面软件 使其不依赖QT开发环境 linuxdeployqt安装过程 不能下载官方编译好的 appimage文件 会报告gblic的问题 下载官方源码 修改ma
  • 【深度学习】真正的即插即用!盘点11种CNN网络设计中精巧通用的“小”插件...

    作者丨皮特潘 编辑丨极市平台 导读 所谓 插件 就是要能锦上添花 又容易植入 落地 即真正的即插即用 本文盘点的 插件 能够提升CNN平移 旋转 scale等变性能力或多尺度特征提取 感受野等能力 在很多SOTA网络中都会看到它们的影子 前
  • java基础题系列(1 - 10)

    说在前面 马上就要到秋招了 也从网上获取了一些java的基础面试题 总共有100多道 为了保持状态 每天回顾10道左右 如果result有不对的地方 希望各位大佬可以指正 谢谢 20200706 by 1z 请你说说java和php的区别
  • [开发

    使用Jackson库解析JSON 在Maven项目中 在pom xml中添加以下依赖
  • Mac连接网线能够接收微信消息,浏览器不能访问网页

    1 问题 Mac连接网线能够接收微信消息 浏览器不能访问网页 访问网页 有提示 如下信息 找不到IP地址 2 解决方法 和其他人的配置进行比较 发现自己的网络设置中 DNS服务器显示的是8 8 8 8 其他人的是灰色的DNS服务器 点击高级
  • git blame命令详解

    文章目录 1 git blame用法 2 举例 1 git blame用法 git blame用来追溯一个指定文件的历史修改记录 git blame用来追溯一个指定文件的历史修改记录 它能显示任何文件中每行最后一次修改的提交记录 所以 如果
  • mybatis---设置typeAliasesPackage支持通配符匹配

    设置typeAliasesPackage支持 通配符匹配 mybatis的typeAliasesPackage属性的作用是 搜索指定包别名 配置了以后xml文件中的resultType和parameterType就不需要指定全类名com e
  • linux服务器网站安全狗安装教程

    1 下载服务器安全狗和服务器网站安全狗 选择好版本 http download safedog cn safedog linux64 tar gz 这个是网站安全狗的下载地址 2 进行下载 命令是 wget http down safedo
  • CTF实战30 CTF题目练习和讲解五

    该培训中提及的技术只适用于合法CTF比赛和有合法授权的渗透测试 请勿用于其他非法用途 如用作其他非法用途与本文作者无关 这一阶段我们将会接触PWN类的题目 PWN等于REVERSE 因为一开始可能很多逆向的基础都不太好 毕竟我们重点不是PW
  • 安卓学习之自定义View类和控件(Button去掉边框)

    在很多情况下 我们需要自定义属于自己的layout 毕竟很多时候我们需要把 一些经常用到的布局保存下来 在以后继续使用 避免重复代码 标题栏实例 xml代码如下 style android attr borderlessButtonStyl
  • 时空预测

    目录 线性时空预测 图时空预测 线性时空预测 这篇文章在时空预测领域 搭建了一个简单高效的线性模型 且使用了channel independence的方式进行建模 模型的整体结构如下图所示 是一个级联的结构 输入分为三个部分 tempora
  • pythonflaskmock数据_基于 Flask 的简易 Mock 平台

    Mock Server 基于Flask实现的一个简易Mock平台 使用标准json结构体编写Mock Api https github com yinquanwang MockServer Key Features 遵循Http协议 支持G
  • JavaScript(1)-JS变量、关键字、命名规范

    文章目录 前言 一 JS变量 关键字 命名规范 1 关键字 已经被JS内部使用了的 2 保留字 虽然暂时还未被使用 但将来可能会被JS内部使用 变量的命名规范 JS数据类型 JS运算符的使用 算术运算符 总结 前言 JavaScript是一
  • 【数据结构】多项式相加

    问题描述 编写一个程序用单链表存储多项式 并实现两个一元多项式A与B相加的函数 A B刚开始是无序的 A与B之和按降序排列 例如 多项式A 1 2X 0 2 5X 1 3 2X 3 2 5X 5 多项式B 1 2X 0 2 5X 1 3 2
  • 电话号码对应英文单词 (python)

    在电话号码输入数字 输出他所有的单词组合 解法 1 循环法 这里假设电话号码只有3位 那么可以使用3个for循环来进行输出 c ABC DEF GHI JKL MNO PQRS TUV WXYZ 分别代表着0 1 2 3 4 5 6 7 8