2017-04-30 94 views
1

我如何解釋這個...重複功能追加到列表

我是新來的Python和目前使用最新版本的Python 2中

我寫(或試圖寫入)一記錄製作並將製作添加到列表的程序。我的目標是反覆提示用戶添加作品,直到他們選擇「否」,此後程序應該轉到下一個階段。

到目前爲止,我已經定義,詢問用戶是否想記錄生產,然後要求生產名稱,描述和結果的功能。然後用用戶的輸入更新相應的列表。

我的失敗就是我不能讓程序然後詢問用戶是否願意添加其它生產,然後關閉循環,如果他們選擇「否」。

這裏是我的代碼:

locus = raw_input('Enter location where statement compiled: ') 
colleague = raw_input('Enter name of corroborating officer: ') 
productions = [] 
descriptions = [] 
result = [] 

def logger(): 
    log = raw_input('Would you like to log a production? Y or N: ') 
    if log == 'Y' or 'y': 
     new_production = raw_input('ENTER NAME OF PRODUCTION: ') 
     productions.append(new_production) 
     new_description = raw_input('ENTER DESCRIPTION OF PRODUCTION: ') 
     descriptions.append(new_description) 
     new_result = raw_input('ENTER SUMMARY OF CONTENTS FOUND: ') 
     result.append(new_result) 
     print new_production 
     print new_description 
     print new_result  
     return True 
    else: 
     return False 

logger() 

while True: 
    finished = raw_input('Do you want to submit another? Y or N: ') 
    if finished == 'Y' or 'y': 
     logger() 
    else: 
     return False 

預先感謝您可以提供任何幫助。

回答

0

你可以嘗試這樣的事:

while True: 
    inp = raw_input('Would you like to enter a new log? Y or N: ') 
    if inp.lower() == "y": 
     # do your required functions to create a log in here 
     # or you could call logger(), as long as you modify it appropriately 
     new_production = raw_input('ENTER NAME OF PRODUCTION: ') 
     ... 
     print new_description 
     print new_result  
    elif inp.lower() == "n": 
     break 
    else: 
     print "invalid response" 

讓我知道,如果你想爲它的任何解釋!

+0

這似乎已經非常完美,是正是我一直在後 - 你能不能給我反饋,我要去哪裏錯或其他任何建議我重新編碼上面?謝謝。 –

+0

你寫循環的方式並不差,只是可能不夠簡潔。另外,當試圖停止運行一個循環時,你應該'打破'。以前,它看起來像你正在做'返回假' - 但只有函數可以返回值。這也對循環沒有影響。否則,其餘的代碼非常好!很高興我能提供幫助,如果這是你正在尋找的東西,請把答案標記爲正確(綠色勾號)! – Windmill