-1

アルファベットの電話番号の翻訳者

多くの企業は 555-GET-FOOD のような電話番号を使用しているため、顧客が覚えやすい番号になっています。標準の電話では、アルファベットは次のように数字にマッピングされます。

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

ユーザーに 10 文字の電話番号を XXX-XXX-XXXX の形式で入力するよう求めるプログラムを作成します。アプリケーションは、元の電話番号に表示されていたアルファベット文字を対応する数値に変換して、電話番号を表示する必要があります。たとえば、ユーザーが 555-GET-FOOD と入力すると、アプリケーションは 555-438-3663 を表示する必要があります。

これは私の仕事です:

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)

実行すると、555-GET-FOOD などの文字列を入力するよう求められます。次に、エラー メッセージが表示されます。

NameError: 名前 'GET' が定義されていません

どうすればこれを修正できますか?

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。この問題に対処する 1 つの方法は、新しい変数を作成することです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ますが、これは必須ではありませんが、多くの人がこの規則に従います。
  • さらに、個人的な好みの問題として、略語を使用する代わりに単語を綴ります。そのため、私は、またはphoneNumberよりも好みます。もちろん、例外は常にあります。phoneNumphone_numberphone_num
于 2013-10-04T18:17:16.570 に答える