Hi guys, the code is working, but I want know, what I can improve on this code. It is like implementation of the simulation of shipment clearance in the depot according to priority and available deliveries. How can I do it better? Can u show me? Thnx for your time. Input:
24 K 13 H 25 R 1 M -4 T0 15 G 4 C -1 T1 -3 T2 12 Y Code: import sys class MaxHeap: def __init__(self): self.heap =[] def bubble_up(self, i): while i > 0: j = (i - 1) // 2 if self.heap[i] <= self.heap[j]: break self.heap[j], self.heap[i] = self.heap[i], self.heap[j] i = j def insert(self, k): self.heap += [k] self.bubble_up(len(self.heap) - 1) def peek(self): return self.heap[0] def size(self): return len(self.heap) def is_empty(self): return self.size() == 0 def bubble_down(self, i): n = self.size() while 2 * i + 1 < n: j = 2 * i + 1 if j + 1 < n and self.heap[j] < self.heap[j + 1]: j += 1 if self.heap[i] < self.heap[j]: self.heap[i], self.heap[j] = self.heap[j], self.heap[i] i = j def pop(self): element = self.heap[0] self.heap[0] = self.heap[-1] self.heap.pop() self.bubble_down(0) return element y = sys.stdin.read().splitlines() z = list() for line in y: row=list(map(str, line.split())) z.append(row) def checking(a): for char in a: if char not in "0123456789-": return False return True for i in range (len(z)): for j in range (len(z[i])): d=z[i][j] if d.isdigit() is True: z[i][j]=int(z[i][j]) q=checking(d) if q is True: z[i][j]=int(z[i][j]) H=MaxHeap() for t in range (len(z)): if z[t][0]>0: H.insert(z[t]) if z[t][0] < 0: print(z[t][1],sep="",end="") print(": ",end="") e=z[t][0] while e<0 and (H.is_empty()) is False: u=H.pop() print(u[1],end=" ") e=e+1 print("") print("Depo: ",end="") while (H.is_empty()) is not True: u_1=H.pop() print(u_1[1],end=" ") Output: T0: R K H M T1: G T2: C Depo: Y -- https://mail.python.org/mailman/listinfo/python-list