-1

Alphabetic Telephone Number Translator

Many companies use telephone numbers like 555-GET-FOOD so the number is easier for their customers to remember. On a standard telephone, the alphabetic letters are mapped to numbers in the following fashion:

A, B, and C  2
D, E, and F  3
G, H, and I  4
J, K, and L  5
M, N, and O  6
P, Q, R, and S  7
T, U, and V  8
W, X, Y, and Z  9

Write a program that asks the user to enter a 10-character telephone number in the format XXX-XXX-XXXX. The application should display the telephone number with any alphabetic characters that appeared in the original translated to their numeric equivalent. For example, if the user enters 555-GET-FOOD the application should display 555-438-3663.

This is my work:

phoneNum = input('Enter the number in the format of 555-XXX-XXXX\n')

phoneNum = phoneNum.split('-')

for var in phoneNum[1:2]:
    for char in var:
        if char == 'A' or char == 'B' or char == 'C':
            char = '2'
        elif char == 'D' or char == 'E' or char == 'F':
            char = '3'
        elif char == 'G' or char == 'H' or char == 'I':
            char = '4'
        elif char == 'J' or char == 'K' or char == 'L':
            char = '5'
        elif char == 'M' or char == 'N' or char == 'O':
            char = '6'
        elif char == 'P' or char == 'Q' or char == 'R' or char == 'S':
            char = '7'
        elif char == 'T' or char == 'U' or char == 'V':
            char = '8'
        elif char == 'W' or char == 'X' or char == 'Y' or char == 'Z':
            char = '9'

print(phoneNum)

Run it, you will be prompted to enter a string, say, 555-GET-FOOD. Then you will receive an error message:

NameError: name 'GET' is not defined

How can I fix this?

4

2 回答 2

3

您说您使用的是 Python 3,但您确定吗?如果您使用的是 Python 2,那么您必须使用raw_input而不是input. 在 Python 2 中,input尝试eval得到结果字符串,所以它试图做 555 减去一个名为的变量GET减去一个名为FOOD.

于 2013-10-04T17:58:29.413 回答
0

在您的代码中,char只是变量中一个字符的副本phoneNum。当你改变时char,你并没有改变phoneNum。处理此问题的一种方法是创建一个新变量newPhoneNumber

phoneNum = input('Enter the number in the format of 555-XXX-XXXX\n')
print(phoneNum)
newPhoneNumber = ''
for char in phoneNum:
    if char == 'A' or char == 'B' or char == 'C':
        char = '2'
    elif char == 'D' or char == 'E' or char == 'F':
        char = '3'
    elif char == 'G' or char == 'H' or char == 'I':
        char = '4'
    elif char == 'J' or char == 'K' or char == 'L':
        char = '5'
    elif char == 'M' or char == 'N' or char == 'O':
        char = '6'
    elif char == 'P' or char == 'Q' or char == 'R' or char == 'S':
        char = '7'
    elif char == 'T' or char == 'U' or char == 'V':
        char = '8'
    elif char == 'W' or char == 'X' or char == 'Y' or char == 'Z':
        char = '9'
    newPhoneNumber = newPhoneNumber + char

print(newPhoneNumber)

讨论

  • 我认为这是一个家庭作业问题,因此我避免使用高级构造,例如列表理解或集合。
  • 关于命名约定的一句话。大多数 Python 脚本使用小写和下划线,例如phone_number--this 不是必需的,但很多人都遵循这个约定。
  • 此外,出于个人喜好,我拼写单词而不是使用缩写。因此,我更喜欢phoneNumberoverphoneNumphone_numberover phone_num。当然,总有例外。
于 2013-10-04T18:17:16.570 回答