如何创建 if 语句来检查我的变量是不是为 int? [复制]

Posted

技术标签:

【中文标题】如何创建 if 语句来检查我的变量是不是为 int? [复制]【英文标题】:How do I create an if statement to check if my variable is an int? [duplicate]如何创建 if 语句来检查我的变量是否为 int? [复制] 【发布时间】:2020-02-06 10:34:34 【问题描述】:

我想制作一个需要检查用户输入的程序 所以,问题是如何检查输入值,是字符串还是整数?

以下是一些无效的实验代码:

a = 10

print(type(a))


if (a==10):
    print("aaaaa")
else:
    if(type(a)== "<class 'int'>"):
        print("12345")

【问题讨论】:

如果您想检查用户输入,这将无济于事。无论用户键入123 还是abc,您仍然会得到一个表示他们键入的字符序列的字符串,而不是一个表示该字符序列的数值的int,它被解释为整数的基数10 表示。跨度> 好的,那我该如何检查呢? type(a) == intisinstance(a, int)。如果它来自输入,这意味着astr,并且您想检查a 是否是类似int 的str,您可以执行a.isdigit() @SeakyLone: isdigit 是错误的测试。它测试数字字符,而不是表示数字的字符串。例如,'-1'.isdigit()False @user2357112 你是对的。也许我应该说这个a[1:].isdigit() if a[0]=='-' else a.isdigit()。但如果没有询问者的进一步确认,int 检查很难给出准确的答案。 【参考方案1】:

您可以通过以下方式进行:

a = 10

if type(a) is int:
    print("Yes")
else:
    print("No")

【讨论】:

但不是当a 是用户输入时,a 始终是字符串类型。看看他是如何要求他检查用户输入的。 另外isinstance() 通常比type() 更受欢迎。 (搜索为什么会这样,有很多写得很好的答案解释它。例如***.com/a/1549854/6793245) @orangeInk 说得好。谢谢你。 @NielsHenkens 你是绝对正确的。它不适用于用户输入。【参考方案2】:

input() 将始终返回字符串,即 type(input()) 将是 str

据我了解,您希望在继续之前验证输入 ,这是你可以做的

foo = input()
if not foo.isdigit():
    raise ValueError("Enter a valid integer")
foo = int(foo)

这不适用于负数,因为您可以检查 foo 是否以“-”开头

if foo.lstrip("-").isdigit():
    multiply_by = -1 if foo.startswith("-") else 1
    foo = multiply_by * int(foo.lstrip("-"))

如果你想检查变量的类型

a = 10
if isinstace(a, int):
    pass

【讨论】:

使用isdigit 是一个常见的错误,但仍然是错误的。例如,'-1'.isdigit()Falseisdigit 是对数字字符的测试,而不是对表示数字的字符串的测试。

以上是关于如何创建 if 语句来检查我的变量是不是为 int? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何检查我的双变量是不是为整数? [复制]

如何在javascript中执行if语句来检查JSON数组是不是为空?

Vue v-if 语句检查变量是不是为空或 null

如何在 Perl 中检查多个变量是不是为空

如何检查数组是不是为空/空?

Django:如何在模板的 if 语句中使用变量?