Python 涉及将字符串中的字符转换为数字的赋值

Python assignmen intvolving the conversion of the charaters within a string into numbers

下午好, 我在尝试 运行 这批涉及将字符串中的单个字母字符转换为数字的代码时遇到了一些问题。字母表中的特定字母根据顺序分为不同的组,如代码中所示。

这是我目前的情况:

def main():

    gSNumberConversion()

def gSNumberConversion():

   phoneNum = input('Please Enter the number in the format of XXX-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)

main()

代码应该 运行 通过 phone 数字,其中隐藏了一个小短语,例如 "555-GET-FOOD" 和 return 是它的等效数值。当输入 运行 通过时,程序不会 return 数字替换数字

的版本

第一个错误是您在内部循环中打印 phoneNum,而您将转换后的数字分配给 char 变量。

其次,如果要转换完整输入,phoneNum[1:2] 是不正确的。

这是更新后的代码 -

def main():

    gSNumberConversion()

def gSNumberConversion():

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

   phoneNum = phoneNum.split('-')
   print(phoneNum)

   for var in phoneNum: # mistake 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(char) ## mistake 1

main()

字符串是不可变的,您必须创建一个新变量并将结果添加到那里。

newPhoneNum="" #new empty variable to add the result to
var = phoneNum[1:2] #extract the part of the phone that you will use


for index in len(var)):
        if var[index] == 'A' or var[index] == 'B' or var[index] == 'C':
            newPhoneNum+='2'
        .
        .  
        etc 
        print(phoneNum[0]+newPhoneNum)

您可以预先创建字典

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

# take input
input_str = input()

# initialise result string
result = ''

# loop over input
for val in input_str:
    if val in char_dict:
        # take the number equivalent from dict
        result = result + str ( char_dict.get(val) )
    # other wise take the number or -
    else:
        result += result + val

print(result)

希望对您有所帮助。

你的打印不应该放在循环中,我使用列表理解来减少程序中的循环。

def main():
    gSNumberConversion()

def gSNumberConversion():

  phoneNum_inputted = input('Please Enter the number in the format of XXX-XXX-XXXX\n:')

  phoneNum = [y for x in phoneNum_inputted.split('-') for y in x]

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

  print(real_num)

main()

输出:

Python 3.6.1 (default, Dec 2015, 13:05:11)
[GCC 4.8.2] on linux
Please Enter the number in the format of XXX-XXX-XXXX
:555-GET-FOOD
555