这是句子生成器程序的代码。它要求用户制作介词短语,这是可选的(它可以以一定的概率出现。)我不知道如何使短语成为可选的。
import random
articles = ("A", "THE")
nouns = ("BOY", "GIRL", "BAT", "BALL",)
verbs = ("HIT", "SAW", "LIKED")
prepositions = ("WITH", "BY")
def sentence():
"""Builds and returns a sentence."""
return nounPhrase() + " " + verbPhrase()
def nounPhrase():
"""Builds and returns a noun phrase."""
return random.choice(articles) + " " + random.choice(nouns)
def verbPhrase():
"""Builds and returns a verb phrase."""
return random.choice(verbs) + " " + nounPhrase() + " " + prepositionalPhrase()
def prepositionalPhrase():
"""Builds and returns a prepositional phrase."""
return random.choice(prepositions)+ " " + nounPhrase()
def main():
"""Allows the user to input the number of sentences to generate."""
number = input("Enter the number of sentences: ")
for count in xrange(0, number):
print sentence()
main()
答案 0 :(得分:1)
你可以重写你的介词函数,看起来像这样:
def prepositionalPhrase(chance = 0.5):
"""Builds and returns a prepositional phrase."""
return random.choice(prepositions)+ " " + nounPhrase() if random.random() < chance else ""
random.random()
函数返回0到1之间的随机数,这里我们有一个参数机会,默认值为0.5(50%),如果随机数为0,则返回random.choice(prepositions) + " " + nounPhrase()
0到1小于偶然,否则它将返回一个空字符串。您不必将值传递给此函数preprositionalPhrase
,因为如果不这样做,它将只使用默认值0.5。如果你想做一些与这个解决方案略有不同的事情,希望我的回答能为你提供一个起点,帮助你形成自己的解决方案。
答案 1 :(得分:0)
您可以让您的用户传入命令行参数,说明他们是否需要介词短语,然后使用OptionParser解析它。
parser = OptionParser()
parser.add_option("-p", "--preposition", dest="prep_phrase", help="Give me a sentence with a prepositional phrase")
...
(options, args) = parser.parse_args()
if options.prep_phrase:
...
然后你的用户会用“./create_sentence.py -p”调用该程序,如果他们在句子中想要一个介词短语。