2017-10-21 55 views
0

我有这样的程序:我不能让程序继续循环,如果输入了无效的输入

number = int(input('Contact Number:')) 
def validatePhoneNumber(number): 
    count = 0 
    while True: 
     while number > 0: 
      number = number//10 
      count = count+1 
     if (count == 10) : 
      break 

     elif (count > 10) : 
      print('Invalid phone number') 
      return -1 

     elif (count < 10): 
      print('Invalid phone number') 
      return -1 

validatePhoneNumber(number) 

会出现这样的:

Contact Number:1234 
Invalid phone number 
>>> 

我希望它继续循环,直到输入一个10位数字,然后停止。

Contact Number:1234567890 
>>> 

条件是如果数字缺失或无效,则返回-1。 我错过了程序内的东西吗? 感谢

+0

这是一个无限循环的可怕用法。只有在输入字符时才能检查长度? – the4kman

+1

为什么你把它当作int而不是字符串呢?如果'0000000001'是一个有效的电话号码,你会摆脱9位数字......为什么不是这样的:'如果number.isdigit()和len(数字)== 10:break'否则,继续询问 –

+0

我认为你想要做的是把最后一行和第一行放在do while循环中,所以如果输入错误,你会再次调用函数 – Yonlif

回答

0

这个怎么样:

number = input('Contact Number:') # it's a str now, so we can use len(number) 
def validatePhoneNumber(number): 
    while len(number) != 10: 
     number = input("Please enter a 10-digit contact number: ") 
    return number 

number = validatePhoneNumber(number) 

这是一个更Python的方式,因此更容易理解和调试。正如其他评论指出的那样,领先的0现在还没有被剥离。