3

誰かが文字列を数値に変換する方法を理解するのを手伝ってくれませんか? ユーザーが「1-800-Flowers」と入力すると、Pythonに「1-800-3569377」と表示させたい

私がこれまでに持っているのは次のとおりです。

userInput = input("Please enter a phone number (e.g. 1-800-Flowers): ")
phoneNum = userInput.replace('-','')

それは本当に私が持っているすべてです。どんな助けでも大歓迎です

4

3 に答える 3

3

使用str.translate:

>>> pad = ['qz', 'abc', 'def', 'ghi', 'jkl', 'mno', 'prs', 'tuv', 'wxy']
>>> letter_to_numbers = {
...     ord(ch): ord(str(i))
...     for i, chs in enumerate(pad, 1)
...     for ch in chs
... } # Map ord('f') to ord('3'), ...
>>> "1-800-Flowers".lower().translate(letter_to_numbers)
'1-800-3569377'
于 2013-10-30T04:59:00.437 に答える
1

ユーザーが入力した文字列をループする for ループを作成し、すべての文字または数字を ord() 関数を使用して ASCII 値に変換します。

other=[]
userInput = input("Please enter a phone number (e.g. 1-800-Flowers): ")
for i in userInput:
 other+=[ord(i)]

print(other)

あなたが言っていたことは私には意味がありませんでした.ASCIIに変換した場合とは一致しないため、ASCIIコンバータサイトで自分で確認することも"1-800-Flowers"できます. ただし、私が言っていることが間違っている場合は修正してください。"1-800-3569377"

于 2013-10-30T12:59:57.033 に答える
0

より簡単な翻訳でそれを行う方法は次のとおりです。

letters       = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
letter_digits = "22233344455566677778889999"
letter_to_digit = string.maketrans(letters+letters.lower(),letter_digits+letter_digits)

# convert letters to digits
new_phone = raw_phone.translate(letter_to_digit)
于 2015-12-11T04:36:00.063 に答える