如何创建 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) == int
或 isinstance(a, int)
。如果它来自输入,这意味着a
是str
,并且您想检查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()
是 False
。 isdigit
是对数字字符的测试,而不是对表示数字的字符串的测试。以上是关于如何创建 if 语句来检查我的变量是不是为 int? [复制]的主要内容,如果未能解决你的问题,请参考以下文章