2017-10-19 16 views
0

私はPythonでブラックジャックカードゲームをプログラムしようとしています。 プレイヤークラス内で、プレイヤーが「ヒット」または「スタンド」(ブラックジャックルール)のどちらかを決定するループを定義したいと思います。入力が正しい場合(スタンドの場合は 'S'、ヒットの場合は 'H'のいずれか)、プレイヤーがこれらの2つのオプションのいずれかを入力するまで、ループを繰り返す必要があります。ここでエラー処理で必要な入力

は、この特定の部分のために私のコードです:

while True: 
    try: 
     D = input('What is your decision, stand or hit? [press S for stand and H for hit]: ') 
     if D in ['S', 'H'] is False: 
      1/0 
    except: 
     print('Incorrect input, please try again (S for stand and H for hit)!') 
     continue 
    else: 
     if D == 'S': 
      print('OK, you decided to stand!') 
     else: 
      print('OK, you decided to hit. You will receive a 3rd card!') 
     break 

のでアイデアは、これまでの決定は(「S」または「H」)右のでない限り、エラーが生成されていることですが、コードはまだ適切に動作しません...私は小さなグリッチがあると思います....

すべての提案はありますか? 種類のについて、あなたが書くべき

L

+0

あなたは何を知っていますか? ['S'、 'H']の 'Foo'はFalseですか?あなたを驚かせるかもしれません。 – jonrsharpe

+0

あなたは何を期待していますか?あなたはブロック –

答えて

1

if D not in ['S', 'H']: 

を、全体のコードは、例外なく短く、読みやすくなります

while True: 
    D = input('What is your decision, stand or hit? [press S for stand and H for hit]: ') 
    if D not in ['S', 'H']: 
     print('Incorrect input, please try again (S for stand and H for hit)!') 
     continue 
    else: 
     if D == 'S': 
      print('OK, you decided to stand!') 
     else: 
      print('OK, you decided to hit. You will receive a 3rd card!') 
     break 
1

の必要はありません例外がある場合は、次のようにしてください:

while True: # infinite loop 
    D = input('What is your decision, stand or hit? [press S for stand and H for hit]: ') 
    if D == "S": 
     #do some 
     break 
    elif D == "H": 
     # Hit some. 
     break 
    else: 
     print('Incorrect input, please try again (S for stand and H for hit)!') 
     break 
+0

を除いて何かを試してみるべきです、ありがとう、これはさらに清潔です! – mcluka

+0

@mclukaあなたは大歓迎です!投票を心配しないでください...間違っていても人々が何を考えているのかを制御することができます –

+0

@mcluka心配しないでください。時にはそれも理解できませんが、あなたの質問に投票しました。これは非常に良いものでした。例えば、短いコードサンプルで、努力を示しています。それはすべてがあります...私はあなたを助けることができてうれしく思います。私はいつも助けてくれるのが大好きです –

関連する問題