How can I improve this code?
#import sys
#sys.setrecursionlimit(1500)
def get_input():
input_str = input("Enter elements to be sorted: ")
try:
lst = list(map(int, input_str.split()))
except:
raise TypeError("Please enter a list of integers only, seperated by a space!!")
return lst
def merge(thelist, start_idx, mid_idx, last_idx):
size_left = mid_idx - start_idx + 1
size_right = last_idx - mid_idx
left_lst = []
right_lst = []
for i in range(size_left):
left_lst.append(thelist[start_idx + i])
for j in range(size_right):
right_lst.append(thelist[mid_idx + 1 + j])
left_idx = 0
right_idx = 0
curr_idx = start_idx
while left_idx < size_left and right_idx < size_right:
if left_lst[left_idx] <= right_lst[right_idx]:
thelist[curr_idx] = left_lst[left_idx]
left_idx += 1
else:
thelist[curr_idx] = right_lst[right_idx]
right_idx += 1
curr_idx += 1
while left_idx < size_left:
thelist[curr_idx] = left_lst[left_idx]
curr_idx += 1
left_idx += 1
while right_idx < size_right:
thelist[curr_idx] = right_lst[right_idx]
curr_idx += 1
right_idx += 1
def merge_sort(thelist, start_idx, last_idx):
if len(thelist) == 0:
print("Empty list!!")
elif len(thelist) == 1:
print("Only one element!!")
elif start_idx < last_idx:
mid_idx = int((start_idx + last_idx) / 2)
merge_sort(thelist, start_idx, mid_idx)
merge_sort(thelist, mid_idx + 1, last_idx)
merge(thelist, start_idx, mid_idx, last_idx)
if __name__ == '__main__':
input_list = get_input()
merge_sort(input_list, 0, len(input_list) - 1)
print(*input_list, sep = ", ")