我正在做一个文本转换器,我想在已经存在的字符串中选择随机字符。
当我研究它时,出现的只是想在字母表中生成随机字母的人,或者想生成随机字符串的人。那不是我想要的。
new_string = ""
index = 0
for letter in input_text:
if letter not in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM":
new_string = new_string + (letter)
continue
index += 1
if index % 2 == 0:
new_string = new_string + (letter.upper())
else:
new_string = new_string + (letter.lower())
我现有的文本转换器将其他所有字母都大写,但是我希望它随机将这些字母大写。这可能吗?
答案 0 :(得分:1)
您可能希望查看random
库(内置)中的random.choice
and random.choices
函数,该函数使您可以从列表中随机选择一个项目:
>>> import random
>>> a = random.choice("ABCDabcd")
'C'
>>> my_text = "".join(random.choices("ABCDabcd", k=10))
'baDdbAdDDb'
为了随机大写,您可以从字母的小写和大写版本列表中choice
:
import random
new_string = ""
for letter in input_text:
if letter not in "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM":
new_string = new_string + (letter)
else:
new_string += random.choice([letter.upper(), letter.lower()])
(请注意,random.choices
返回一个list
,而不是str
,因此我们需要将join()
个元素放在一起。)
最后,您可能还想使用isalpha
函数:
>>> "A".isalpha()
True
>>> "a".isalpha()
True
>>> "7".isalpha()
False
但是upper()
和lower()
函数对非字母字符无效。因此,您可以从代码中完全删除此检查:
new_string = ""
for letter in input_text:
new_string += random.choice([letter.upper(), letter.lower()])