Найти - Пользователи
Полная версия: убрать минус в числе без использования abs и math
Начало » Python для экспертов » убрать минус в числе без использования abs и math
1 2
Nev
Нужно убрать минус в числе без использования abs, math или сплайсов в строке и тому подобное.
Вероятно подразумевается использование format в print. Но я что-то не могу найти подходящий оператор.
Может возможно математическое решение?
Какие есть варианты?

AD0DE412
экземпляр где
Nev
возможно математическое решение
а так -2 * -1
Nev
Прошу прощения, вопрос не полный. Дополняю.
На входе два числа, одно из другого вычитается. В результате нужно получить abs(число). Но входящие числа идут в разнобой. Проверить какое из них меньше так же нельзя.
Таким образом число может быть как положительным, так и отрицательным, но результат всегда должен быть положительным.
AD0DE412
 def alternative_abs(a, b):
    result = a - b
    return result * -1 if result <= 0 else result
py.user.next
  
>>> n = 2 - 4
>>> n = -n if n < 0 else n
>>> n
2
>>> 
>>> 
>>> n = 2 - 4
>>> n = (n, -n)[n < 0]
>>> n
2
>>>
AD0DE412
отож оно еще более очивидно
этот момент не понимаю
 (n, -n)[n < 0]
блин прикольно а когда это появялось? чет не встречаось ни разу и как это называется?
py.user.next
AD0DE412
блин прикольно а когда это появялось?
Всегда было.

AD0DE412
чет не встречаось ни разу и как это называется?
Это называется кортеж из элементов, из которого берётся элемент по индексу ноль или один.

n < 0 даёт в результате True или False. При этом, как известно, логические True и False являются объектами класса bool, который является подклассом класса int. Поэтому True и False можно использовать везде, где можно использовать целые числа.

https://docs.python.org/3/reference/datamodel.html#the-standard-type-hierarchy

numbers.Integral

These represent elements from the mathematical set of integers (positive and negative).

There are two types of integers:

Integers (int)

These represent numbers in an unlimited range, subject to available (virtual) memory only. For the purpose of shift and mask operations, a binary representation is assumed, and negative numbers are represented in a variant of 2’s complement which gives the illusion of an infinite string of sign bits extending to the left.

Booleans (bool)

These represent the truth values False and True. The two objects representing the values False and True are the only Boolean objects. The Boolean type is a subtype of the integer type, and Boolean values behave like the values 0 and 1, respectively, in almost all contexts, the exception being that when converted to a string, the strings "False" or "True" are returned, respectively.

The rules for integer representation are intended to give the most meaningful interpretation of shift and mask operations involving negative integers.

Список классов питона можно получить, выполнив help() и далее набрав там слово “builtins”.

Также можно запустить pydoc или pydoc3 с опцией -p, открыть локально в браузере страницу на этом порте и там перейти в раздел builtins.
[guest@localhost ~]$ pydoc3
pydoc - the Python documentation tool

pydoc3 <name> ...
Show text documentation on something. <name> may be the name of a
Python keyword, topic, function, module, or package, or a dotted
reference to a class or function within a module or module in a
package. If <name> contains a '/', it is used as the path to a
Python source file to document. If name is 'keywords', 'topics',
or 'modules', a listing of these things is displayed.

pydoc3 -k <keyword>
Search for a keyword in the synopsis lines of all available modules.

pydoc3 -p <port>
Start an HTTP server on the given port on the local machine. Port
number 0 can be used to get an arbitrary unused port.

pydoc3 -b
Start an HTTP server on an arbitrary unused port and open a Web browser
to interactively browse documentation. The -p option can be used with
the -b option to explicitly specify the server port.

pydoc3 -w <name> ...
Write out the HTML documentation for a module to a file in the current
directory. If <name> contains a '/', it is treated as a filename; if
it names a directory, documentation is written for all the contents.

[guest@localhost ~]$ pydoc3 -p 1234
Server ready at http://localhost:1234/
Server commands: [b]rowser, [q]uit
server>
Nev
AD0DE412
Операция if else не доступна.
Nev
py.user.next
Операции сравнения не доступны.
Доступны: переменные, математические операции и все операции print.
py.user.next
Nev
Операции сравнения не доступны.
Доступны: переменные, математические операции и все операции print.
  
>>> n = -2.0
>>> 
>>> n = (n * n) ** 0.5
>>> n
2.0
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB