Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python中的真假电话号码_Python - Fatal编程技术网

Python中的真假电话号码

Python中的真假电话号码,python,Python,这是我的第一节编码课,我有点困惑 我想写一个程序,提示输入一个电话号码,并通过忽略任何标点符号来确定它是否是一个有效的10位数字号码。我必须编写一个函数,将电话号码字符串作为参数,如果有效,则返回True;如果无效,则返回False。每当我看到一个数字时,我还必须使用循环来迭代字符串和递增计数器 我不确定这是不是正确的,但这就是我到目前为止所做的。我不知道如何创建循环来迭代字符串以确定电话号码的真假 main(): phone_number= input("Please enter a

这是我的第一节编码课,我有点困惑

我想写一个程序,提示输入一个电话号码,并通过忽略任何标点符号来确定它是否是一个有效的10位数字号码。我必须编写一个函数,将电话号码字符串作为参数,如果有效,则返回True;如果无效,则返回False。每当我看到一个数字时,我还必须使用循环来迭代字符串和递增计数器

我不确定这是不是正确的,但这就是我到目前为止所做的。我不知道如何创建循环来迭代字符串以确定电话号码的真假

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

    def validNumber(phone_number):
        for i,c in enumerate(phone_number):
            if i in [3,7]:
                if c!= "-":
                   phone_number=input("Please inter a valid phone number:")
                   return False
            elif

用一步一步的方法来思考解决方案怎么样

  • 检查将数字分成三部分的“
    -
    ”的编号
  • 如果每个XXX具有适当的长度(3、3和4),则在XXX-XXX-XXXX处检查每个XXX(或XXXX)的长度
  • 检查每个XXX(或XXXX)是否为十进制
  • 代码可以如下所示:

    def validNumber(phone_number):
        p_num_list = phone_number.split('-') # get list of each XXX
    
        if len(p_num_list) is not 3: # if the number has 3 part
            return False
        else:
            if len(p_num_list[0]) is not 3: # Check length of each part
                return False
            if len(p_num_list[1]) is not 3:
                return False
            if len(p_num_list[2]) is not 4:
                    return False
            if p_num_list[0].isdecimal() and p_num_list[1].isdecimal() and p_num_list[2].isdecimal(): # check if each part is decimal
                return True
        return False
    
    if __name__ == '__main__':
        p_num = input("Enter the phone number : ")
        print(validNumber(p_num))
    

    您可以尝试以下方法:

    def valid_number(phone_number):
        try:
            number = [str(int(i)) for i in phone_number.split('-')]
        except:
            print('Error, only numbers allowed')
            number = ''
        if len(''.join(number)) == 10:
            print('This is a valid phone number')
            return True
        else:
            print('This is not a valid phone number')
            return False
    
    def main():
        phone_number = input('Enter number in format xxx-xxx-xxxx: ')
        valid_number(phone_number)
    
    if __name__ == '__main__':
        main()
    

    int()。您可能需要查看名为
    re
    的正则表达式包。例如
    r=re.compile('[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])
    然后检查如果r.match(电话号码)为None,您将使用
    根据您的要求,您可以执行类似
    的操作,如果c位于['0'、'1'、'2'、'3'、'4'、'5'、'6'、'7'、'8'、'0']:
    检查数字。的答案可能会有帮助,因此如果我将if c改为in。。。。如何向用户确定该数字是否有效?可以用更简单(或高质量)的代码替换,但我建议以“如何解决此问题?”或“如何逐步解决此问题”这样的想法开始代码。因此,我编写此代码是为了帮助您获得更有用的编码类。记住,好的代码来自好的想法。谢谢你为我把它分解。我开始理解代码是如何被分解成多个部分的。我仍然收到第七行代码中冒号的无效语法。有什么建议吗?@Sav没问题。但是首先,你能评论一下语法错误的内容吗?@Sav我也编辑了我的答案,因为它有错误的缩进。