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

2024-04-26 11:56:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个应用程序有几个命令。 当您键入某个命令时,您必须键入有关某个/某人的其他信息。 现在,信息必须是严格意义上的整数或字符串,这取决于具体情况。

然而,无论您使用raw_input()在Python中键入什么,实际上都是一个字符串,所以更具体地说,我将如何在不尝试的情况下很快地……除了查看变量是否由数字或字符组成之外?


Tags: 字符串命令信息应用程序inputraw键入情况
3条回答

如果要检查它是什么:

>>>isinstance(1,str)
False
>>>isinstance('stuff',str)
True
>>>isinstance(1,int)
True
>>>isinstance('stuff',int)
False

如果要从原始输入中获取int

>>>x=raw_input('enter thing:')
enter thing: 3
>>>try: x = int(x)
   except: pass

>>>isinstance(x,int)
True

如果给定的字符串只是一个或多个数字,则^{} method of the ^{} type返回True。如果不是,你知道字符串应该被当作一个字符串。

我认为你有两个选择:

  • 尝试将其转换为int,但捕获异常:

    try:
        value = int(value)
    except ValueError:
        pass  # it was a string, not an int.
    

    这就是请求宽恕的方法。

  • 显式测试字符串中是否只有数字:

    value.isdigit()
    

    只有字符串中的所有字符都是数字(0-9)时,^{}才返回True

    unicode/Python 3str类型等价的是^{}/^{};只有Unicode小数可以转换为整数,因为并非所有数字都有实际的整数值(例如,U+00B2 SUPERSCRIPT 2是数字,但不是小数)。

    这通常被称为“请求许可”方法,或“三思而后行”。

后者不会检测所有有效的int()值,因为int()值中也允许有空白和+-。第一个表单很乐意接受' +10 '作为一个数字,后者不会

如果您希望用户通常将输入一个整数,请使用第一个表单。在这种情况下,请求宽恕比请求许可更容易(更快)。

相关问题 更多 >