(Python挑战)比较2个数字的符号而不使用<或者>

时间:2017-08-30 00:49:01

标签: python

我一直坚持这个问题,我现在在挑战网站上发现了一段时间。帮助不大? 基本上我需要比较2个数字, 如果他们有相同的标志(正面或负面),请打印"相同的标志" 如果他们有不同的标志,请打印"不同的标志"

问题是,我需要在不使用<或者> (大于或小于)并且仅使用num1和num2的加法和减法编辑:也可以使用0(没有其他数字)。

以下是<> s

的样子
num1 = int(input("enter num1: "))
num2 = int(input("enter num2: "))

if num1 < 0 and num2 < 0:   print("same sign")

if num1 > 0 and num2 > 0:   print("same sign")

if num1 > 0 and num2 < 0:   print("different sign")

if num1 < 0 and num2 > 0:   print("different sign")

3 个答案:

答案 0 :(得分:1)

您可以单独减去数字,如果结果在两个数字中等于零或非等于零是两个数字那么它是相同的符号,否则不同的符号,这里是代码:

num1 = int(input("enter num1: "))
num2 = int(input("enter num2: "))

if num1 + 0 - num1 == 0 and num2 + 0 - num2 == 0:  print("same sign") # +

elif num1 + 0 - num1 != 0 and num2 + 0 - num2 != 0:  print("same sign") # -

else: print("different sign")

答案 1 :(得分:1)

嗯,mb不是最漂亮的解决方案,但有一张支票

#!/usr/bin/env python3

num1 = 10
num2 = 2

if ((num1 & 0x800000) == (num2 & 0x800000)):
    print('same sign')
else:
    print('different sign')

这里的技巧,Python中的int类型需要24位= 3个字节。签名类型在最重要的位置有1个。 0x800000 = 1000 0000 0000 0000 0000 0000b。如果两个都有这个位 - 相同的符号,否则 - 不同。

答案 2 :(得分:0)

您可以通过验证以下内容来检查两个数字xy是否具有相同的符号:

same_sign = abs(x) + abs(y) == abs(x + y)