2017-09-26 29 views
0

我試圖檢查條件是否爲真,其中所有部分整數,我沒有使用任何'<'的跡象,但我仍然得到這個錯誤。我真的很迷茫......獲取「int」和「str」實例之間不支持的「TypeError:'<'',甚至不使用'<'字符

代碼:

import sys 

packets, packets_x, packets_y, packets_z = [], [], [], [] 

for packet in sys.stdin: 
    if packet == "\n": 
     break 
    packets.append(packet[:-1]) 
    packets_x.append(int(list(packet.split())[0])) 
    packets_y.append(int(list(packet.split())[1])) 
    packets_z.append(int(list(packet.split())[2])) 

while True: 
    for number in range(len(packets)): 
     if int(sorted(packets_x)[0]) == packets_x[number] and int(sorted(packets_y)[0]) == packets_y[number] and int(sorted(packets_z)[0]) == packets_z[number]: 
      print(packets[number]) 
      packets[number] = "a" 
      packets_x[number] = "a" 
      packets_y[number] = "a" 
      packets_y[number] = "a" 

    if packets.count("a") == len(packets) + 1: 
     break 

輸入我用:

6220 1 10 Because he's the hero Gotham deserves, 
6210 1 10 Asd 
<ENTER> 

<ENTER> - 點擊進入,實際上不鍵入。 逐行輸入輸入,不要一次全部輸入。

錯誤,我得到:

if int(sorted(packets_x)[0]) == packets_x[number] and int(sorted(packets_y)[0]) == packets_y[number] and int(sorted(packets_z)[0]) == packets_z[number]: 
TypeError: '<' not supported between instances of 'str' and 'int' 

難道這是某種Python的錯誤嗎?

+6

提示:在Python提示符處嘗試'sorted([1,「string」])',看看會發生什麼。 –

+4

你不使用'<',但'sorted()'做。 – Barmar

+0

哦,好的。謝謝!我不知道你不能一起使用數字和字符串。 – NemPlayer

回答

1

if語句不使用'<'符號,但sorted()函數沒有!

我收到錯誤,因爲sorted()函數無法對不同類型的變量進行排序。

如果我們嘗試sorted([1, "a string"]),您會收到錯誤消息,但如果我們嘗試sorted([5, 2]),則會生效。

該解決方案是基於Mark Dickinson和Barmar的評論編寫的。

相關問題