为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Python 中找到整数或浮点数的绝对值,而不使用库、除法、平方根、条件或内置函数

如何在 Python 中找到整数或浮点数的绝对值,而不使用库、除法、平方根、条件或内置函数

胡子哥哥 2022-10-18 17:35:35
我想知道是否可以在 Python 3 中做这样的事情。当然不允许使用 abs()。也不允许导入。
查看完整描述

6 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

{1e999: x, -1e999: -x}[x*1e999]

我是认真的。这行得通。


被1e999解释为浮点数,但它溢出了可用的精度,所以它是inf. 但无穷大可以是正的或负的。通过与无穷大相乘x,我们可以根据其符号将其强制转换为两个值之一,而无需使用条件运算符。然后我们可以x从查找表中选择或否定。


它等效于以下内容,但不需要导入:


from math import inf


{inf: x, -inf: -x}[x*inf]


查看完整回答
反对 回复 2022-10-18
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

转换为带符号的字符串并切掉第一个字符。从__class__技术上讲,它不是一种方法,所以没有方法。

x.__class__(f'{x:+}'[1:])


查看完整回答
反对 回复 2022-10-18
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

格式化字符串以始终包含符号,然后在表中查找其第一个字符。

{'-': -x, '+': x}[f'{x:+}'[0]]


查看完整回答
反对 回复 2022-10-18
?
米脂

TA贡献1836条经验 获得超3个赞

假设字符串表示的第一个字符是“-”并返回否定。但是当你错的时候不要否定。


def abs(x):

    try:

        return {'-': -x}[f'{x}'[0]]

    except:

        return x


查看完整回答
反对 回复 2022-10-18
?
呼如林

TA贡献1798条经验 获得超3个赞

如果您认为内置类(int,str等)是内置“函数”。您可以执行以下操作

num.__class__(('%s' % num).lstrip('-'))

将数字转换为字符串,去掉负号,然后使用原始数字类转换回来


查看完整回答
反对 回复 2022-10-18
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

abs()内置函数只是调用该方法.__abs__()。没有导入,没有内置函数,没有条件,没有除法,没有平方根。没有abs()

x.__abs__()


查看完整回答
反对 回复 2022-10-18
  • 6 回答
  • 0 关注
  • 191 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信