2016-04-21 30 views
2

使用Python自動化煩人的東西在第8章中有一個項目: 創建一個Mad Libs程序,該程序讀入文本文件並允許用戶在ADJECTIVE,NOUN,ADVERB或VERB出現在文本文件中。使用Python的Mad Lib程序

它需要創建新的文本文件並將結果打印到屏幕上。

我的解決方案導致創建一個空白的新文件,並在終端中不顯示任何內容。我使用Python 3.5.1在OS X

#! /usr/bin/env python3 


with open("/Users/Maverick/madLibProject1.txt", "wt") as fout: 
    with open("/Users/Maverick/madLibProject.txt", "r") as fin: 
     for line in fin: 
      if line == "ADJECTIVE": 
       adj == input('Enter an adjective:\n') 
       fout.write(line.replace('ADJECTIVE', adj)) 
      elif line == "NOUN": 
       nou == input('Enter a noun:\n') 
       fout.write(line.replace('NOUN', nou)) 
      elif line == "ADVERB": 
       adv = input('Enter an adverb:\n') 
       fout.write(line.replace('ADVERB', adv)) 
      elif line == "VERB": 
       ver = input('Enter a verb:\n') 
       fout.write(line.replace('VERB', ver)) 

fname = "/Users/Maverick/madLibProject1.txt" 
project = open(fname, 'r') 
data = project.read() 
print(data) 
+0

'madLibProject.txt'的內容是什麼? – Chris

+0

你的問題是什麼?順便說一句,如果一個輸入行包含比「NOUN」等更多的單詞,那麼'=='測試不會做你想做的事情,特別是。如果該行包含多個替代詞。 – Jerry101

+0

如果你在調試器中逐步完成程序,或者至少做一個手動模擬程序運行的準確工作,一步一步,你會發現多個問題。 – Jerry101

回答

0

看看這個代碼:

data = "a ADJECTIVE NOUN VERB ADVERB to the NOUN to VERB some NOUN" 
for part_of_speech in ["ADJECTIVE", "NOUN", "ADVERB", "VERB"]: 
    while data.find(part_of_speech) > -1: 
     data = data.replace(part_of_speech, input("enter a %s: " % (part_of_speech.lower())), 1) 

print(data) 

一些事情,這將有助於您瞭解這個〔實施例:

也嘗試在您的for循環下添加print(line)以更好地理解您的程序。正如其他人所說的那樣,調試技巧是您在開發編程時將學到的最重要的內容之一。