电话号码对应英文单词 (python)
在电话号码输入数字,输出他所有的单词组合。
解法 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为3for 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为3while 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] += 1breakelse: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为3def RecursiveSearch(numbre, answer, index, n):if index == n:for i in range(TelLength):print(c[number[i]][answer[i]], end="")print()returnfor answer[index] in range(total[number[index]]):RecursiveSearch(numbre, answer, index+1, n)
RecursiveSearch(number, answer, 0, TelLength)
电话号码对应英文单词 (python)相关推荐
- python英文单词-python常用150个英文单词
1.python 蟒蛇 2. downlaods 下载 3. install 安装 4. customize 自定义 5. path 环境变量:路径 6. optional 可选的 7. featur ...
- 编程之美-电话号码对应英文单词方法整理
[试题描述] 问题1的方法一:直接循环法 假设电话号码只有3位,那么可能会有人很快写出3个for循环,如下: 对以上程序进行简单修改,增强扩展性: 问题1的方法二:递归的解法 ------------ ...
- 电话号码对应英文单词
原文链接:http://www.cnblogs.com/yanglf/archive/2012/11/16/2773492.html #include<iostream> #define ...
- 电话号码与英文单词对应
问题: 电话的号码盘一般可以用于输入字母.如用2可以输入A.B.C,用3可以输入D.E.F等. 如:对于号码5869872,可以依次输入其代表的所有字母组合.如:JTMWTPA.JTMWTPB- 1. ...
- 电话号码的字母组合Python解法
给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 来源:力扣(LeetCode) ...
- python基础练习(100)--练习题
一.python基础练习(100) 1.1 基础(格式或语法) """只记录复杂化的题目和思路""" 003.比较和赋值 --执行如下代码会 ...
- Python基础知识点总结
Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...
- leetcode哈希表(python与c++)
1.整数转罗马数字 python: class Solution:def intToRoman(self, num: int) -> str:dict_ = {1000:'M', 900:'CM ...
- python有哪些知识_Python有哪些基础知识
Python基础知识:1.引用和对象:2.可变数据类型和不可变数据类型:3.引用传递和值传递:4.深拷贝和浅拷贝:5.基本数据类型:6.关键字.标识符和内置函数:7.算术.赋值运算符等等. 相关学习推 ...
最新文章
- java解析各种文档格式_java读取各类型的文件
- 模板页显示Excel数据Gridview增删改查
- 向上取整的方法_瓷砖测量的方法有哪些?瓷砖尺寸一般是多少?
- 北京招聘 | 澜舟科技招聘NLP工程师、NLP研究员、产品项目经理
- 文献记录(part82)--基于监督联合去噪模型的社交网络链接预测
- xcode 怎么调用midi开发录音_如何组建个人录音工作室
- [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
- mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包
- 互联网晚报 | 3月3日 星期四 |​ 苹果将于北京时间3月9日凌晨2点举办春季发布会;vivo子品牌NEX被砍掉...
- Java NIO操作Socket的用法
- Flutter基础—常用控件之文本
- Boot.ini无解
- lua能在stm32arm上运行吗_IOS App能在Mac运行!苹果这黑科技能撼动微软吗?
- 数据分享 — 国内外常用夜间灯光数据产品介绍
- 免费的中文语音数据集汇总列表
- Xcode使用githut做代码版本管理
- 计算机的组策略在哪,组策略命令,教您电脑组策略怎么打开
- tp点一共有多少_dnf人家为什么比你多好几点tp点?原因终于找到啦
- 使用OpenCV和Python实现图像的颜色检测
- mybatis中的if-else使用及if嵌套使用