在不使用包的情况下通过函数创建句子
Creating sentences by a function without using a package
我目前正在编写一个程序,该程序查看一个列表并将单词组合成句子,但每当我 运行 它时,我都会得到 [] 我不是 100% 确定为什么。这是我用于读取文件、创建句子和附加的列表片段的代码。
def import_file(text_file):
wordcounts = []
with open(text_file, encoding = "utf-8") as f:
pride_text = f.read()
sentences = pride_text.split(" ")
return sentences
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
if character=='.' or character=='?' or character=='!':
sentence_list.append(my_sentence)
my_sentence=""
else:
my_sentence=my_sentence + character
return sentence_list
Preview of List
调用我的函数
pride=import_file("pride.txt")
pride=remove_abbreviations_and_punctuation(pride)
pride=create_sentance(pride)
print(pride)
您的 return sentence_list
比应有的缩进了一位。在 for
的第一次迭代之后,如果 else
条件执行而不是 if
,那么你的函数 returns sentence_list
被初始化为 [ ]
.无论哪种方式,如果 sentence
的长度为 20 个字符,您的 for
只会 运行 一旦给定您的 return
调用所在的位置。
进行以下更改:
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
if character=='.' or character=='?' or character=='!':
sentence_list.append(my_sentence)
my_sentence=""
else:
# do you not want this in 'sentence_list'?
my_sentence=my_sentence + character
return sentence_list
您的函数 return 是一个空列表的原因是因为您的 return 在 for 循环内。此外,"character" 实际上是一个词,因为列表中的每个元素都是一个词。该程序有效:
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
print character
if '.' in character or '?' in character or '!' in character:
sentence_list.append(my_sentence + ' ' + character)
my_sentence=""
else:
my_sentence=my_sentence + ' ' + character
return sentence_list
create_sentance(['I','will','go','to','the','park.','Ok?'])
您需要使用 "in" 而不是 ==,因为每个字符都是一个单词。尝试打印 "character" 来查看。上面的程序有效并且 returns 结果
[' I will go to the park.', 'Ok?']
这就是你想要的。
我目前正在编写一个程序,该程序查看一个列表并将单词组合成句子,但每当我 运行 它时,我都会得到 [] 我不是 100% 确定为什么。这是我用于读取文件、创建句子和附加的列表片段的代码。
def import_file(text_file):
wordcounts = []
with open(text_file, encoding = "utf-8") as f:
pride_text = f.read()
sentences = pride_text.split(" ")
return sentences
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
if character=='.' or character=='?' or character=='!':
sentence_list.append(my_sentence)
my_sentence=""
else:
my_sentence=my_sentence + character
return sentence_list
Preview of List 调用我的函数
pride=import_file("pride.txt")
pride=remove_abbreviations_and_punctuation(pride)
pride=create_sentance(pride)
print(pride)
您的 return sentence_list
比应有的缩进了一位。在 for
的第一次迭代之后,如果 else
条件执行而不是 if
,那么你的函数 returns sentence_list
被初始化为 [ ]
.无论哪种方式,如果 sentence
的长度为 20 个字符,您的 for
只会 运行 一旦给定您的 return
调用所在的位置。
进行以下更改:
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
if character=='.' or character=='?' or character=='!':
sentence_list.append(my_sentence)
my_sentence=""
else:
# do you not want this in 'sentence_list'?
my_sentence=my_sentence + character
return sentence_list
您的函数 return 是一个空列表的原因是因为您的 return 在 for 循环内。此外,"character" 实际上是一个词,因为列表中的每个元素都是一个词。该程序有效:
def create_sentance(sentance):
sentence_list=[]
my_sentence=""
for character in sentance:
print character
if '.' in character or '?' in character or '!' in character:
sentence_list.append(my_sentence + ' ' + character)
my_sentence=""
else:
my_sentence=my_sentence + ' ' + character
return sentence_list
create_sentance(['I','will','go','to','the','park.','Ok?'])
您需要使用 "in" 而不是 ==,因为每个字符都是一个单词。尝试打印 "character" 来查看。上面的程序有效并且 returns 结果
[' I will go to the park.', 'Ok?']
这就是你想要的。