我正在测试用户输入的长度是10,只包含数字。目前,我的代码是:
while True:
number = input("Enter number: ")
try:
if len(number) != 10:
print ("Enter 10 digits\n")
continue
except ValueError:
print ("Enter only numbers\n")
continue
else:
break
程序将询问用户输入,然后测试它是10长度并且只包含整数。 目前,用户输入被读取为字符串,因此如果它以'0'开头,那么如果你知道我的意思,那么它将包含在len()中。例如,如果我输入'0123456789',则会看到长度为10而不是9,因为它以'0'开头。 此外,我想确保如果用户输入10个字母,这将被拒绝,因为只允许使用数字。
非常感谢任何帮助。 谢谢。
答案 0 :(得分:0)
在您的代码中没有任何一点,您实际上检查输入是否为整数.. 你可以这样做:
while True:
number = input("Enter number: ")
if not number.isdigit(): # check if a string contains a number with .isdigit()
print ("Enter only numbers\n")
continue
elif len(number) != 10:
print ("Enter 10 digits\n")
continue
else:
break
有关str.isdigit()
的信息:
Type: method_descriptor
String Form:<method 'isdigit' of 'str' objects>
Namespace: Python builtin
Docstring:
S.isdigit() -> bool
Return True if all characters in S are digits
and there is at least one character in S, False otherwise.
答案 1 :(得分:0)
while True:
number = input("Enter number: ")
try:
number = int(number)
except ValueError:
print ("Enter only numbers")
else:
if 10 > number//10**9 > 0 :
print ("Enter 10 digits")
continue
else:
break
答案 2 :(得分:0)
您可以在转换为数字(整数)时检查错误
try:
if len(number) != 10 and int(number):
print ("Your number is good!")
break
else :
print("Your number isn't good!")
continue
except ValueError:
print('only digit please')
continue
请注意len(数字)中的缺陷是第9个数字可能为0。
要确保这是一个有效的数字beetwen 1000000000和999999999,您可以执行以下操作:
import math
while True:
try:
if math.floor(math.log10(int(number)))+1 == 10:
print ("Your number is good!")
break
else :
print("Your number isn't good!")
continue
except ValueError:
print('only digit please')
continue