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

26 浏览
0 Comments

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

我有一个应用程序,其中有几个命令。

当您输入特定命令时,您必须输入有关某些事物/某人的其他信息。

现在,这些信息必须严格是整数或字符串,这取决于情况。

然而,无论您使用raw_input()输入什么内容,实际上都是字符串,所以更具体地说,我如何简洁地、不使用try...except来判断一个变量是由数字还是字符组成的?

0
0 Comments

问题的出现原因:在程序中,有时候需要判断一个变量是整数还是字符串,但是直接判断变量的类型并不能准确得出结果。因此需要找到一种方法来判断变量的类型。

解决方法:可以使用字符串的isdigit()方法来判断变量是否为整数。该方法返回True当且仅当给定的字符串仅由一个或多个数字组成。如果不是,则可以将该字符串视为普通字符串。

需要注意的是,isdigit()方法对于负数返回的是False。因此,在判断变量是否为整数时,还需要考虑负数的情况。

下面是一个示例代码,展示了如何使用isdigit()方法来判断变量是整数还是字符串:

def check_variable_type(variable):
    if isinstance(variable, int):
        print("Variable is an integer.")
    elif isinstance(variable, str):
        if variable.isdigit():
            print("Variable is a positive integer.")
        else:
            print("Variable is a string.")
    else:
        print("Variable is neither an integer nor a string.")
# 测试示例
check_variable_type(10)  # 输出:Variable is an integer.
check_variable_type("10")  # 输出:Variable is a positive integer.
check_variable_type("-10")  # 输出:Variable is a string.
check_variable_type(10.5)  # 输出:Variable is neither an integer nor a string.

通过以上代码,我们可以通过isdigit()方法来判断变量是整数还是字符串,并进行相应的处理。

0
0 Comments

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

有时候我们需要判断一个变量是整数还是字符串,下面是一些方法可以实现这个目的。

1. 使用isinstance()函数进行判断:

- isinstance(1, str) 返回False

- isinstance('stuff', str) 返回True

- isinstance(1, int) 返回True

- isinstance('stuff', int) 返回False

2. 如果你想要从raw_input中获取整数:

- x = raw_input('enter thing:')

- try: x = int(x)

- except: pass

- isinstance(x, int) 返回True

3. 使用basestring而不是str,以捕捉unicode类型。详情请参考stackoverflow链接:stackoverflow.com/questions/1979004/…

这些方法可以很好地判断变量是整数还是字符串,适用于正数和负数。如果你只想简单地打印出判断结果,可以使用一行代码:print(isinstance('stuff', int))

0
0 Comments

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

在我看来,你有两个选择:

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

try:
    value = int(value)
except ValueError:
    pass  # 它是一个字符串,而不是一个整数。

这是一种请求原谅的方法。

2. 明确测试字符串中是否只有数字:

value.isdigit()

`str.isdigit()`只有在字符串中的所有字符都是数字(0-9)时才返回True。

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

这通常被称为请求许可的方法,或者叫先检查再执行。

后者不会检测所有有效的`int()`值,因为空格、+和-也允许在`int()`值中。第一种形式会将`' +10 '`作为一个数字接受,而后者不会。

如果你期望用户通常输入一个整数,使用第一种形式。在这种情况下,请求原谅而不是请求许可更容易(也更快)。

还有其他选择。最好说这两个选择只是我自己推荐的。

:其他选择对大多数情况来说太过复杂。然而,这是有量化的。

问题是我真的不太理解try...except,所以如果你能更详细地解释一下,那太好了。

:操作可能引发异常;它们会打破正常的代码流程,它们会“穿过”堆栈;函数会立即返回,直到某个地方“捕获”异常。`try`...`except`语句用于捕获异常。`int()`可能会引发`ValueError`异常,但我们特意再次捕获它以检测字符串是否无法转换为整数。请参阅Python教程以获取更多细节。

:确实,现在指出了。

`isdigit()`对于负数返回False。

:是的,这就是为什么我明确指出只有当所有字符都是数字时才返回True。-不是一个数字。

没错。但它只适用于正整数,而不是所有的整数。

0