您好我正在尝试为小行星类型和名称制作一个生成器。成品应该是这样的项目:
MUS-786 A Type
AKL-675 C Type
BHF-877 B Type
等
我已经有了制作数字字符串的代码,以及带有连字符的字母:
import string, random
def pick(num):
for j in range(num):
print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])
它工作得很好,但我也试图将一个随机的小行星类型(A型,B型,C型)
这是我正在使用的最终代码:
import string, random
def pick(num):
for j in range(num):
print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join([random.randint('A Type','B Type','C Type')])
这给了我一个错误,说解析时有意外的EOF。
EOF
是什么意思?我该怎么做才能解决这个问题?
答案 0 :(得分:0)
import string, random
def pick(num):
for j in range(num):
print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+"".join(random.sample(['A Type','B Type','C Type'], 1)))
这会奏效。我将random.randint
替换为random.sample
并删除[]
周围的random.randint
,因为random.sample
会返回一个列表。
您也可以使用此作为最后一行,使用random.choice()
:
print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)])+" "+ random.choice(['A Type','B Type','C Type']))
答案 1 :(得分:0)
您可以使用random.choice
从列表中获取随机值,然后将其添加到您的代码中:
import string, random
def pick(num):
for j in range(num):
print("".join([random.choice(string.ascii_uppercase) for i in range(3)])+"-"+"".join([random.choice(string.digits) for i in range(3)]+" "+random.choice(["A", "B", "C"])+" Type")
因此:
>>> pick(5)
MYO-078 B Type
TYR-215 C Type
IDY-604 C Type
FRA-272 A Type
WLJ-576 A Type
>>> pick(0)
>>> pick(3)
NEJ-767 A Type
PVD-879 C Type
ACP-344 A Type