2017-06-14 57 views
-1

我的代碼無法返回我在達到最大失敗次數時輸入的消息。這是一種「生命計量表」。下面是代碼:如何在python中使用while循環制作生命度表

import random 

lives = 3 

coin = (
    'heads', 
    'tails' 
    ) 

ask = input('Are you ready?') 

if ask == 'yes': 
    print('Good') 
else: 
    print('No is not an option') 

coin_flip = random.randint(0,1) 

choice = input('Heads or tails?') 

print('It was', coin[coin_flip]) 

if choice != coin_flip: 
    lives = lives-1 

while lives >0 : 
    coin_flip = random.randint(0,1) 
    choice = input('Heads or tails?') 
    print('It was', coin[coin_flip]) 

    if choice != coin_flip: 
     lives = lives-1 

    if lives <1 : 
     print('You are out') 

我分配了原來的生活到3號,每次我弄錯了,應該採取的生活了。我認爲這可能是因爲'coin_flip'沒有被分配爲一個特定的字符串,只是隨機調用它。如果我說得對,那我怎麼才能讓它抓住輸入的字符串,並且每次都將它與隨機答案進行比較呢?

編輯: 我的縮進是錯誤的,這就是爲什麼我沒有收到消息。現在,我需要理解爲什麼在隨機輸出中無法捕捉到「正面或反面」。

+0

你的第二個'如果選擇!= coin_flip:'需要縮進...和下​​面的行 – depperm

+3

不應該'如果選擇!= coin_flip'如果選擇!= =硬幣[coin_flip]'? – Safron

+0

你對「選擇」的輸入是什麼? –

回答

1

的,如果它檢查的實際擲硬幣來猜聲明必須縮進和嵌套while循環中:

while lives >0 : 
    coin_flip = random.randint(0,1) 
    choice = input('Heads or tails?') 
    print('It was', coin[coin_flip]) 
    if choice != coin[coin_flip]: 
     lives = lives-1 

此外,您的檢查總是錯誤的,因爲您將選擇變量與隨機整數比較,而不是它所代表的硬幣面。正如您在打印聲明中所做的那樣,只需根據元組的位置從元組中選擇項目即可。

此外,當你學習更基本的蟒蛇,你將能夠處理用戶錯誤,如大寫的字符串,尾隨空格,不正確的字符等。

I.E.請注意, - 頭!=頭

+0

是的,我知道如何接受多個答案,我明白'頭!=頭。感謝你的回答。 –

0

你縮進搞砸

您需要縮進以下,所以它是while循環中。如果你不這樣做,while循環將永遠不會結束,這個代碼將永遠不會跑出

if choice != coin_flip: 
    lives = lives-1 

if lives <1 : 
    print('You are out') 
+0

謝謝,這部分回答了我的問題。請參閱編輯瞭解更多詳情。 –

+1

這篇文章還有其他嚴重的問題。正確的答案是關閉它,而不是通過回答啓用OP。 –

+1

另外,你的縮進也都搞砸了,比OP更糟糕,因爲他沒有導致SyntaxError。 –