使用if语句

时间:2016-11-24 13:50:56

标签: python python-3.x

IDnum = input("\nprompt: ")

if int(IDnum) >= 0 :
    if int(IDnum) in T.keys() :
        print("ID number(s) that {} will contact is(are) {}.".format(int(IDnum),T[int(IDnum)]))
    else :
        print("Entered ID number {} does not exist.".format(int(IDnum)))
else:
    break

它实际上是一个while循环,接收ID号并检查数字是否在文件中。

我想让它看出输入是否是整数> = 0,如果它是其他任何东西,(例如,空格,输入,字符,浮点数等)打破循环。

如何使用if语句执行此操作?

我试过了     如果IDnum ==''或IDnum ==''或int(IDnum)< 0: 但是如你所知,它不能涵盖所有其他情况。

2 个答案:

答案 0 :(得分:0)

T = {1: 1, 2: 2}
while True:
    IDnum = input("\nprompt: ")
    try:
        num = int(IDnum)
        if num < 0:
            raise ValueError('Negative Integers not allowed')
    except ValueError: # parsing a non-integer will result in exception
        print("{} is not a valid positive integer.".format(IDnum))
        break

    if num in T:
        print("ID number(s) that {} will contact is(are) {}.".format(num,T[num]))
    else:
        print("Entered ID number {} does not exist.".format(num))

感谢@adirio和@ moses-koledoye提出的改进建议。

答案 1 :(得分:0)

使用try-except语句进行检查。

def is_pos_int(IDnum):
    ''' Check if string contains non-negative integer '''
    try:
        number = int(IDnum)
    except ValueError:
        return False
    if number >= 0:
        return True
    else:
        return False

例如

is_pos_int('1 ') # notice the space

Out[12]: True

is_pos_int('-1')

Out[13]: False

is_pos_int('1.0')

Out[15]: False

is_pos_int('word')

Out[16]: False

然后:

while True:
    if not is_pos_int(IDnum):
        break
    else:
        val = int(IDnum)
        if val in T.keys() :
            print("ID number(s) that {} will contact is(are) {}.".format(val, T[val]))
        else :
            print("Entered ID number {} does not exist.".format(val))