Python技巧: 用isnumeric等代替数值异常解决

作者 : 开心源码 本文共1122个字,预计阅读时间需要3分钟 发布时间: 2022-05-12 共206人阅读

实现Python代码,输入数字,而后输出这个数字的三倍。

>>> n = input("Enter a number: ")Enter a number: 6>>> print(f"{n} * 3 = {n*3}")6 * 3 = 666

input函数总是返回字符串。可以通过int转换字符串为整数:

>>> n = int(n)>>> print(f"{n} * 3 = {n*3}")6 * 3 = 18

但是,假如输入不是数值,则会报错:

Enter a number: abcdValueError: invalid literal for int() with base 10: 'abcd'

比较常用的方法是在“try”块中运行转换,并捕获我们可能取得的任何异常。但字符串的isdigit方法可以更优雅地处理这个问题。

>>> '1234'.isdigit()True>>> '1234 '.isdigit()  # space at the endFalse>>> '1234a'.isdigit()  # letter at the endFalse>>> 'a1234'.isdigit()  # letter at the startFalse>>> '12.34'.isdigit()  # decimal pointFalse>>> ''.isdigit()   # empty stringFalse

str.isdigit对正则表达式’^ \ d + $’返回True。

>>> n = input("Enter a number: ")>>> if n.isdigit():        n = int(n)        print(f"{n} * 3 = {n*3}")
  • 参考资料
  • 探讨qq群144081101 591302926 567351477
  • 本文最新版本地址
  • 本文涉及的python测试开发库 谢谢点赞!
  • 本文相关海量书籍下载
  • 2018最佳人工智能机器学习工具书及下载(持续升级)

Python还包括另一方法str.isnumeric,他们有什么区别?

>>> n = input("Enter a number: ")>>> if n.numeric():        n = int(n)        print(f"{n} * 3 = {n*3}")

字符串只包含数字0-9时str.isdigit返回True。str.isnumeric则还能识别英语意外语言的数值。

>>> '一二三四五'.isdigit()False>>> '一二三四五'.isnumeric()True>>> int('二')ValueError: invalid literal for int() with base 10: '二'

str.isdecimal

>>> s = '22'    # or if you prefer, s = '2' + '\u00B2'>>> s.isdigit()True>>> s.isnumeric()True>>> s.isdecimal()False

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Python技巧: 用isnumeric等代替数值异常解决

发表回复