How to Fix String Casing in Python

The challenge

You will be given a string that may have mixed uppercase and lowercase letters and your task is to convert that string to either lowercase only or uppercase only based on:

  • make as few changes as possible.
  • if the string contains equal number of uppercase and lowercase letters, convert the string to lowercase.

For example:

solve("coDe") = "code". Lowercase characters > uppercase. Change only the "D" to lowercase. solve("CODe") = "CODE". Uppercase characters > lowecase. Change only the "e" to uppercase. solve("coDE") = "code". Upper == lowercase. Change all to lowercase.
Code language: JavaScript (javascript)

The solution in Python code

Option 1:

def solve(s): lower = 0 for c in list(s): if c.lower()==c: lower += 1 return s.lower() if lower>=len(s)/2 else s.upper()
Code language: Python (python)

Option 2:

def solve(s): return (s.lower, s.upper)[sum(map(str.isupper, s)) > len(s) / 2]()
Code language: Python (python)

Option 3:

def solve(s): upper = 0 lower = 0 for char in s: if char.islower(): lower += 1 else: upper += 1 if upper == lower or lower > upper: return s.lower() else: return s.upper()
Code language: Python (python)

Test cases to validate our solution"Basic tests") test.assert_equals(solve("code"),"code") test.assert_equals(solve("CODe"),"CODE") test.assert_equals(solve("COde"),"code") test.assert_equals(solve("Code"),"code")
Code language: Python (python)
Notify of
Inline Feedbacks
View all comments