Как найти знак числа python


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

L.R.'s user avatar

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

Abhijit's user avatar

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

FuRioN's user avatar

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 Wood's user avatar

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's user avatar

MarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

задан 16 июн 2022 в 9:24

Сандал Терехов's user avatar

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

MarianD's user avatar

MarianDMarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

Описание задачи

Данная программа принимает на вход число и проверяет, положительное оно или отрицательное.

Решение задачи

  1. Считывается значение числа и записывается в переменную.
  2. Для определения знака используется условный оператор if.
  3. Конец.

Исходный код программы

Ниже представлен исходный код этой программы, а также результаты ее работы.

n = int(input("Введите число: "))
if(n > 0):
    print("Число положительное")
else:
    print("Число отрицательное")

Объяснение работы программы

  1. Пользователь вводит число, и оно записывается в переменную n.
  2. Для проверки, является ли введенное число больше или меньше 0, используется оператор if.
  3. Если число больше 0, то выводится строка «Число положительное».
  4. Если число меньше 0, то выводится строка «Число отрицательное».
  5. Конец.

Результаты работы программы

Пример 1:
Введите число: 45
Число положительное
 
Пример 2:
Введите число: -30
Число отрицательное

Примечание переводчика

Как можно заметить, в этой программе не предусмотрен случай, когда число равно 0. Предоставим читателю возможность самому устранить эту неточность.

Добавить комментарий