What does upper() do here?
def print_formatted(number):
    max_width = len(bin(number)[2:])
    for i in range(1,number+1):
        print(str(i).rjust(max_width)  + " " +oct(i)[2:].rjust(max_width) + " " +(hex(i)[2:].upper()).rjust(max_width) + " " +bin(i)[2:].rjust(max_width))
        
    
    
    
if __name__ == '__main__':
    n = int(input())
    print_formatted(n)
I understood all code, I just didn't understand what upper() does in this specific code. I'm a beginner
