2016-02-18 92 views
0

我想寫一個只接受來自用戶的4位數輸入的程序。 問題是我想讓程序接受一個像0007這樣的數字,但不是像7這樣的 數字(因爲它不是4位數字)我怎樣才能解決這個問題?如何使用4位數字驗證輸入

這是從來就目前爲止寫的代碼...

while True: 
try: 
    number = int( input("type in a number with four digits: ") ) 
except ValueError: 
    print("sorry, i did not understand that! ") 
if number > 9999: 
    print("The number is to big") 
elif number < 0: 
    print("No negative numbers please!") 
else: 
    break 

print("Good! The number you wrote was", number) 
+1

注意你讓一個整數之前,用戶的輸入是一個字符串... – jonrsharpe

回答

2

旋轉使用者的輸入轉換成整數之前,你可以檢查,看看他們的輸入中有4位使用「len個」功能

len("1234") //returns 4 

然而,使用「廉政」功能時,蟒蛇變成「0007」成簡單7,解決這個問題,你可以自己號碼存儲在一個列表,其中每個列表元素是一個數字。

1

如果它只是一個用於print目的格式的事,修改print聲明:

print("Good! The number you wrote was {:04d}", number) 

如果你真的要存儲前導零,像對待一個字符串的數量。這可能不是最完美的解決方案,但它應該指向你在正確的方向:

while True: 
try: 
    number = int(input("Type in a number with four digits: ")) 
except ValueError: 
    print("sorry, i did not understand that! ") 
if number > 9999: 
    print("The number is to big") 
elif number < 0: 
    print("No negative numbers please!") 
else: 
    break 

# determine number of leading zeros 
length = len(str(number)) 
zeros = 0 
if length == 1: 
    zeros = 3 
elif length == 2: 
    zeros = 2 
elif length == 3: 
    zeros = 1 

# add leading zeros to final number 
final_number = "" 
for i in range(zeros): 
    final_number += '0' 

# add user-provided number to end of string 
final_number += str(number) 

print("Good! The number you wrote was", final_number)