2017-08-30 4 views
0

私はこの問題に立ち往生しました。リトルヘルプ? 彼らは異なる符号を持っている場合、彼らは同じ符号(正または負)、プリント「同じ記号」 を持っている場合、基本的に私はキャッチは私が必要とする、ある(Python Challenge)を使用しないで2つの数字の兆候を比較する< or >

印刷「異符号」、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") 
+0

StackOverflowの適用範囲は**実用的**、問題があります。パズルとコードゴルフをプログラミングするために、別のStackExchangeサイトがあります。[codegolf.se] –

+0

@CharlesDuffy私はコードゴルフでこれを尋ね、downvotedしてから保留にしました。アドバイスをいただきありがとうございます。 https://codegolf.stackexchange.com/questions/141020/python-challenge-comparing-signs-of-2-numbers-without-using-or –

+0

トピックになっていないので、ここでトピックにしません。 –

答えて

1

あなたが自身で番号を引く使用することができるとし、二つの数字がゼロに等しいか、または二つの数字がゼロに等しい非結果場合は次のようになりますきれいな解決策ではなく、MB、

まあ
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") 
+0

これは実行可能なPythonコードではなく、実行された場合、最初のテストは成功し、同じでない場合でも '-4 == 0,5-5 == 0'と評価されます真になる。 – cdlane

+0

@cdlaneが言ったことは、常に同じ記号になります –

+0

@Dylan Grove問題を修正しましたが、ロジックが正しく動作するようになりました。 –

1

が、

#!/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。両方のnumにこのビットがある場合は同じ符号、そうでない場合は異なる。

+0

残念ながら、これはnum1、num2、および0以外の数字を使用します。私は明確化のために台無しにした –

関連する問題