Randomize upper and lower case strings

Is there a better / smarter way to randomize the upper letters in a string? Like this:

input_string = "this is my input string"
for i in range(10):
    output_string = ""
    for letter in input_string.lower():
        if (random.randint(0,100))%2 == 0:
            output_string += letter
        else:
            output_string += letter.upper()
    print(output_string)

      

Output:

thiS iS MY iNPUt strInG
tHiS IS My iNPut STRInG
THiS IS mY Input sTRINg
This IS my INput STRING
ThIS is my INpUt strIng
tHIs is My INpuT STRInG
tHIs IS MY inPUt striNg
THis is my inPUT sTRiNg
thiS IS mY iNPUT strIng
THiS is MY inpUT sTRing

      

+3


source to share


2 answers


You can use random.choice()

by selecting str.upper

and str.lower

:



>>> from random import choice

>>> s = "this is my input string"
>>> lst = [str.upper, str.lower]

>>> ''.join(choice(lst)(c) for c in s)
'thiS IS MY iNpuT strIng'

>>> [''.join(choice(lst)(c) for c in s) for i in range(3)]
['thiS IS my INput stRInG', 'tHiS is MY iNPuT sTRinG', 'thiS IS my InpUT sTRiNg']

      

+7


source


you can use a map and apply a random factor with a string to do it like this:



import random

StringToRandomize = "Test String"

def randomupperfactor(c):
   if random.random() > 0.5:
      return c.upper()
   else:
      return c.lower()

StringToRandomize =''.join(map(randomupperfactor, StringToRandomize))

      

+1


source







All Articles