【发布时间】:2016-11-03 18:53:44
【问题描述】:
我在学校被分配了一项任务(我将复制粘贴详细信息,因为它会比我更好地解释它)
开发一个程序,识别句子中的单个单词,将它们存储在一个列表中,并将原始句子中的每个单词替换为该单词在列表中的位置。
例如句子
ASK NOT WHAT YOUR COUNTRY CAN DO FOR YOU ASK WHAT YOU CAN DO FOR YOUR COUNTRY
包含ASK、NOT、WHAT、Your、COUNTRY、CAN、DO、FOR、YOU 可以使用序列从这些单词在此列表中的位置重新创建句子
1,2,3,4,5,6,7,8,9,1,3,9,6,7,8,4,5
将单词列表和这些单词在句子中的位置保存为单独的文件或单个文件。
分析此系统的要求并设计、开发、测试和评估程序以:
- 识别句子中的单个单词并将它们存储在列表中
- 为该列表中的单词创建一个位置列表
- 将这些列表保存为单个文件或单独的文件。
_
到目前为止,我已经能够将单词写入文件但不能写入数字 - 我只得到数字 1 - 非常欢迎任何帮助:)
words=['ASK','NOT','WHAT','YOUR','COUNTRY','CAN','DO','FOR','YOU','ASK','WHAT','YOU','CAN','DO','FOR','YOUR','COUNTRY']
word_raw = ['ASK','NOT','WHAT','YOUR','COUNTRY','CAN','DO','FOR','YOU']
numbers = ['']
if 'ASK' in words:
numbers.append('0')
numbers.append('9')
if 'NOT' in words:
numbers.append('1')
if 'WHAT' in words:
numbers.append('2')
numbers.append('10')
if 'YOUR' in words:
numbers.append('3')
numbers.append('15')
if 'COUNTRY' in words:
numbers.append('4')
numbers.append('16')
if 'CAN' in words:
numbers.append('5')
numbers.append('12')
if 'DO' in words:
numbers.append('6')
numbers.append('13')
if 'FOR' in words:
numbers.append('7')
numbers.append('15')
if 'YOU' in words:
numbers.append('8')
numbers.append('11')
print (numbers)
for x in range(len(words)):
MyFile = open('Task2File.txt', 'w')
with open("Task2File.txt", mode="w",encoding="utf-8") as my_file:
for words in word_raw:
my_file.write(words+"\n")
for x in range(len(numbers)):
MyFile = open('Task2FileNumbers.txt', 'w')
with open("Task2FileNumbers.txt", mode="w",encoding="utf-8") as my_file:
for numbers in numbers:
my_file.write(numbers+"\n")
print (numbers)
【问题讨论】:
-
您的 for 循环似乎有问题,特别是
for numbers in numbers。您可能想要更像for number in numbers的东西(并更改后续引用以使用number)。此外,无需像您一样分配MyFile值。 -
for word in words: print(words.index(word))?也许它不是很清楚 -
@JoranBeasley 这不会真正起作用,因为
.index()方法将返回单词的最左侧索引,因此如果句子/列表中有多个单词,它将始终为两次出现返回完全相同的索引。可以选择将额外的 start 参数传递给.index(sub[, start[, end]])方法,但这是另一回事。 -
@Nf4r 根据他的输出数字,我认为这就是他想要的(参见重复的 3)