【问题标题】:How to compare the type of the var? [duplicate]如何比较var的类型? [复制]
【发布时间】:2020-04-15 17:51:37
【问题描述】:

我已经开始了一个非常基本的程序,您必须在其中找到计算机随机选择的数字。我成功地将随机发生器添加到程序中,但我找不到如何比较所询问数字的类型,以便在您输入字母而不是数字时打印一条消息。

我试过这种类型的命令

if type(nbredevine)!=int:

    print ("""I asked you for an integer. Don't mess with me.""")

不幸的是,这不起作用,即使我在互联网和这个网站上搜索过它,我也找不到适合这种特殊情况的东西。

在这种情况下,我无法使 isinstance 函数工作。是不是因为我太菜鸟了?

谢谢你们,祝你们假期快乐。

【问题讨论】:

  • 您想要isinstance(nbredevine, int),也许您还需要确保用户输入也不是字符串:input() 函数默认将任何用户输入作为字符串提供
  • 是的,Python 可以检测你的新人程度,并禁用某些高级功能,例如类型比较 /s
  • 很有可能您实际上将输入作为字符串。如果您想查看它是否看起来像一个整数,请尝试将其转换为 int 并查看它是否错误。
  • 说真的,您的输入永远不会是整数。您键入的任何内容都将是一个字符串,即使它包含数字。
  • @MadPhysicist 我假设我在滥用该命令,而不是 python 会阻止该功能。

标签: python if-statement var


【解决方案1】:

当你使用input 时,你总是得到一个字符串。如果字符串只包含数字,则可以将其转换为整数,但它仍然是字符串。您可以做几件事。

如果您只对非负整数感兴趣,可以使用 str.isdigit 进行检查:

if nbredevine.isdigit():
    value = int(nbredevine)
    # use integer value
else:
    print('Not an integer')

如果你想绕过所有的绒毛直接检查,你可以尝试转换为整数:

try:
    value = int(nbredevine)
except ValueError:
    print('Not an integer')
else:
    # use integer value

【讨论】:

  • 非常感谢您的回答。不幸的是,我仍然有同样的错误。这是我收到的错误消息: Traceback (last recent call last): File "python.py", line 8, in nbredevine=input("""尝试猜测计算机随机选择的数字(介于 0和 100) :""") File "", line 1, in NameError: name 'test' is not defined
  • @JPRouve。该错误与发布的代码无关。您正在尝试在某处引用名为 test 的未定义变量。
  • 嗯,这是因为我尝试在我的 nbredevine var 中输入“test”
  • @JPRouve。这不是错误所说的,除非您忘记了 test 周围的引号。 FWIW,即使您的问题已关闭,您也可以选择答案。
猜你喜欢
  • 2018-04-17
  • 2016-01-13
  • 2012-06-16
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 2010-12-29
  • 2011-08-27
  • 2020-09-28
相关资源
最近更新 更多