2012-01-22 17 views
0

私はPythonが初めてです。ここでは、マップから値を取得するPythonプログラムを作成しました。 現在のところ、正常に動作しています。無限ループを終了してエラー状態を処理する

ユーザが "M"を入力すると、それはメインノーを尋ねるでしょう。そして再びユーザ入力を要求し、ユーザ入力に応じて、それは辞書&の値を検索します。

今私の懸念は、どのように私はループから抜けることができ

  1. です。
  2. M/Nの入力時に無効な入力をした場合はどうなりますか?
  3. メインまたはネームの入力時に無効な入力を与えるとどうなりますか?

誰でもこのことを教えてもらえますか?私は上記の3つの条件を実装する方法を知りたい。私はJavaでこれらの条件を実装しましたが、Pythonでどのように行うのかわかりません。

streetno={"1":"Sachin Tendulkar","2":"Sehwag","3":"Dravid","4":"Dhoni","5":"Kohli"} 
streetname = dict((y,x) for x,y in streetno.items()) 
while True: 
    inp= raw_input('Enter a M/N:') 
    if inp=="M" or inp=="m": 
     key=raw_input("Enter the main number :") 
     result=streetno[key] 

    else: 
     key = raw_input("Enter the street name: ") 
     result = streetname[key] 


    print result 
+0

あなたはどのようにJavaでそれをやったのですか?また、その論理がPythonではどうして違うと思いますか? – Johnsyweb

+0

条件2と3の "what if" _はどういう意味ですか?例外を処理する方法や、違法な入力に遭遇したときのPythonのデフォルトの動作を要求していますか? – grapeot

+0

Javaで例外を使用しました。はい、私は例外について尋ねています。私は違法な入力を処理したい。 –

答えて

0

1:forループまたはwhileループをbreakで中断できます。

2/3:これらの例外を考慮してください。一般的に、あなたはtry/exceptブロックで例外をキャッチでしょう

while True: 
    inp = raw_input('Enter a M/N or Q to quit:') 

    if inp.lower() == 'q': 
     break 

    if inp.lower() == "m": 
     key = raw_input("Enter the main number :") 
     try: 
      print(streetno[key]) 
     except KeyError: 
      print("You picked an invalid street number") 

    elif inp.lower() == 'n': 
     key = raw_input("Enter the street name: ") 
     try: 
      print(streetname[key]) 
     except KeyError: 
      print("You picked an invalid street name") 

    else: 
     print("{0} is an invalid choice.".format(inp)) 
0

...それはあなたが望む何に依存するので、私たちは本当に例外をどのように扱うかを伝えることはできませんが、ここであなたが始めるための一つの方法です。このチュートリアルlinkを参照してください。間違ったメインまたは名前を入力すると、dictsに一致するキーがないため、KeyErrorが発生します。あなたのExceptブロックがこれをキャッチし、 '続行'でプロンプトを再起動できます。最後に、ループを終了するには、 'Q'を入力してelifオプションとして終了するなどのトリガーが必要です。ループを終了するには、breakと呼んでください。

関連する問題