[英]Generate random sentences in python
我对python和编程很陌生!
我需要编写一个程序,它有 4 个元组,每个元组有 5 个元素。 一个元组应该有动词,一个元组应该有名词,一个元组应该有形容词,一个元组应该有副词。 然后我必须使用 0 到 4 之间随机生成的数字来从每个元组中选择一个元素。 这是我到目前为止:
import random
nouns = ("puppy", "car", "rabbit", "girl", "monkey")
verbs = ("runs", "hits", "jumps", "drives", "barfs")
adv = ("crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally.")
adj = ("adorable", "clueless", "dirty", "odd", "stupid")
num = random.randrange(0,5)
print (num)
有人可以告诉我我做错了什么吗?
您可以在列表理解中使用random.choice
然后将所选列表与join
:
>>> l=[nouns,verbs,adj,adv]
>>> ' '.join([random.choice(i) for i in l])
'girl runs dirty crazily.'
>>> ' '.join([random.choice(i) for i in l])
'monkey hits clueless occasionally.'
最简单的理解方法:
import random
nouns = ("puppy", "car", "rabbit", "girl", "monkey")
verbs = ("runs", "hits", "jumps", "drives", "barfs")
adv = ("crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally.")
adj = ("adorable", "clueless", "dirty", "odd", "stupid")
num = random.randrange(0,5)
print nouns[num] + ' ' + verbs[num] + ' ' + adv[num] + ' ' + adj[num]
对于返回所有可能排列的已接受答案的类似函数:
import random
def make_random_sentence():
nouns = ["puppy", "car", "rabbit", "girl", "monkey"]
verbs = ["runs", "hits", "jumps", "drives", "barfs"]
adv = ["crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally."]
adj = ["adorable", "clueless", "dirty", "odd", "stupid"]
random_entry = lambda x: x[random.randrange(len(x))]
return " ".join([random_entry(nouns), random_entry(verbs), random_entry(adv), random_entry(adj)])
如果要为每个元组选择始终相同的索引,请尝试以下操作:
import random
idx = random.randrange(0, 5)
print ("%s %s %s %s"%(nouns[idx], verbs[idx], adv[idx], adj[idx]))
如果你想为每个元组获取随机元素,以下应该有效:
import random
print("%s %s %s %s"%(random.choice(nouns), random.choice(verbs), random.choice(adv), random.choice(adj))
num = random.randrange(0,5)
print (num)
只是给你你生成的随机数。 您需要使用像这样生成的随机数来访问元组。
print(nouns[num])
print(verbs[num])
print(adv[num])
print(adj[num])
我会做如下,使用 random.choice 因为它是一个比 random.randrange 更好的选择......
words = (adj, nouns, verb, adv)
sentence = "".join(choice(word) for word in words)
random.choice
是从列表、元组或类似容器中随机选择一个东西。 最后一行的作用是从每个列表中随机选择一个事物,并从选择中创建一个新列表。 然后打印该列表。 在循环中,无论用户输入什么数字,都会执行 X 次。
from random import choice
nouns = ("puppy", "car", "rabbit", "girl", "monkey")
verbs = ("runs", "hits", "jumps", "drives", "barfs")
adv = ("crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally.")
adj = ("adorable", "clueless", "dirty", "odd", "stupid")
# asking user as to how many sentences he would like to generate
for _ in range (int (input ("Enter integer value :"))):
print(list(map(choice, [nouns, verbs, adv, adj])))
Enter integer value :2
['car', 'barfs', 'dutifully.', 'odd']
['rabbit', 'runs', 'occasionally.', 'clueless']
[Program finished]
这是一个简单的,如果你想要多个句子可能,使用这个:
nouns = ("puppy", "car", "rabbit", "girl", "monkey")
verbs = ("runs", "hits", "jumps", "drives", "barfs")
adv = ("crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally.")
adj = ("adorable", "clueless", "dirty", "odd", "stupid")
print(nouns[random.randrange(0,5)] + ' ' + verbs[random.randrange(0,5)] + ' '
+ adv[random.randrange(0,5)] + ' ' + adj[random.randrange(0,5)])
import random
nouns = ("puppy", "car", "rabbit", "girl", "monkey")
verbs = ("runs", "hits", "jumps", "drives", "barfs")
adv = ("crazily.", "dutifully.", "foolishly.", "merrily.", "occasionally.")
adj = ("adorable", "clueless", "dirty", "odd", "stupid")
num = random.randrange(0,5)
print(nouns[num],verbs[num],adv[num],adj[num])
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.