如何检查变量是字符串还是整数?

时间:2020-03-28 15:04:09

标签: python string integer

我有一个有关如何警告用户输入'string'而不是'integer'的问题 但是,如果用户输入为integer,然后再次询问please enter string

,似乎无法循环访问

这里的例子

http://pythontutor.com/visualize.html#mode=edit

catNames = []

while True:

    print("Enter the name of cat " + str(len(catNames) + 1) + ' (Or enter nothing to stop):' )

    while True:

        name = input()

        try:
            name = int(name)

        except ValueError:

            print('please enter string')
            pass    

    if name == '':
        break

    catNames = catNames + [name] # list concatenation

print('The cat names are :')
for i in catNames:
    print(' ' + i)

2 个答案:

答案 0 :(得分:3)

可能的解决方法是:

catNames = []

while True:
    print("Enter the name of cat " + str(len(catNames) + 1) + ' (Or enter nothing to stop):' )
    name = input()
    if name.isalpha():
        catNames = catNames + [name] # list concatenation
    elif name == '':
        break
    else:
        print("Please enter a string")


print('The cat names are :')
for i in catNames:
    print(' ' + i)

答案 1 :(得分:1)

一个while就足够了,如果用户输入一个整数,则可以“重置”该值:

catNames = []

while True:
    print("Enter the name of cat " + str(len(catNames) + 1) + ' (Or enter nothing to stop):' )
    name = input()

    if name.strip() == '':
        # no input
        print("exiting!")
        break

    try:
        name = int(name)
        name = None
        print("Please enter a string")
    except ValueError:
        pass
    finally:
        if name is not None:
            catNames.append(name)


print('The cat names are :')
for i in catNames:
    print(' ' + i)