我想在輸入中搜索關鍵字,我已經問了用戶,如果關鍵字在輸入中我想我的代碼打開特定的文本文件(我使用蛋糕作爲例子。但如果沒有找到任何關鍵字,我希望它再次提出問題。嵌套和打破循環
但是我在結束循環時遇到了問題,因爲它一直在問這個問題。我儘量保持我的代碼儘量少,但我總是可以如果報應發佈更多。
keywords1 = ['jam', 'victoria', 'sponge', 'recipe', 'ingredients']
keywords2 = ['chocolate', 'cake']
keywords3 = ['tiramisu']
def test1():
global keywords1, keywords2, keywords3, query
for i in keywords1:
if i in query:
f=open('Victoria.txt','r')
f.read = f.read()
for i in range(0,1):
print(f.read)
f.close()
for i in keywords1:
if i not in query:
question1()
break
def question1():
global query
query = input("\nWhat ingredients do you want?\nmake sure to include the keywords\n")
test1()
if __name__ == "__main__":
question1()
那麼我想這再次n
量的時間,因爲它只有一個循環工作,任何幫助將是appre ciated。
我不確定這個示例代碼如你所願。 'f.read = f.read()'這行基本上沒有任何作用。它將'f'實例的'read()'方法重新分配給'read()'。基本上,你正在做'x = x'。我相信你的意思是把'f.read()'調用的結果存儲到一個變量中,以便在後面的for循環中打印,但即使這樣循環也很混亂,因爲你只需要調用print什麼是對文件句柄實例的'read'方法的引用。另外,在嵌套迭代器中重用'i'值通常是不好的做法。 – Sam
謝謝你的幫助,所以你有什麼建議應該看起來像什麼? –
舉例來說,如果查詢中的單詞爲: 並且打開('Victoria.txt','r')爲f: print(f.read()),那麼我會將它寫成更像'for word in keywords1: 因爲''with'語句爲你處理一些基本的文件開放東西。這是您將學習更多Python暴露的東西,但您的方法並非「錯誤」。 – Sam