In the block
for character in msg.upper():
if count_character[ord(character)] > max_letter:
max_letter = count_character[ord(character)]
count_hi = count_hi + 1
count_hi will be the number of times a different letter was selected as the one with the highest count, not the index of the letter. Just save the character to output it later, like
for character in msg.upper():
if count_character[ord(character)] > max_letter:
max_letter = count_character[ord(character)]
high_letter = character
print("Character" , high_letter , "appeared the most. It appeared", max_letter, "times.")
change the low check similarly and you should get back close to what you wanted