2017-08-30 26 views
0

我一直在這個問題上停留一段時間,現在我在挑戰網站上發現了一段時間。幫助不大? 基本上我需要比較兩個數字, 如果它們具有相同的符號(正或負),打印「同號」 如果他們有不同的標誌,打印「符號不同」(Python挑戰賽)比較兩個號碼的符號而不使用< or >

美中不足的是,我需要不要使用<或>(大於或小於),只使用num1和num2的加減運算。編輯:也可以使用0(無其他數字)。

這裏是什麼樣子與<>取值

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我問了這個關於代碼高爾夫的問題,然後下了決定,然後它被擱置了。感謝您的建議。 https://codegolf.stackexchange.com/questions/141020/python-challenge-comparing-signs-of-2-numbers-without-using-or –

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

這不是可運行的Python代碼,如果它是,你的第一個測試總是會成功並打印「相同的符號」,即使它們不是,「-4 -4 == 0和5 - 5 == 0」評估到'真'。 – cdlane

+0

@cdlane說什麼,它總是等於「相同的符號」 –

+0

@Dylan Grove我修正了這個問題,現在邏輯應該可以正常工作 –

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。如果兩個數字都有這個位 - 相同的符號,否則 - 不同。

+0

不幸的是,它使用了除num1,num2和0之外的其他數字。我搞砸了澄清 –