Examples of how to get the sign of a number (e.g -1 or +1) in python:
Get the sign of a number in python
Let’s consider the following variables in python:
x1 = 42
x2 = -24
To get the sign of those numbers a solution is to use the function copysign(x, y) from python’s math module:
import math
math.copysign(1,x1)
will returns:
1
while
math.copysign(1,x2)
will returns:
-1
copysign(a,b) gives the sign of b and the absolute value of a, So for example:
math.copysign(-4,2)
gives
4
Create a sign function from math.copysign(1, x)
Create a function sign
sign = lambda x: math.copysign(1, x)
then
x = 42
sign(x)
gives
1
Another example
x = -24
sign(x)
gives
-1
Create your own function
Another example, try to create your own function
def mysign(x):
if x >= 0:
return 1
else:
return -1
Then
x = 42
print( mysign(x) )
gives
1
while
x = -24
print( mysign(x) )
gives
-1
I have am coding the algorithm of Bolzano in Python. This is my code for now:
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b-a)>tol:
m=(a+b)/2
if cmp(fonction(m))==cmp(fonction(a)):
a=m
else:
b=m
return a, b
It works until it encounters cmp, which it doesn’t recognise. However I don’t see another way to do it, since Python doesn’t have a sign function. Is there any other way to extract the sign of a number?
asked Apr 9, 2015 at 9:29
Is there any other way to extract the sign of a number?
How about writing your own?
Implementation
def sign(num):
return -1 if num < 0 else 1
Example
>>> sign(10)
1
>>> sign(-10)
-1
Ohh and cmp is a built-in that requires two parameters (numbers) and simply compares them and checks which of them is larger. You should have used it as follows
def Bolzano(fonction, a, b, tol=0.000001):
while abs(b-a)>tol:
m=(a+b)/2
if cmp(fonction(m), fonction(a)) == 0:
a=m
else:
b=m
return a, b
answered Apr 9, 2015 at 9:34
AbhijitAbhijit
61.6k18 gold badges131 silver badges202 bronze badges
Maybe use:
if cmp(fonction(m),fonction(a)) == 0:
answered Apr 9, 2015 at 9:34
FuRioNFuRioN
6235 silver badges12 bronze badges
def same_sign(a, b):
return (a * b) >= 0
Examples:
>>> same_sign(3, 4)
True
>>> same_sign(-3, 4)
False
>>> same_sign(3, -4)
False
>>> same_sign(-3, -4)
True
>>> same_sign(-3, 0)
True
answered Apr 9, 2015 at 9:40
Peter WoodPeter Wood
23.7k5 gold badges60 silver badges98 bronze badges
-
-
Actions
Automate any workflow
-
Packages
Host and manage packages
-
Security
Find and fix vulnerabilities
-
Codespaces
Instant dev environments
-
Copilot
Write better code with AI
-
Code review
Manage code changes
-
Issues
Plan and track work
-
Discussions
Collaborate outside of code
Explore
-
All features
-
Documentation
-
GitHub Skills
-
Blog
-
-
For
-
Enterprise
-
Teams
-
Startups
-
Education
By Solution
-
CI/CD & Automation
-
DevOps
-
DevSecOps
Case Studies
-
Customer Stories
-
Resources
-
-
-
GitHub Sponsors
Fund open source developers
-
The ReadME Project
GitHub community articles
Repositories
-
Topics
-
Trending
-
Collections
-
- Pricing
a = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
b = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
c = int(input()) #пользователь вводит число от (-бесконечность;бесконечность)
if 0 < a:
plus1 = a
elif 0 > a:
minus1 = a
elif 0 < b:
plus2 = b
elif 0 > b:
minus2 = b
elif 0 < c:
plus3 = c
elif 0 > c:
minus3 = c #цикл определяет знак числа
else:
plus1 = a
plus2 = b
plus3 = c
print(plus1 + plus2 + plus3) #сложение положительных чисел
Проблема в том, что когда я ввожу цифры, то числа не складываются.
MarianD
14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков
задан 16 июн 2022 в 9:24
4
Проблема вашей программы заключается в том, что когда ваше первое введенное число (a
) будет например положительным, выполнится только первая команда (plus1 = a
) и весь остальной код будет проигнорирован.
Почему проигнорирован?
Потому, что вся ваша программа состоит только из ветвей одного и того-же самого if
, и во всяком случае может исполниться только код одной ветви.
Как это исправить?
-
Для всякого введенного числа (
a
,b
,c
) используйте отдельныйif
, т.к. эти числа независимы друг от друга. -
Переменные
minus1
,minus2
,minus3
совсем не нужны, но -
нужно сначала переменным
plus1
,plus2
,plus3
присвоить нуль. -
Ваше заключительное
else
надо тем самым удалить.
plus1 = plus2 = plus3 = 0
if 0 < a:
plus1 = a
if 0 < b:
plus2 = b
if 0 < c:
plus3 = c
print(plus1 + plus2 + plus3) #сложение положительных чисел
ответ дан 16 июн 2022 в 12:17
MarianDMarianD
14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков
Описание задачи
Данная программа принимает на вход число и проверяет, положительное оно или отрицательное.
Решение задачи
- Считывается значение числа и записывается в переменную.
- Для определения знака используется условный оператор if.
- Конец.
Исходный код программы
Ниже представлен исходный код этой программы, а также результаты ее работы.
n = int(input("Введите число: ")) if(n > 0): print("Число положительное") else: print("Число отрицательное")
Объяснение работы программы
- Пользователь вводит число, и оно записывается в переменную
n
. - Для проверки, является ли введенное число больше или меньше 0, используется оператор
if
. - Если число больше 0, то выводится строка «Число положительное».
- Если число меньше 0, то выводится строка «Число отрицательное».
- Конец.
Результаты работы программы
Пример 1: Введите число: 45 Число положительное Пример 2: Введите число: -30 Число отрицательное
Примечание переводчика
Как можно заметить, в этой программе не предусмотрен случай, когда число равно 0. Предоставим читателю возможность самому устранить эту неточность.