Я хочу создать список / массив с буквами, а затем попросить мою программу выбрать один из них, но я хочу, чтобы он был случайным образом в нижнем и верхнем регистре

Я могу использовать это:

list = "A", "a", "B", "b"
print(random.choice(list))

Но есть ли способ просто добавить одну букву в список, а затем сделать случайным образом случайным образом прописные буквы

-3
verbids 24 Июн 2019 в 10:40

4 ответа

Лучший ответ

Вы можете создать список заглавных символов, используя str.upper и выполните random.choice.

Кроме того, поскольку list является встроенным именем Python, не используйте его в качестве переменной

import random

#List of lowercase characters
li = ["a", "b"]

#Add list of all uppercase characters to original list
li += [item.upper() for item in li]
#['a', 'b', 'A', 'B']

print(random.choice(li))

Кроме того, есть более простой способ сделать это без необходимости создавать список всех букв, как указано в @deceze в комментариях, используя string.ascii_letters, представляющий собой список прописных и строчных букв ascii

import string
print(random.choice(string.ascii_letters))
2
Devesh Kumar Singh 24 Июн 2019 в 07:56

Я предлагаю решение на тот случай, если в начальном списке вы можете использовать как прописные, так и строчные буквы, и вы хотите охватить все варианты. Идея состоит в том, что вы выбираете случайным образом один из них, а затем выбираете случайным образом его капитализацию или снижение.

from random import choice, getrandbits

res = choice(my_letters).lower() if getrandbits(1) else choice(my_letters).capitalize()

Итак, предполагая:

my_letters = ['x', 'L']

Вы можете получить все 4 из 'x', 'X', 'L' и 'l' с одинаковой вероятностью.


Обратите внимание, что причина, по которой я использую getrandbits, описана подробно здесь

0
Ev. Kounis 24 Июн 2019 в 07:59

Вы можете написать простую функцию, чтобы сделать это для каждой буквы или полного текста:

import random

def random_case(text):
    return text.upper() if random.randint(0,1) == 1 else text.lower()

your_list.append(random_case("a"))
0
Florian H 24 Июн 2019 в 07:46

Это тоже будет работать:

import numpy as np

letters = ["a","b","c"]
choice = np.random.choice(letters)

if np.random.uniform(0,1) < 0.5:
    choice = choice.upper()
-1
Nakor 24 Июн 2019 в 08:05