2014-10-02 51 views
0

我目前正在編寫一個程序爲我的介紹編程類。要求是讓用戶輸入名人姓名列表,將他們添加到列表中,打印出有多少名人進入,然後打印輸入的名人名單。我必須使用循環,所以我使用了一個while循環;但是,當用戶輸入Done到名稱輸入字段時,我無法完成。使我的While循環終止輸入的「完成」

下面是代碼,我嘗試使用if else語句來控制循環。

def main(): 
    celebs = [] 

    again = 'y' 

    while again == 'y': 
     name = input('Enter a name: ') 
     if name == 'Done': 
      again == 'n' 
     else: 
      again == 'y' 


     celebs.append(name) 



    print('You entered ',len(celebs), 'celebrities to the list') 
    print(' ') 
    print('The ',len(celebs),'celebrities you entered were: ') 

    for name in celebs: 
     print(name) 
main() 
+1

什麼是不工作?乍一看它應該都可以工作 - 除了您將添加單詞到您的名單名單。我認爲你的大部分代碼都是你主要功能的一部分? – 2014-10-02 20:59:56

+0

這是實際的代碼?如果是這樣,你需要縮進意味着在主要功能中的所有東西,因爲目前沒有任何東西。 – Serdalis 2014-10-02 21:01:33

+0

縮進是我的錯誤發佈,我現在看到如何改變它。 @ TonySuffolk66我該如何解決從列表中剝離完成的條目? – 2014-10-02 21:09:17

回答

5

在if/else中的語句中將double等於更改爲單個等於。您需要爲「再次」分配一個值,但double等於只是比較。

或者,您可以查看'break'語句的用法。

+0

我會贊成,但我沒有足夠的聲譽。非常感謝!我也會考慮'休息'。 – 2014-10-02 21:08:07

+0

如果此答案足夠好,請將其標記爲已選擇。 – 2014-10-02 21:14:44

1

使用==進行比較,使用=進行分配。這應該夠了吧。

0

如果name ==「完成」,你應該做的:

again = 'n' # not again == 'n' 

(同樣的設置再次=「Y」,但我認爲這行是不必要的,因爲又已經等於「Y」 )

+0

'raw_input'不返回換行符: '印刷再版(的raw_input( '>'))' >富 '富' – 2014-10-02 21:18:51

+0

你是對的,謝謝!我編輯了我的回覆。 – 2014-10-02 21:25:20

0

您在代碼中有一個比較運算符,而不是賦值。

變化again == 'n'again = 'n'again == 'y'again = 'y'

1

爲了避免增加 '做' 到列表中,請跳至下一次迭代:

while again == 'y': 
    name = input('Enter a name: ') 
    if name == 'Done': 
     again = 'n' 
     continue 
    else: 
     again = 'y' 
    celebs.append(name) 

這可以簡化爲:

while again == 'y': 
    name = input('Enter a name: ') 
    if name == 'Done': 
     again = 'n' 
     continue 
    celebs.append(name) 

它也更好地使用bool值這裏:

again = True 
while again: 
    name = input('Enter a name: ') 
    if name == 'Done': 
     again = False 
     continue 
    celebs.append(name) 

,或者你也可以只使用break

while True: 
    name = input('Enter a name: ') 
    if name.strip() == 'Done': 
     break 
    celebs.append(name)