Python字符串逻辑E

2024-09-29 20:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在创建一个程序,显示电话号码与任何字母字符,出现在原来的翻译成他们的等效。例如,如果我要输入字符串“521-BBB-BBBB”,我应该根据我的代码得到“521222222”。相反,我从IDLE得到了“222222925”。我不明白为什么节目里显示的是这个而不是我要找的那个。“2”的数字是正确的,但我不明白“925”是从哪里来的。你知道吗

代码如下:

def charToNum(num):
    if num == 'A' or num == 'B' or num == 'C' or num == '2':
        return '2'
    elif num == 'D' or num == 'E' or num == 'F' or num == '3':
        return '3'
    elif num == 'G' or num == 'H' or num == 'I' or num == '4':
        return '4'
    elif num == 'J' or num == 'K' or num == 'L' or num == '5':
        return '5'
    elif num == 'M' or num == 'N' or num == 'O' or num == '6':
        return '6'
    elif num == 'P' or num == 'Q' or num == 'R' or num == 'S' or num == '7':
        return '7'
    elif num == 'T' or num == 'U' or num == 'V' or num == '8':
        return '8'
    else:
        return '9'

def AlphaToTel(telNum): newTelNum = telNum[0:3] + telNum[4:7] + telNum[8:12] phoneNum = '' for char in newTelNum: phoneNum = charToNum(char) + phoneNum

print(phoneNum)

AlphaToTel(“521-BBB-BBBB”)


Tags: or代码程序returndefnumbbbelif
3条回答
import re


def charToNum(num):
    if num in ['1', '0']:
        return num
    elif num in ['A', 'B', 'C', '2']:
        return '2'
    elif num in ['D', 'E', 'F', '3']:
        return '3'
    elif num in ['G', 'H', 'I', '4']:
        return '4'
    elif num in ['J', 'K', 'L', '5']:
        return '5'
    elif num in ['M', 'N', 'O', '6']:
        return '6'
    elif num in ['P', 'Q', 'R', 'S', '7']:
        return '7'
    elif num in ['T', 'U', 'V', '8']:
        return '8'
    elif num in ['W', 'X', 'Y', 'Z', '9']:
        return '9'


def AlphaToTel(telNum):
    telNum = re.findall('(\w)', telNum)
    phoneNum = [charToNum(x) for x in telNum]
    print(''.join(phoneNum))


if __name__ == '__main__':
    AlphaToTel("521-BBB-BBBB")

首先将phoneNum = charToNum(char) + phoneNum更改为phoneNum += charToNum(char),然后在charToNum函数的顶部再添加一个if条件,以在num1时返回1。你知道吗

出现这个问题的原因是charToNum()函数是如何定义的(以及如何将结果添加到phoneNum)。你知道吗

首先,您没有考虑charToNum()中的数字1,因此您返回9以获得1。如果num1,您应该考虑这个问题并返回1。你知道吗

第二,添加phoneNum作为-

phoneNum = charToNum(char) + phoneNum

这会不断地将新字符添加到字符串的开头,因此您会得到相反的电话号码。如果希望输出类似-"5212222222"。您需要按正确的顺序添加(phoneNum + charToNum(char))或使用(+=)。示例-

phoneNum += charToNum(char)

相关问题 更多 >

    热门问题