2016-03-04 121 views
-9

使用食品對象清單 從食品清單中刪除非素食食品 使用遞歸算法 僅返回素食食品。從食物清單中刪除非素食食物。

這是問題,但它讓我感到困惑,因爲它需要使用輔助功能。

有人能解釋給我嗎?

的食品中(food.txt)名單看起來像:

Spicy Vegetable Moo Shu|1|True|140 

BBQ Pork|1|False|920 
+1

對不起,你的問題不清楚,因爲它是,你有什麼要解釋呢? –

+0

該列表甚至不是python中的有效列表 – danidee

+3

請您[教授或TA](http://bohr.wlu.ca/cp164/asgns/asgn07.php?d=2016-03-04)澄清。或者不要,正如頁面上的描述一樣。 – 2016-03-04 09:06:59

回答

0
def veggie_r_ip(foods, curIndex): 
    if(curIndex >= len(foods)): 
     return 
    curFood = foods[curIndex] 
    is_veggie = curFood.split('|')[2] 
    if is_veggie == "False": 
     foods.remove(curFood) 
     veggie_r_ip(foods, curIndex) 
    else: 
     veggie_r_ip(foods, curIndex + 1) 

def main(): 
    foods =['Spicy Vegetable Moo Shu|1|True|140', 'BBQ Pork|1|False|920', 'Chicken Breast|1|False|920', 'Salad|1|True|920'] 
    veggie_r_ip(foods, 0) 
    print foods 
+0

非常感謝,知道這很清楚。 –

0

當它說使用遞歸,這意味着你應該從功能定義中調用該函數。例如,讓你開始:

def recurse(inputs_list): 
    if('b' in inputs_list): 
     inputs_list.remove('b') 
     return recurse(inputs_list) 
    return inputs_list 


inputs =['a', 'b', 'c', 'b', 'c', 'd', 'e', 'b', 'e', 'f', 'b'] 

print recurse(inputs) 

輸出:

>>['a', 'c', 'c', 'd', 'e', 'e', 'f'] 

您使用遞歸,因爲一個.remove()將刪除與搜索字符串匹配的第一個元素。

+0

你是對的,但在它需要使用遞歸輔助函數的問題。 –

+0

輔助功能是什麼?描述中說:「從食物清單中刪除非素食食物,使用遞歸算法 使用:veggie_r_ip(食物)」,它與父函數完全相同。 – Chris

0

假設list,你可以使用recursion作爲,

>>> foods = ['Spicy Vegetable Moo Shu|1|True|140', 'BBQ Pork|1|False|920', 'Chicken Breast|1|False|920', 'Salad|1|True|920'] 
>>> def veggie_r_ip(foods): 
...   for f in foods: 
...    is_veggie = f.split('|')[2] 
...    if is_veggie == 'False': 
...     foods.remove(f) 
...     veggie_r_ip(foods) 
...   return foods 
... 
>>> veggie_r_ip(foods) 
['Spicy Vegetable Moo Shu|1|True|140', 'Salad|1|True|920'] 
+0

輔助功能在哪裏? :) – zelite

+0

謝謝,訣竅是如何用輔助函數來回答它。 –

+0

我很難理解輔助功能 –