我一直只得到打印的翻译数字的第一个字符
phoneNumLetter = str(input("Please enter a phone number that contains letters: "))
def translate(char):
if char.upper() == "A" or char.upper() == "B" or char.upper() == "C":
number = 2
elif char.upper() == "D" or char.upper() == "E" or char.upper() == "F":
number = 3
elif char.upper() == "G" or char.upper() == "H" or char.upper() == "I":
number = 4
elif char.upper() == "J" or char.upper() == "K" or char.upper() == "L":
number = 5
elif char.upper() == "M" or char.upper() == "N" or char.upper() == "O":
number = 6
elif char.upper() == "P" or char.upper() == "Q" or char.upper() == "R" or char.upper() == "S":
number = 7
elif char.upper() == "T" or char.upper() == "U" or char.upper() == "V":
number = 8
elif char.upper() == "W" or char.upper() == "X" or char.upper() == "Y" or char.upper() == "Z":
number = 9
return number
def translateNumber(phoneNumLetter):
for char in phoneNumLetter:
if char in['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']:
result = translate(char)
return result
else:
return char
def main():
print("Your original phone number was: ", phoneNumLetter)
print("Your translated phone number is: ", translateNumber(phoneNumLetter))
main()
请帮我弄清楚怎么回事。关键是要把1-800-FLOWERS之类的东西翻译成1-800-3569377。因为某些原因,如果我输入,我得到的唯一返回值是“1”
在Python2.7中,一个替代的解决方案需要更少的代码,如下所示。在
但是,string模块的translate方法在python2.7中被弃用,在python3中被删除,因此这在python3中不起作用。在
虽然这似乎在所有角色身上循环
实际上,它在处理第一个字符后返回。在
您可能希望生成一个字符串:
^{pr2}$你一翻译就返回这个角色。你的代码打印原始电话号码。然后,它调用translateNumber。translateNumber遍历数字,直到找到一个字母字符。当它这样做时,它将它转换成一个数字并返回它。“return”充当中断-循环结束。在
我建议从char=字符上部(). 这样就不必将所有字符单独转换为大写。在
这是一个稍微干净一点的版本。这将添加字母作为数字,数字作为数字。它将忽略任何不是数字或字母的字符。您可以添加几行,以确保电话号码大小正确,并插入正确的电话号码标点符号。在
相关问题 更多 >
编程相关推荐