【发布时间】:2018-08-31 05:21:43
【问题描述】:
试图让这个程序将字母转换为数字,以便可以输入带有单词的电话号码并输出数字版本。 (1800GOTJUNK = 18004685865)不确定我哪里出错了,但每个输出只给出最后一个字母的内容,并为所有数字重复它的数字(1800adgjmptw = 18009999999)。任何帮助将不胜感激,谢谢。
def transNum(string):
number = 1
for ch in string:
if ch.lower() in "abc":
number = 2
elif ch.lower() in "def":
number = 3
elif ch.lower() in "ghi":
number = 4
elif ch.lower() in "jkl":
number = 5
elif ch.lower() in "mno":
number = 6
elif ch.lower() in "pqrs":
number = 7
elif ch.lower() in "tuv":
number = 8
elif ch.lower() in "wxyz":
number = 9
return number
def translate(phone):
newNum = ""
for ch in phone:
if ch 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"]:
newNum = newNum + str(transNum(phone))
else:
newNum = newNum + ch
return newNum
def main():
phone = input("enter a phone number")
noLetters = translate(phone)
print("The number you entered: ", phone)
print("Translates to: ", noLetters)
main()
【问题讨论】:
-
可能你需要在你的 transNum 方法上做
ch.lower() in ['a', 'b', 'c'] -
将
newNum = newNum + str(transNum(phone))更改为newNum = newNum + str(transNum(ch)) -
最简单的方法:
noletters = phone.translate(str.maketrans( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ", "2223334445556667777888999922233344455566677778889999"))
标签: python