繁体   English   中英

蟒蛇。 弄清楚如何输入正确的电话号码

[英]Python. figuring out how to input a correct phone number

所以我是python的新手,我正在编写一个程序,接受格式为XXX-XXX-XXXX的电话号码,并将任何字母更改为相应的号码。 我需要检查条目并确保其格式正确,如果不是,则允许重新输入。 我很难让它提示我输入一个新的号码,即使有时它有效,它仍会翻译原始的错误的电话号码。

到目前为止这是我的代码:

def main():
    phone_number= input('Please enter a phone number in the format XXX-XXX-XXXX: ')
    validNumber(phone_number)
    translateNumber(phone_number)

def validNumber(phone_number):
    for i,c in enumerate(phone_number):
        if i in [3,7]:
            if c != '-':
                phone_number=input('Please enter a valid phone number: ')
            return False
        elif not c.isalnum():
            phone_number=input('Please enter a valid phone number: ')
        return False
    return True

def translateNumber(phone_number):
    s=""
    for char in phone_number:
        if char is '1':
            x1='1'
            s= s + x1
       elif char is '-':
            x2='-'
            s= s + x2
       elif char in 'ABCabc':
           x3='2'
           s= s + x3

.....等这部分并不重要

您可能希望使用while循环强制用户输入有效数字。 就像是:

def main():
    phone_number = ""
    while not validNumber(phone_number):
        phone_number = input('Please enter a phone number in the format XXX-XXX-XXXX: ')
    translateNumber(phone_number)

(如果您使用的是Python 2.7,则可能需要使用raw_input替换input ,)

这是一个完整的,有效的解决方案。

import re
from string import maketrans

phone_match = re.compile("^(\w{3}-\w{3}-\w{4})$")


def validPhone(number):
    match = phone_match.match(number)
    if match:
        return match.groups(0)[0]
    return None

phone_number = ''
while not validPhone(phone_number):
    phone_number = raw_input("Give me your digits!: ")

phone_in = "abcdefghijklmnopqrstuvwxyz"
phone_out = "22233344455566677778889999"
transtab = maketrans(phone_in, phone_out)

print phone_number.lower().translate(transtab)

例子:

Give me your digits!: 949-POO-PTOO
949-766-7866

Give me your digits!: 555-HOT-KARL
555-468-5275

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM