不做字符串操作

Not doing string operations

你好,我正在做家庭作业。 编写一个程序,要求用户输入 12 个字符的 telephone 号码,格式为:XXX-XXX-XXXX。可接受的字符 (X) 是 A-Z 和 a-z。您的程序应检查:

phone号码的长度是正确的。 破折号包含在内并且位于正确的位置。 字符串中非法字符中没有字符。

应用程序应显示 telephone 号码,并将原始号码中出现的任何字母字符转换为相应的数字。如果输入的字符串不完全正确,那么您应该打印一条错误消息。

我的代码如下

# asks the user to enter their phone number string
phoneNum = input("Input number: ")

# creates a new list to be appended with our future values
new_phone_num = []

# main operation to convert the letters to a 
# real phone number
for i in phoneNum:
    if i == 'A' or i == 'B' or i == 'C':
        i == '2'
    elif i == 'D' or i == 'E' or i == 'F':
        i = '3'
    elif i == 'G' or i == 'H' or i == 'I':
        i = '4'
    elif i == 'J' or i == 'K' or i == 'L':
        i = '5'
    elif i == 'M' or i == 'N' or i == 'O':
        i = '6'
    elif i == 'P' or i == 'Q' or i == 'R' or i == 'S':
        i = '7'
    elif i == 'T' or i == 'U' or i == 'V':
        i = '8'
    elif i == 'W' or i == 'X' or i == 'Y' or i == 'Z':
        i = '9'
    new_phone_num += i

# print statement to show the phone number
print('\nNew number: ', end='')

for r in new_phone_num:
    print(r,end='')

print()

我的问题是程序不会对字符串的第一部分进行操作。 例如

Input number: ABC-DEF-GHIJ

New number: ABC-333-4445

我不知道如何将字符串的第一部分更改为其数值。

您在 i == '2' 中的等号过多,导致比较而不是赋值。除此之外,您可以通过使用具有两个列表理解的字典来替换和使用字符串而不是新 phone 数字的列表来使您的生活更轻松:

# asks the user to enter their phone number string
phoneNum = input("Input number: ").upper() # in case the user enters lowercase letters

# creates a new list to be appended with our future values
new_phone_num = ""
sub_dict = {k: v for k, v in zip("ABCDEFGHIJKLMNOPQRSTUVXYZ", [str(n // 3) for n in range(6, 30)])}
# sub_dict will be {'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': '8', 'T': '8', 'U': '8', 'V': '9', 'X': '9', 'Y': '9'}

# main operation to convert the letters to a 
# real phone number
for i in phoneNum:
    new_phone_number += sub_dict[i]

# print statement to show the phone number
print('New number: %' % new_phone_number)

的扩展等价物
sub_dict = {k: v for k, v in zip("ABCDEFGHIJKLMNOPQRSTUVXYZ", [str(n // 3) for n in range(6, 30)])}

会是

numbers = []
for n in range(6, 30):
    numbers.append(n // 3)
sub_dict = {}
for key, value in zip("ABCDEFGHIJKLMNOPQRSTUVXYZ", numbers):
    sub_dict[key] = value