关于负数的isdigit()判断
-->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
分类:
About Python
标签:
python isdigit()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix