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

解法 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)相关推荐

  1. python英文单词-python常用150个英文单词

    1.python 蟒蛇 2. downlaods 下载 3. install 安装 4. customize 自定义 5. path 环境变量:路径 6. optional 可选的 7. featur ...

  2. 编程之美-电话号码对应英文单词方法整理

    [试题描述] 问题1的方法一:直接循环法 假设电话号码只有3位,那么可能会有人很快写出3个for循环,如下: 对以上程序进行简单修改,增强扩展性: 问题1的方法二:递归的解法 ------------ ...

  3. 电话号码对应英文单词

    原文链接:http://www.cnblogs.com/yanglf/archive/2012/11/16/2773492.html #include<iostream> #define ...

  4. 电话号码与英文单词对应

    问题: 电话的号码盘一般可以用于输入字母.如用2可以输入A.B.C,用3可以输入D.E.F等. 如:对于号码5869872,可以依次输入其代表的所有字母组合.如:JTMWTPA.JTMWTPB- 1. ...

  5. 电话号码的字母组合Python解法

    给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合.答案可以按 任意顺序 返回. 给出数字到字母的映射如下(与电话按键相同).注意 1 不对应任何字母. 来源:力扣(LeetCode) ...

  6. python基础练习(100)--练习题

    一.python基础练习(100) 1.1 基础(格式或语法) """只记录复杂化的题目和思路""" 003.比较和赋值 --执行如下代码会 ...

  7. Python基础知识点总结

    Python基础知识与常用数据类型 一.Python概述: 1.1.Python的特点: 1.Python是一门面向对象的语言,在Python中一切皆对象 2.Python是一门解释性语言 3.Pyt ...

  8. leetcode哈希表(python与c++)

    1.整数转罗马数字 python: class Solution:def intToRoman(self, num: int) -> str:dict_ = {1000:'M', 900:'CM ...

  9. python有哪些知识_Python有哪些基础知识

    Python基础知识:1.引用和对象:2.可变数据类型和不可变数据类型:3.引用传递和值传递:4.深拷贝和浅拷贝:5.基本数据类型:6.关键字.标识符和内置函数:7.算术.赋值运算符等等. 相关学习推 ...

最新文章

  1. java解析各种文档格式_java读取各类型的文件
  2. 模板页显示Excel数据Gridview增删改查
  3. 向上取整的方法_瓷砖测量的方法有哪些?瓷砖尺寸一般是多少?
  4. 北京招聘 | 澜舟科技招聘NLP工程师、NLP研究员、产品项目经理
  5. 文献记录(part82)--基于监督联合去噪模型的社交网络链接预测
  6. xcode 怎么调用midi开发录音_如何组建个人录音工作室
  7. [LeetCode][Python][C#]刷题记录 26. 删除排序数组中的重复项
  8. mysql8.0 tar安装_CentOS7安装MySQL8.0 tar包
  9. 互联网晚报 | 3月3日 星期四 |​ 苹果将于北京时间3月9日凌晨2点举办春季发布会;vivo子品牌NEX被砍掉...
  10. Java NIO操作Socket的用法
  11. Flutter基础—常用控件之文本
  12. Boot.ini无解
  13. lua能在stm32arm上运行吗_IOS App能在Mac运行!苹果这黑科技能撼动微软吗?
  14. 数据分享 — 国内外常用夜间灯光数据产品介绍
  15. 免费的中文语音数据集汇总列表
  16. Xcode使用githut做代码版本管理
  17. 计算机的组策略在哪,组策略命令,教您电脑组策略怎么打开
  18. tp点一共有多少_dnf人家为什么比你多好几点tp点?原因终于找到啦
  19. 使用OpenCV和Python实现图像的颜色检测
  20. mybatis中的if-else使用及if嵌套使用

热门文章

  1. 有符号数和无符号数区别
  2. Mac系统制作U盘安装盘,不能识别U盘的情况
  3. 04-再探JavaScript
  4. IntelliJ IDEA for Mac 2018.1.2 智能Java IDE开发工具 破解版下载
  5. 如何做好一名计算机网络管理员
  6. Java虚拟机内存的堆区(heap),栈区(stack)和静态区(static/method)
  7. Goland 下载 go 包
  8. HTML5七夕情人节表白网页制作——蓝色梦幻海洋3D相册—— HTML+CSS+JavaScript
  9. 多协议直播发布工具和接收工具
  10. 手机号码为344格式