首页 > 其他分享 >int强转面向对象分析

int强转面向对象分析

时间:2024-03-17 14:34:26浏览次数:16  
标签:强转 elif return int sign num 字符串 面向对象分析

int强转面向对象分析

import math


class MyInt():
    def __call__(self, num):
        # 针对bool
        if isinstance(num, bool):
            if num == False:
                return 0
            else:
                return 1
            # 针对int
        elif isinstance(num, int):
            return num
        # 针对float
        elif isinstance(num, float):
            # 方法一
            # a,b = str(num).split(".")
            # return eval(a) 执行字符串按代码

            # 方法二 按负数取高 整数取底
            return math.floor(num) if num >= 0 else math.ceil(num)

        elif isinstance(num, str):
            #  如果是字符串且有符号的情况
            if (num[0] == "+" or num[0] == "-") and num[1:].isdecimal():
                # 检测是否是 +999999 这种情况
                # 获取当前字符串的正负值
                if num[0] == "+":
                    sign = 1
                elif num[0] == "-":
                    sign = -1
                # 截取符号后面的字符串传递
                return self.calc(num[1:], sign)

            elif num.isdecimal():
                # 无符号归于正数
                return self.calc(num)
            else:
                # 检测是否是 +999999abc 这种情况
                return "这个算不了兄弟~"

    # 计算最后的数值
    def calc(self, num, sign=1):
        # 去掉前面的"0"字符串
        num = num.lstrip("0")
        # print(num , type(num) , "<==============>")
        if num == "":
            #  0全去掉的情况是空字符串
            return 0
        # eval将str按照python解析为int 如果正常有符号位的eval无法识别为py代码 不可解析
        return eval(num) * sign

标签:强转,elif,return,int,sign,num,字符串,面向对象分析
From: https://www.cnblogs.com/wbcde116/p/18078550

相关文章

  • IntelliJ IDEA 2023.3 最新发布啦!盘点精彩亮点(关注公众号‘精品应用分享’,输入'idea'
    IntelliJIDEA2023.3的发布标志着AIAssistant的持续发展,它现已超越技术预览阶段,并具有许多令人兴奋的改进。在其他领域,该版本包括对最新Java21功能的全面支持,引入了具有编辑操作的直观浮动工具栏,并添加了“运行到光标”嵌入选项以增强调试工作流程。IntelliJIDEAUltima......
  • FPD、DPD、vintage、滚动率、迁移率
    1、vintage、滚动率、迁移率https://zhuanlan.zhihu.com/p/81027037/vintage滚动率:前六个月到后六个月状态迁徙率是在vintage基础上加工而来的。vintagevintage:selectloan_month,mob,sum(loan_amt)as"放款金额",sum(if(overdueday>=1,left_repay_principal,0))as1+剩......
  • c++中 int, long long, double 等数据类型的长度及范围整理
    原文链接:https://blog.csdn.net/mmk27_word/article/details/84378346byte:字节bit:位短整型short:所占内存大小:2byte=16bit;所能表示范围:-3276832767;(即-2^152^15-1)整型int:所占内存大小:4byte=32bit;所能表示范围:-21474836482147483647;(即-2^312^31-1)unsigned:所......
  • 在 Ubuntu 和 Linux Mint 上更改运行级别的简单方法
    在Ubuntu和LinuxMint等基于Linux的操作系统中,运行级别(runlevel)是指系统的工作状态或运行模式。每个运行级别都对应着一组特定的服务和进程,用于满足用户或系统的不同需求。通过更改运行级别,用户可以控制系统启动时所加载的服务和进程,从而实现定制化的系统配置。运行......
  • Win11复现 PointNet ++ 分类任务 || 三维点云深度学习第一篇
    ​Windows11Github上复现PointNet++Classification任务下载代码和安装依赖环境安装git知乎教程Gitclone源码地址:PointNetGithub点击Code复制HTTPS到目标目录shift-右键GitBashHere输入GitClone<url>​​​​​​安装nodejsNode.js—Down......
  • IntelliJ IDEA安装scala
    idea下安装scala插件一、前期准备在安装scala插件之前,要先在windows下安装scala,如果没有安装scala的话,可以参考这篇博客:windows下scala的安装教程二、scala安装过程现在开始安装scala插件:1.打开idea,在左上角找到File(工具),然后在找到setting2.进入setting之后,找到plugins(要......
  • 图片去水印软件 Inpaint使用教程
      Inpaint中文版是一款功能强大,实用方便的图片快速去水印软件,Inpaint中文版操作简单易上手,可以帮助你达到一键美化图片的效果。图片水印现在已经非常流行,能够借助一款不错的图片水印去除工具可以让图片处理工作简单便捷。本文讲介绍Inpaint特色,和软件如何使用,  请注意,......
  • Linux 安装IntelAx211无线网卡
    https://blog.csdn.net/shikaiaixuexi/article/details/131565396sudoaptinstallgitmakesudoaptinstallflexbisongitclonehttps://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.gitcdbackport-iwlwifisudomakedefconfig-iwlwifi-......
  • 猫头虎分享已解决Bug || 网络攻击(Network Attack):DDoSError, NetworkIntrusion
    博主猫头虎的技术世界......
  • IntelliJ IDEA 中用scala编程
    目录二.测试Scala插件    九九乘法表三.spark环境的配置    进入IntelliJIDEA界面,点击右下角绿色的插件点击 Configure...搜索Plugins找到scala并下载好点击RestartIDE重启一.测试Scala插件1.点击newProject选项2.点击进去,选择左侧scal......