2016-06-29 30 views
0

好吧,我真的很新編程。我的程序要求用戶輸入'3位數字'...並且我需要確定它的長度(確保它不少於3位數字),同時我測試以確保它是一個整數。這是我的:如何將輸入同時確定爲整數和長度?

while True: 
    try: 
     number = int(input("Please enter a (3 digit) number: ")) 
    except: 
     print('try again') 
    else: 
     break 

任何幫助表示讚賞! :)

+2

請問'012'count爲3位,或2?您總是可以將數字轉換回字符串並查看長度:'len(str(number))'。另外,你將不得不對'12.3'等情況執行額外的驗證('isdigit'在這裏很方便)。 – Bahrom

回答

0

input()回報你一個字符串。因此,您可以先檢查該號碼的長度,並且長度不是3,則可以再次詢問用戶。如果長度爲3,則可以使用該字符串作爲int()的數字。 len()爲您提供了字符串的長度。

while True: 
    num = input('Enter a 3 digit number.') 
    if len(num) != 3: 
     print('Try again') 
    else: 
     num = int(num) 
     break 
+0

這工作,非常感謝! – Kody

+0

另外,如果你想在Python 2.x中使用相同的東西,你應該使用'raw_input()'而不是'input()'。由於python不是向後兼容的,因此問題經常出現。如果有幫助,你也可以投票回答。 – GadaaDhaariGeek

1

你可以在你的try/except子句中嘗試這樣的事情。根據需要修改。

number_string = input("Please enter a (3 digit) number: ") 
number_int = int(number_string) 
number_length = len(number_string) 
if number_length == 3: 
    break 

你也可以使用一個assert引發異常,如果數的長​​度不3.

try: 
    assert number_length == 3 
except AssertionError: 
    print("Number Length not exactly 3") 
0

請一個變量輸入鑄造成一個int,以檢查它的長度面前:

my_input = input("Please enter a (3 digit) number: ") 
if len(my_input) != 3: 
    raise ValueError() 
number = int(my_input) 

注意except:孤單是一個bad practice。你應該針對你的例外。

0
while True: 
    inp = raw_input("Enter : ") 
    length = len(inp) 
    if(length!=3): 
     raise ValueError 
    num = int(inp) 

如果您使用Python 2.x請勿使用input。始終使用raw_input

如果您使用的是Python 3.x,那很好。

Read Here

0

這應做到:

while True: 
    try: 
     string = input("Please enter a (3 digit) number: ") 
     number = int(string) 
     if len(string) != 3 or any(not c.isdigit() for c in string): 
      raise ValueError() 
    except ValueError: 
     print('try again') 
    else: 
     break 
相關問題