我想更改要求輸入數字以僅允許三位數字的要求。將用戶輸入限制爲3個整數
shootnum = None
while True:
try:
shootnum = int(input("Enter today's shoot number > "))
break
except ValueError:
print("Invalid number, please try again.")
我需要改變以適應ValueError?
我想更改要求輸入數字以僅允許三位數字的要求。將用戶輸入限制爲3個整數
shootnum = None
while True:
try:
shootnum = int(input("Enter today's shoot number > "))
break
except ValueError:
print("Invalid number, please try again.")
我需要改變以適應ValueError?
你爲什麼不只是簡單的輸入限制爲3個位數:
shootnum = int(input("Enter today's shoot number > ")[:3])
print(shootnum)
如果您與0
開頭的數字有問題,那麼你可以做以下代替:
shootnum = (int(input("Enter today's shoot number > ")))
shootnum = (str(shootnum))
shootnum = int(shootnum[:3])
print((shootnum))
只是說:
if x <= 999 and x >= 100:
print("Yes")
else:
print("No.")
或者更慣用的'if 100 <= x <= 999:' –
1個正則表達式(由馬騰法布爾的啓發)
import re
while True:
try:
shoot = raw_input("Enter today's shoot number > ") # I use python 2.7
shootnum = int(shoot)
if not re.match(r'\d{3}$', shoot):
raise ValueError # can be caught by except
print shootnum
except ValueError:
print("Invalid number, please try again.")
2只檢查拍攝是否是一個三位數
while True:
try:
shoot = raw_input("Enter today's shoot number > ") # I use python 2.7
shootnum = int(shoot)
if len(shoot) != 3 or shoot[0] == '-':
raise ValueError # can be caught by except
print shootnum
except ValueError:
print("Invalid number, please try again.")
結果如下
Enter today's shoot number > qwer
Invalid number, please try again.
Enter today's shoot number > -12
Invalid number, please try again.
Enter today's shoot number > 123
123
Enter today's shoot number > 1222
Invalid number, please try again.
Enter today's shoot number > 012
12
Enter today's shoot number > 0122
Invalid number, please try again.
Enter today's shoot number > 0
Invalid number, please try again.
Enter today's shoot number > 00
Invalid number, please try again.
Enter today's shoot number > 000
0
Enter today's shoot number > 0000
Invalid number, please try again.
如果我想允許數字如001一直到999? –
@JonathanPetts所以三位數字可以表示數字,如001? – gaoxinge
只是檢查長度
user_input = input()
if len(user_input.strip()) != 3:
raise Exception('3 digits allowed')
你仍然需要檢查輸入的是一個數字
爲什麼不提高'ValueError',所以程序只是繼續 –
只需檢查'如果100 <= shootnum <= 999' –
如果整數不符合您的要求,則引發'ValueError'! –
與正則表達式'^ \ d {3} $'進行比較,如果失敗,則引發'ValueError'(正則表達式可能會有所改進) –