如何同时确定输入为整数和长度?

时间:2016-06-29 04:46:30

标签: python loops integer

好的,所以我真的很喜欢编程。我的程序要求用户输入一个'3位数字'......我需要在测试的同时确定数字的长度(确保它不小于3位数),以确保它是一个整数。这就是我所拥有的:

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

任何帮助表示赞赏! :)

5 个答案:

答案 0 :(得分: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

如果数字长度不是3,您还可以使用assert引发异常。

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

答案 1 :(得分: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

答案 2 :(得分: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。你应该以你的例外为目标。

答案 3 :(得分: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

答案 4 :(得分: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