首页 文章

如何检查输入是否是Python中的自然数?

提问于
浏览
1

现在我正在尝试制作一个简单的井字游戏,当用户选择下一步移动板的扇区时,我需要检查输入是否是一位数的自然数 . 我不认为只是制作 ['1','2','3'...'9'] 列表并且为它调用in语句是最理想的事情 . 你能提出什么建议吗?

5 回答

  • 1

    您可以通过检查字符串是否包含数字以及这些数字的等效整数是否在1到9之间来检查字符串 x 是否是单个数字的自然数,即

    x.isdigit() and 1 <= int(x) <= 9

    此外,如果 x.isdigit() 返回false,则由于使用 and 的表达式而永远不会评估 int(x) (因为结果已知,因此不需要),因此如果字符串不是数字,则不会出现错误 .

  • 1

    使用lenstr.isdigit

    >>> x = '1'
    >>> len(x) == 1 and x.isdigit() and x > '0'
    True
    >>> x = 'a'
    >>> len(x) == 1 and x.isdigit() and x > '0'
    False
    >>> x = '12'
    >>> len(x) == 1 and x.isdigit() and x > '0'
    False
    

    替代方案:使用len和链式比较:

    >>> x = '1'
    >>> len(x) == 1 and '1' <= x <= '9'
    True
    >>> x = 'a'
    >>> len(x) == 1 and '1' <= x <= '9'
    False
    >>> x = '12'
    >>> len(x) == 1 and '1' <= x <= '9'
    False
    
  • 3

    为什么不用

    >>> natural = tuple('123456789')
    >>> '1' in natural
    True
    >>> 'a' in natural
    False
    >>> '12' in natural
    False
    

    检查一次初始化一次的小元组的成员资格是非常有效的,尤其是 tuple ,因为它针对少量项目进行了优化 . 使用 lenisdigit 是过度的 .

  • 2

    以下控制台可以帮助:

    >>> x=1
    >>> x>0 and isinstance(x,int)
    True
    
  • 0

    我不知道为什么人们把这推到了一个新的水平 . 只需自然数就可以写,

    int(x) > 0
    

    对于范围问题:

    0 < int(x) <= 9
    

    显然,在该范围内的数字是自然数 .

相关问题