2013-11-22 48 views
0

嘿即時通訊在Python上製作一個簡單的小雜貨清單。我知道這不是最雄辯的......但我現在只是在學習語法。我想進入學習Django。Python嵌套如果

list = [] 

def makeList(): 
    listing = True 
    while listing: 
     addTo = raw_input("Add to list: ") 

     if addTo == 'q': 
      listing = False 
     else: 
      list.append(addTo) 

def checkList(): 
    if check in list: 
     print "Yay there is " + check + " here" 
    else: 
     print "No you have not added that..." 
     addAnother = raw_input("Would you like to add it? ") 
     if str.lower(addAnother) == "yes": 
      list.append(check) 
     elif str.lower(addAnother) == "no": 
      print "Okay then here is your list." 
      print list 
     else: 
      print check 

makeList() 

check = raw_input("What item: ") 

checkList() 

我知道它很複雜,很難理解O_O ...但你可以看到,如果嵌套,當你運行它語句不登記。

這是做什麼的?我認爲這是問這個問題的最好方法。

+3

請問您可以添加輸出嗎?直到我們知道代碼輸出的內容(以及它應該輸出什麼內容)之前,很難確切地說出問題所在。 –

+1

你的代碼沒有問題。有什麼問題? – aIKid

+2

我只是跑它,它工作正常。你可能想解釋你看到的是什麼樣的行爲,以及你希望幫助人們弄清楚什麼是錯的。也許你期望它在不存在的情況下就像循環一樣。也許你已經混合了製表符和空格,並且你的縮進被打破了,但是你的代碼在這裏沒有明顯的錯誤。 –

回答

1

我已經重寫了一下,使它更清潔,更Pythonic;

def get_list(prompt, halt): 
    lst = [] 
    while True: 
     item = raw_input(prompt) 
     if item == halt: 
      return lst 
     else: 
      lst.append(item) 

def check_list(lst, item): 
    if item in lst: 
     print('Yay there is {} here'.format(item)) 
     return True 
    else: 
     print('No you have not added {}'.format(item)) 
     return False 

def get_yesno(prompt): 
    while True: 
     yesno = raw_input(prompt).lower() 
     if yesno in {'y', 'yes'}: 
      return True 
     elif yesno in {'n', 'no'}: 
      return False 

def main(): 
    mylist = get_list('Add to list:', 'q') 

    check = raw_input('Look for item:') 
    if not check_list(mylist, check): 
     if get_yesno('Would you like to add it?'): 
      mylist.append(check) 

    print(mylist) 

if __name__=="__main__": 
    main() 

一些樣式提示:

  1. 不要使用list作爲變量名;它是一個內置函數,你不想覆蓋它。

  2. 全局變量幾乎總是一個壞主意;明確地傳遞數據使得更容易找出壞數據來自哪裏,並使得函數更加可重用。

  3. camelCase通常被貶損;代替函數名稱的是use_underscores

0

當你附加新項目(或至少打印某些東西來表示成功)時,你可能打算繼續而不是中斷,但嵌套的if語句工作正常,按照指定的順序將它附加到列表中,然後功能和程序終止。

+0

沒有太多的答案?你從哪裏得到這個結論? – aIKid

+0

我推斷出最可能的問題是代碼片段可能會做什麼。如果這種假設是錯誤的,那麼很好,但我沒有看到有用的說教目的說「你的代碼工作正常」,並忽略了代碼和意圖之間可能的差異。 – aestrivex