2017-10-12 68 views
2

我在python中寫了一個簡單的腳本,它將十六進制值重寫爲它們的小數點32位有符號的副本。python in cmd不會打印負值

data = [data.rstrip('\n') for data in open('dlzkyHEAD.txt')] 

for value in data: 
    print(value, end=' -> ') 
    x= int(value,16) 
    print(x) if x<2**31 else x-2**32 

雖然在Python Shell一切工作是工作,但是當我把它們寫到一個文件,並在Windows中執行的在cmd它不會打印負值。

Python的外殼輸出:

8049008 -> 134516744 
80490c0 -> 134516928 
80490d0 -> 134516944 
80490d8 -> 134516952 
8049d84 -> 134520196 
8049d88 -> 134520200 
8049da4 -> 134520228 
c -> 12 
ffffefe8 -> -4120 
ffffffe0 -> -32 
ffffffe4 -> -28 
ffffffe8 -> -24 
ffffffec -> -20 
fffffff0 -> -16 
fffffff4 -> -12 
fffffffc -> -4 

CMD輸出:

8049d88 -> 134520200 
8049da4 -> 134520228 
c -> 12 
ffffefe8 -> ffffffe0 -> ffffffe4 -> ffffffe8 -> ffffffec -> fffffff0 -> fffffff4 -> fffffffc -> 
+0

你是如何執行的呢?你是什​​麼意思「在Windows cmd中執行?」而不是「在python shell中工作」 –

+0

我的意思是這樣的: C:\ Users \ User_Name \ AppData \ Local \ Programs \ Python \ Python36-32 \ python.exe script.py – KnucklePunch

+1

您的意思是'print(x如果x <2 ** 31 else x-2 ** 32)'? –

回答

1

我們(感謝@ cricket_007在評論中指出,在這裏這條線將只打印如果x < 2 ** 31:

print(x) if x<2**31 else x-2**32 

執行時也還有你有興趣的印刷:

print(x if x<2**31 else x-2**32) 
print(x) if x<2**31 else print(x-2**32) 

或者

if x<2**31: 
    print(x) 
else: 
    print(x-2**32) 
+0

請繼續併發佈一個答案是的你是對的,Python殼正常地打印它是很奇怪的。 Thx尋求幫助。 – KnucklePunch