python - 将随机字母分配给变量,但每个字母在 Python 中必须出现 2 次或 4 次
问题描述
如何为变量分配随机字母并确保每个字母必须分配 2 次或 4 次?我对分配随机字母没有问题,但我在后面的部分遇到了很大的麻烦。
这是我当前的代码,肯定有问题,但我不知道如何解决:
import random
import string
def assign():
alphabet = string.ascii_uppercase
n1 = random.choice(alphabet)
n2 = random.choice(alphabet)
n3 = random.choice(alphabet)
n4 = random.choice(alphabet)
n5 = random.choice(alphabet)
n6 = random.choice(alphabet)
n7 = random.choice(alphabet)
n8 = random.choice(alphabet)
alphabet = string.ascii_uppercase
n1 = random.choice(alphabet)
n2 = random.choice(alphabet)
n3 = random.choice(alphabet)
n4 = random.choice(alphabet)
n5 = random.choice(alphabet)
n6 = random.choice(alphabet)
n7 = random.choice(alphabet)
n8 = random.choice(alphabet)
if ((n1+n2+n3+n4+n5+n6+n7+n8).count(random.choice(alphabet))) != 2 or 4:
assign()
else:
print(n1,n2,n3,n4,n5,n6,n7,n8)
如何修复它,以便将任何随机分配的字母分配给另一个变量或 3 个以上?(指定的字母出现 2 或 4 次)。
解决方案
这是你想要的吗?
import string
import random
number_of_variables_to_create = 8
print(
[
''.join(
random.choice(string.ascii_uppercase)
for _ in range(random.choice([2, 4]))
) for _ in range(number_of_variables_to_create + 1)
]
)
输出:一个8
随机字符串列表,长度为 2
或4
字符长。您可以将这些字符串分配给变量。
['JV', 'CRFQ', 'DA', 'KSPW', 'NVRB', 'MQOM', 'IB', 'QD', 'EU']
要添加和访问变量,请尝试以下操作:
import string
import random
number_of_variables_to_create = 8
strings = [
''.join(
random.choice(string.ascii_uppercase)
for _ in range(random.choice([2, 4]))
) for _ in range(number_of_variables_to_create + 1)
]
for idx, _string in enumerate(strings, start=1):
globals()[f"n{idx}"] = _string
print(strings)
print(globals()["n1"])
样本输出:
['BZJV', 'EBYL', 'NW', 'IDVU', 'VUGJ', 'IP', 'PJ', 'HW', 'IE']
BZJV
推荐阅读
- sql-server - 在 group by 中创建升序 ID
- python - 有没有办法在 python3.7 中管理多个模块版本
- sql - 当一个表有多个对应值时连接两个表
- angular - 角度拖放:如何防止项目被拖放到不需要的列表中
- c++ - 将 enable_shared_from_this 与智能指针一起使用
- pandas - 多索引问题 - 请您更正该问题,因为输出显示为“Nan”
- blazor - Blazor 对象序列化被截断
- css - 如何覆盖一个 ion-popover element.style css
- typescript - 为什么任何条件类型的工作方式不同?
- php - 向 $row_data['email'] 发送电子邮件