我需要这个例子:test(a1,c3,b2 ...)的随机名称和随机类型。
two.write("%s\n" "%s" % (names.get_first_name(), random.choice(random_list))
SyntaxError:语法无效
为什么?
import random
import names
random_list=["a1","a2","a3","b1","b2","b3","c1","c2","c3"]
with open("one.txt","w+") as one, \
open("two.txt","w+") as two, \
open("three.txt","w+") as three:
for i in range(0,3):
one.write("%s\n" "%s" %
(names.get_first_name(),random.choice(random_list))
two.write("%s\n" "%s" % (names.get_first_name(),
random.choice(random_list))
three.write("%s\n" "%s" % (names.get_first_name(),
random.choice(random_list))
答案 0 :(得分:1)
您忘记在每个写调用的末尾添加一个额外的括号。你有:
one.write("%s\n" "%s" % (names.get_first_name(),random.choice(random_list))
但是在该行的末尾,括号中的一个来自choice
,另一个括号来自%
之后的参数。 write
通话需要额外的括号。
one.write("%s\n" "%s" % (names.get_first_name(),random.choice(random_list)))
编辑:
您说:
但结果是Harry b2Rosemary b3Edward b1
我需要(harry-b2)(迷迭香-b3)(爱德华-b1)
在写调用中,您放入了"%s\n" "%s"
。在第一个%s
之后,有一个换行符,因此名称会在一行上,但是换行符将紧随其后,然后是列表中的随机数。您需要按以下方式调整模板:"%s-%s\n"
甚至是"(%s-%s)\n"
,如果您需要将结果放在方括号中。
所以最终的写法应该是:
one.write("%s-%s\n" % (names.get_first_name(),random.choice(random_list)))
或
one.write("(%s-%s)\n" % (names.get_first_name(),random.choice(random_list)))
当然,您需要将此应用于所有这些。 干杯!