A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

Aldebaran

初级黑马

  • 黑马币:43

  • 帖子:19

  • 精华:0

© Aldebaran 初级黑马   /  2019-3-27 13:00  /  1356 人查看  /  6 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

近期学习了Python中字符串的 .isdigit() .isdecimal() .isnumeric()方法,发现这三者均不能判断一个小数是否为数,比如1.23。于是练习写了一段判断字符串是否为数的函数,包含了浮点型的判断,抛砖引玉,请大佬轻拍...
def isnumber(num):
    if num.isdecimal():     # 是整形就不用判断了
        num = int(num)
    elif num.find('.') == num.rfind('.') and num.find('.') != -1:     # 左右都搜索“.”,如果索引存在且一致,说明只有一个“.”
        num_1 = num[:num.find('.')] + num[(num.find('.')+1):]    # 这里把“.”给剔除掉
        if num_1.isdecimal():   # 把“.”剔除掉后再判断是否是数
            num = float(num)
        else:
            print('%s is not a number.' % num)
            return False
    else:
        print('%s is not a number.' % num)
        return False
    print('%s is a number, type: %s' % (num, type(num)))
    return True

num0 = input('Please input a string: ')
isnumber(num0)


6 个回复

倒序浏览
def isnumber(num):
    try:
        print(float(num), '是数')
    except:
        print('%s非数' % num)

num0 = input('Please input a string: ')
isnumber(num0)

好像这样也可以。
回复 使用道具 举报
def isnumber(num):
    try:
        print(float(num), '是数')
    except:
        print('%s非数' % num)

num0 = input('Please input a string: ')
isnumber(num0)
这个好像也可以
回复 使用道具 举报
def isnumber(num):
    try:
        print(float(num), '是数')
    except:
        print('%s非数' % num)

num0 = input('Please input a string: ')
isnumber(num0)
这个好像也可以
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马