我有我要验证的代码,但它不会输入if
语句:
while True:
try:
ISBN = int(input("Please enter a 10 digit number: "))
print("TT")
if len(ISBN)!= 10:
print("T")
print("That was an incorrect input.")
else:
# do code
except:
print("RRRRR")
print("That was an incorrect input.")
这是输入/输出:
Please enter a 10 digit number: 1234567898
TT
RRRRR
That was an incorrect input.
Please enter a 10 digit number:
答案 0 :(得分:3)
int
个对象没有长度:
>>> len(1234567890)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: object of type 'int' has no len()
因为您正在使用Pokemon异常处理程序(全部捕获它们),所以您也无法获得正确的错误消息。移除您的try:
/ except:
或至少将其缩小到您要忽略的一两种异常类型;对于int()
次转化,只能抓取 ValueError
。仅针对int()
电话,而不是其他所有电话:
while True:
try:
ISBN = int(input("Please enter a 10 digit number: "))
except ValueError:
print("That was an incorrect input.")
else:
# continue with ISBN being a valid integer
如果您想知道位数,请选择字符串版本的长度:
if len(str(isbn)) != 10:
或测试边界:
if not (10**10 > isbn >= 10**9):
用于验证10位数字:
>>> isbn = 1234567898
>>> len(str(isbn))
10
>>> (10**10 > isbn >= 10**9)
True
答案 1 :(得分:1)
您正在将ISBN
输入转换为int
,然后检查其长度。
将其更改为
ISBN = input("Please enter a 10 digit number: ")
并稍后在else
块中将其转换为整数值。
请注意,int
个对象没有长度,因此您的代码会直接转到except
块。
根据我的建议更改,您的代码将变为
while True:
try:
ISBN = input("Please enter a 10 digit number: ")
print(ISBN)
if len(ISBN)!= 10:
print("T")
print("That was an incorrect input.")
else:
ISBN = int(ISBN)
print(ISBN)
# do code
except:
print("RRRRR")
print("That was an incorrect input.")
但请注意,您正在捕获常规错误,最好抓住特定的ValueError
。