2016-04-05 11 views
2

に私に混乱した状態を持っているif文here、ための第二のルールを死ぬ:それはdoesnのため、他のこのを実行してはならない場合- 演習36 - 他の場合は、その機能

最後に最後の練習で行ったのと同じように、の機能をに、それ以外の場合はのエラーメッセージを出力して終了する必要があります。これは多くのエラーを見つけるでしょう。

def dead(why): 
    print why, "Good job!" 
    exit(0) 

def start(): 
    print "You are in a dark room." 
    print "There is a door to your right and left." 
    print "Which one do you take?" 

    choice = raw_input("> ") 

    if choice == ‘left’: 
     bear_room() 
    else: 
     dead(‘You stumble around the room until you starve.’) 

が、それは本質的条件が満たされていない場合は、プログラムを正常に終了しなければならないと言っている:

ここで最後の練習からのコードは?

+1

ここで例外はありません – kilojoules

+0

あなたが正しいです、出口(0)はドキュメントによると成功した終了です。私は私の質問を修正します。ありがとう。 –

答えて

2

はい、アイデアは次のとおりです。

import sys 

def die(msg): 
    print msg 
    sys.exit(1) 

if condition: 
    # do stuff 
else: 
    die('This cannot happen!') 

また、代わりにassertを使用するか、例外を発生させ、または何か他の破滅的な失敗することがあります。これは実行時に、あなたが実際に実行しなかったと思わなかった節を検証するのに役立ちます。

IMHOあなたはあまりにもこのdieがどのように行われているかにつきすぎるべきではありません。参照されたテキストが重要な点を作るのは、の場合、ある条件が真であることを確信している場合は、実行時のバグをキャッチできるように強制的にアサートすることもできます。

1

ガイドは、あなたがそれはあなたがあなたのif文では確認されません何かするとき、ユーザーが与えるchoiceを見ることができるということをお見せしようとしています。他のユーザーが次のように表示されている場合:

else: 
    dead(choice) 

あなたが期待していなかったユーザーの入力を確認することができます。

1

問題は、プロンプトで何かの入力が許可されている場合、構文では「左」のみが許可されることです。言い換えれば、私が「ボブ」と入力すると、私は飢えてしまいます。適切ではなく、その時点で「死んでいる」(またはユーザーが適切な決定を下すのを助ける)何かを捕まえるべきです。

これは、エラー処理を教えて死に至る試みです。あなたはそれを書き換えて、正確な入力や死ぬことができるようにします。左を選択しない場合は、2つの選択肢があるとのプロンプトが表示されても、他の選択肢はありません。

あなたが本当に唯一 'left'を追加することが予想される場合
0

、unexpeted入力をチェックする良い方法は

if choice != ‘left’: 
    dead(‘You stumble around the room until you starve.’) 
    bear_room() 

それでも入力は、あなたが期待するものであることを検証する方法になりますが、それはインデントとスペースを節約します主な論理のために。

関連する問題