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 to share
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 to share