2017-10-21 56 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現在還沒有被剝離。