Python-如何在不使用try / except的情况下检查字符串是否表示int?

发布于 2021-02-02 23:20:25

有没有办法在不使用try / except机制的情况下判断字符串是否表示整数(例如'3','-17'但不是'3.14''asfasfas')?

is_int('3.14') = False
is_int('-7')   = True
关注者
0
被浏览
155
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    如果你真的很讨厌在try/except各处使用s,请编写一个辅助函数:

    def RepresentsInt(s):
        try: 
            int(s)
            return True
        except ValueError:
            return False
    
    >>> print RepresentsInt("+123")
    True
    >>> print RepresentsInt("10.0")
    False
    

    它将需要更多的代码来完全覆盖Python认为是整数的所有字符串。我说这是pythonic。



  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    使用正整数可以使用.isdigit

    >>> '16'.isdigit()
    True
    

    它不适用于负整数。假设你可以尝试以下操作:

    >>> s = '-17'
    >>> s.startswith('-') and s[1:].isdigit()
    True
    

    它不适用于'16.0'格式,int在这种意义上类似于强制转换。

    编辑:

    def check_int(s):
        if s[0] in ('-', '+'):
            return s[1:].isdigit()
        return s.isdigit()
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看