【发布时间】:2017-08-18 17:56:19
【问题描述】:
我正在尝试编写一个程序,该程序将形成随机句子,这些句子可以重复传递给 for 循环,以通过使用 random.choice()、变量和列表每次生成不同的输出。一个示例如下所示:
list_0 = ["string1", "string2", "string3", "string4"]
variable_0 = random.choice(list_0)
list_1 = ["string1", "string2", "string3", "string4"]
variable_1 = random.choice(list_1)
list_2 = ["string1", "string2", "string3", "string4"]
variable_2 = random.choice(list_2)
在我形成主语、连词、名词、动词等的列表后,然后我将它们传递给与所述列表中的一个随机选择等效的变量。此时有几种方法可以打印句子,想法是程序将从每个列表中选择一个随机单词并按 _0 _1 和 _2 的顺序打印出来,因此句子将是随机的但符合语法。 我已经尝试列出所有变量并像这样随机化这些变量
list_3 = [list_0, list_1, list_2]
random.choice(list_3)
但是这一次只会打印一个选项,而且我需要整个随机句子,所以我尝试了
list_3 = [list_0 + list_1 + list_2]
虽然这确实打印了整个随机句子,但一旦它进入 for 循环,它只会在停止之前打印一次,我认为这是因为它没有被告知要多次评估,例如:
for line in list_3:
try:
print(line)
if line !='\n':
#do function
sleep(10)
else:
pass
except:
#do function
sleep(2)
即使使用 sleep 函数,脚本也会在 1 次迭代后停止,所以我在顶部尝试了一个“while True”循环,虽然这迫使该函数多次打印,但输出是重复的,而不是另一个随机句子。示例:
while True:
for line in list_3:
try:
print(line)
if line !='\n':
do function
sleep(10)
else:
pass
except:
#do function
sleep(2)
这是我卡住的地方,从我可以看到随机函数只将一个随机句子传递给我的 for 循环,所以当 while 循环再次运行 for 循环时,它只会打印前一个句子。对于每次新的迭代,我能做些什么来为我的 for 循环传递一个与前一个不同的句子吗?我很乐意帮助我还是个新手。
【问题讨论】:
-
因为 list_3 只包含 1 个元素,random.choice() 永远不会返回超过 1 个结果。
标签: python