Conversion of string to upper case without inbuilt methods

uzhy picture uzhy · Apr 22, 2017 · Viewed 18.8k times · Source

I am trying to perform conversion from a lowercase to uppercase on a string without using any inbuilt functions (other than ord() and char()). Following the logic presented on a different thread here , I came up with this.

def uppercase(str_data):
   ord('str_data')
   str_data = str_data -32
   chr('str_data')
   return str_data
print(uppercase('abcd'))

However I am getting an error output: TypeError: ord() expected a character, but string of length 8 found.What am I missing here?

Answer

Maurice Meyer picture Maurice Meyer · Apr 22, 2017

You need to execute ord() for each character of your input string. instead of the input string:

def uppercase(str_data):
    return ''.join([chr(ord(char) - 32) for char in str_data if ord(char) >= 65])

print(uppercase('abcdé--#'))
>>> ABCDÉ

Without join:

def uppercase(str_data):
    result = ''
    for char in str_data:
        if ord(char) >= 65:
            result += chr(ord(char) - 32)
    return result
print(uppercase('abcdé--#λ'))
>>> ABCDÉΛ