关于负数的isdigit()判断

关于负数的isdigit()判断

转载自:Q1mi的博客:http://www.cnblogs.com/liwenzhou/p/5125807.html

感谢ta的分享!


-->the start

今天写作业的时候突然想到,一直使用isdigit()方法来处理用户的输入选择是不是数字,但是如果用户输入的是负数呢,会不会导致bug?

然后我就试了一下,居然不报错。。。然后我就纳闷了,赶紧试了一下:

先来看看str类的.isdigit()方法的文档。

复制代码
1 def isdigit(self): # real signature unknown; restored from __doc__
2     """
3         S.isdigit() -> bool
4         
5         Return True if all characters in S are digits
6         and there is at least one character in S, False otherwise.
7     """
8     return False
复制代码

 很显然'-10'.isdigit()返回False是因为'-'不是一个digit。

然后我就想怎么才能让负数也正确的判断为整数呢,下面是从网上找到的答案,在这里记录下来。

1 num = '-10'
2 if (num.startswith('-') and num[1:] or num).isdigit():
3     print(num是整数)
4 else:
5     print(num不是整数)

正则表达式法:

复制代码
1 num = '-10'
2 import re
3 if re.match(r'^-?(\.\d+|\d+(\.\d+)?)', num):
4     print(num是整数)
5 else:
6     print(num不是整数)
复制代码

更Pythonic的方法:

1 num = '-10'
2 if num.lstrip('-').isdigit():
3     print(num是整数)
4 else:
5     print(num不是整数)

当我看到第三个方法的时候,真是感触颇多,受益匪浅。

<--the end

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值