2301_80369875 2023-11-14 21:53 采纳率: 100%
浏览 5
已结题

十进制小数形式输入浮点数,考虑非法输入

img


例如从键盘输入123.12ae得到123.12
12.12.12得到12.12

  • 写回答

2条回答

  • 梦幻精灵_cq 2023-11-14 22:16
    关注
    • 遍历输入字符串,只取连续的数字字符或者数字和一个小数点字符,可以达到您的要求

      img


      img


      img

    从输入字符串取浮点数,python代码

    
    def getFloat(s):
        nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] # 数字字符列表
        pot = 0 # 小数点计数器。
        result = '' # 浮点数字符串初值。
    
        for i in s: # 遍历输入字符串。
        
            if i == '.': # 小数点计数
                pot += 1
                
                if pot > 1: # 小数点大于一个,退出。
                    break 
                
                result += i            
            elif i not in nums: # 有数字和小数点以外的字符,非。
                break
            else:
                result += i
    
        return float(result) #  返回浮点数。
    
    
    if __name__ == '__main__':
        print('\n浮点数:', getFloat(input('\n输入:').strip()))
    
    

    • 可以考虑这样子判定,输入字符串最多只可以含一个小数点,其余全是数字。
      要么全是数字,要么除了数字只能有一个点,其余都是“非法输入”。

      img


      img


      img


      img

    判定浮点数,python代码

    
    def isFloat(s):
        nums = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '0'] # 数字字符列表
        pot = 0 # 小数点计数器。
    
        for i in s: # 遍历输入字符串。
        
            if i == '.': # 小数点计数
                pot += 1
            elif i not in nums: # 有数字和小数点以外的字符,非。
                return 
    
            if pot > 1: # 小数点大于一个,裴。
                return 
    
        return float(s) #  返回浮点数。
    
    if __name__ == '__main__':
        ff = isFloat(input('\n输入:').strip())
    
        if ff:
            print('\n浮点数:', ff)
        else:
            print(f'\n{f" 输入不是浮点数!":~^32}\n')
    
    

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 11月23日
  • 已采纳回答 11月15日
  • 创建了问题 11月14日