猿问

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

我想知道是否可以在 Python 3 中做这样的事情。当然不允许使用 abs()。也不允许导入。



胡子哥哥
浏览 192回答 6
6回答

凤凰求蛊

{1e999: x, -1e999: -x}[x*1e999]我是认真的。这行得通。被1e999解释为浮点数,但它溢出了可用的精度,所以它是inf. 但无穷大可以是正的或负的。通过与无穷大相乘x,我们可以根据其符号将其强制转换为两个值之一,而无需使用条件运算符。然后我们可以x从查找表中选择或否定。它等效于以下内容,但不需要导入:from math import inf{inf: x, -inf: -x}[x*inf]

守着星空守着你

转换为带符号的字符串并切掉第一个字符。从__class__技术上讲,它不是一种方法,所以没有方法。x.__class__(f'{x:+}'[1:])

缥缈止盈

格式化字符串以始终包含符号,然后在表中查找其第一个字符。{'-': -x, '+': x}[f'{x:+}'[0]]

米脂

假设字符串表示的第一个字符是“-”并返回否定。但是当你错的时候不要否定。def abs(x):    try:        return {'-': -x}[f'{x}'[0]]    except:        return x

呼如林

如果您认为内置类(int,str等)是内置“函数”。您可以执行以下操作num.__class__(('%s' % num).lstrip('-'))将数字转换为字符串,去掉负号,然后使用原始数字类转换回来

慕桂英546537

abs()内置函数只是调用该方法.__abs__()。没有导入,没有内置函数,没有条件,没有除法,没有平方根。没有abs()。x.__abs__()
随时随地看视频慕课网APP

相关分类

Python
我要回答