2016-12-07 90 views
-2

我被賦予了問題如下Python字典匹配的單詞

「標準輸入由字,每行一個序列的。 寫Python腳本名爲fruit.py只輸出那些水果字。只有五種水果:蘋果,橙子,香蕉和櫻桃。「例如如果標準輸入是「狗貓蘋果蛇櫻桃」標準輸出將是「蘋果櫻桃」。一段時間以來,我一直對字典有困難,所以任何幫助都將不勝感激!

import sys 

fruit = { 
    "apple": True, 
    "pair": True, 
    "orange": True, 
    "banana": True, 
    "cherry": True, 
} 

n = sys.stdin.readlines() 

i = 0 
while i < len(n): 
    if n[i] in fruit: 
     fruit[n[i]] = False 
     sys.stdout.write() (n[i]) 
    i = i + 1 
+1

你提供什麼是與代碼問題了嗎? –

+0

這不是一個codecademy問題嗎? – WhatsThePoint

回答

0

你並不需要在你的情況字典做,簡單的列表就足夠了:

fruits = ['apple', 'pair', 'orange', 'banana', 'cherry'] 

現在,你可以檢查的項目是在此列表中象下面這樣:

if item in fruits: 
    # do something! 

在你的情況,你可以做的是:

for item in n: 
    if item in fruits: 
     sys.stdout.write(n) 
+1

'set'會更好 –

+0

對於5個元素的列表,它不需要使用'set';) – ettanany

0

通常情況下,您會使用一組或列表來存儲水果,但從時間複雜度來看,當水果清單非常長時,使用字典是正確的選擇。該代碼,這將是

import sys 

fruit = { 
    "apple": True, 
    "pair": True, 
    "orange": True, 
    "banana": True, 
    "cherry": True, 
} 

n = sys.stdin.readlines() 

i = 0 
while i < len(n): 
    if fruit[n[i]]: 
     sys.stdout.write() (n[i]) 
    i = i + 1 

當然也有很多有效的方式做到這一點,但我只是給了答案最最小的改動你的代碼。

0

你可以試試:

>>> fruits = ["apple", "pair", "orange", "banana", "cherry"] 
>>> n = input("Enter statement :") 
Enter statement :dog cat apple snake cherry 
>>> n_list = n.split() 
>>> for i in n_list: 
    if i in fruits: 
     fruits_found.append(i) 


>>> fruits_found 
['apple', 'cherry'] 
>>> " ".join(fruits_found) 
'apple cherry'