python - Python将电话字母翻译成数字问题
问题描述
我知道这个网站之前已经问过这个问题,但我无法理解给出的答案(我还是很新),所以我要再试一次。我的任务是编写代码,该代码采用 10 位电话号码 (XXX-XXX-XXXX) 并将任何字母(即 800-FLO-WERS)转换为数字。我已经为此绞尽脑汁,并且真的可以使用一些帮助/解释。在我正在上课的课程中(使用出色的“从 Python 开始,第 4 版,Tony Gaddis),我不能使用我们尚未涵盖的概念(如字典),但我可以使用列表/元组。我的代码我想出了以下几点:
def main():
try:
user_number = str(input('Enter a phone number (XXX-XXX-XXXX): ')).upper()
converted_number = check_number(user_number)
print('The phone number is:',converted_number
except Exception as err:
print(err)
def check_number(user_number):
try:
for char in user_number:
if char.isalpha():
result = convert_to_num(char)
return result
else:
return char
return converted_number
except Exception as err:
print(err)
def convert_to_num(char):
if char in ['A','B','C']:
char = 2
elif char in ['D','E','F']:
char = 3
elif char in ['G','H','I']:
char = 4
elif char in ['J','K','L']:
char = 5
elif char in ['M','N','O']:
char = 6
elif char in ['P','Q','R','S']:
char = 7
elif char in ['T','U','V']:
char = 8
elif char in ['W','X','Y','Z']:
char = 9
return char
main()
显然,我不确定如何存储转换后的字母到数字(考虑通过索引来完成,但也不能完全做到这一点)。我不是在寻找任何人为我做我的工作,但我做错了什么的详细解释会很可爱。
解决方案
的目的return
是返回调用它的函数。这里因为return
在循环内。它将在第一次迭代中退出该函数。
for char in user_number:
if char.isalpha():
result = convert_to_num(char)
return result
else:
return char
return converted_number
只需使用列表来存储转换后的值,然后使用该join()
方法在循环后返回它们。
def main():
try:
user_number = str(input('Enter a phone number (XXX-XXX-XXXX): ')).upper()
converted_number = check_number(user_number)
print('The phone number is:',converted_number)
except Exception as err:
print(err)
def check_number(user_number):
try:
r = []
for char in user_number:
if char.isalpha():
result = convert_to_num(char)
r.append(str(result))
else:
r.append(char)
return "".join(r)
except Exception as err:
print(err)
def convert_to_num(char):
if char in ['A','B','C']:
char = 2
elif char in ['D','E','F']:
char = 3
elif char in ['G','H','I']:
char = 4
elif char in ['J','K','L']:
char = 5
elif char in ['M','N','O']:
char = 6
elif char in ['P','Q','R','S']:
char = 7
elif char in ['T','U','V']:
char = 8
elif char in ['W','X','Y','Z']:
char = 9
return char
main()
如果你不能使用join()
def check_number(user_number):
try:
r = ''
for char in user_number:
if char.isalpha():
result = convert_to_num(char)
r += str(result)
else:
r += char
return r
except Exception as err:
print(err)
推荐阅读
- jms - jms queue receiver which always run in backgrond
- javascript - 将 callack 的值绑定到实例 nodejs 的属性
- graphql - 如何在 Gatsby 中对 GraphQL 查询进行单元测试
- python - 调用构造函数时在python中解析多级和多级继承的方法顺序
- c# - 租户会话在 IRealTimeNotifier 中丢失
- joomla - Joomla 菜单上没有显示一些常见的 Fontawesome 图标
- python - 试图编写一个支持向量机,我得到了这个错误
- google-photos - 我想从 Google Photos API 获取确切类别的信息,例如 PEOPLE 类别中的每个人
- php - 在 Laravel 5.6 中传递的 Vue 道具
- scrapy - 在 Scrapy Pipeline 中,return super().process_item 是什么意思?