【每日一题0728】有效电话号码

:woman_mage:请编写一个接受字符串的python函数,如果它是以电话号码的形式出现,则返回 true。假设任何位置上的0-9 的任何整数都将产生一个有效的电话号码。
只需要注意下面的格式也算true:(123) 456-7890 (别忘了括号后面的空格)。

示例:
“(123) 456-7890” => true
“(1111)555 2345” => false
“(098) 123 4567” => false

题目难度:简单
题目来源:codewars

def valid_phone_number(phone_number:str):
    pass
    
assert valid_phone_number("(010) 456-7890") is True
assert valid_phone_number("(1111)555 2345") is False
assert valid_phone_number("(755)456-7890abc") is False
assert valid_phone_number("(021) 185-0594") is True

没发现啥规律,穷举法,蹲一个解法

def valid_phone_number(phone_number):
    s = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
    if " " not in phone_number or "-" not in phone_number:
        return False
    res = phone_number.split(" ")
    if len(res) > 1:
        if res[0].startswith("(") and res[0].endswith(")"):
            for i in res[0][1:len(res[0])-1]:
                if i not in s:
                    return False
        else:
            return False
        res1 = res[1].split("-")
        for i in res1:
            for j in i:
                if j not in s:
                    return False
    return True
1 个赞

没看懂题目,是只有(xxx) xxx-xxxx这种形式的才算有效电话号码吗?x为0-9?

按我理解的题意 ,很傻的方法

def valid_phone_number(phone_number:str):
    number=['0','1','2','3','4','5','6','7','8','9']
    if ' 'and '-' not in phone_number:
        return False
    num_list=phone_number.split(' ')
    for i in range(len(num_list[0])):
        if i==0:
            if num_list[0][i]!='(':
                return False
        elif i==len(num_list[0])-1:
            if num_list[0][i]!=')':
                return False
        else:
            if num_list[0][i] not in number:
                return False
    if num_list[1][3]!='-':
        return False
    num_list2=num_list[1].split('-')
    for i in num_list2:
        for j in i:
            if j not in number:
                return False
    return  True

不知道考察的是什么,我用了正则表达式

import re
def valid_phone_number(phone_number: str):
    matchobject = re.match(r'^\(\d{3}\)\s\d{3}\-\d{4}$',phone_number, flags = 0 )
    if matchobject == None:
        return False
    else:
        return True
assert valid_phone_number("(010) 456-7890") is True
assert valid_phone_number("(1111)555 2345") is False
assert valid_phone_number("(755)456-7890abc") is False
assert valid_phone_number("(021) 185-0594") is True
1 个赞