2013-02-01 11 views
7
player_input = '' # This has to be initialized for the loop 

while player_input != 0: 

    player_input = str(input('Roll or quit (r or q)')) 

    if player_input == q: # This will break the loop if the player decides to quit 

     print("Now let's see if I can beat your score of", player) 
     break 

    if player_input != r: 

     print('invalid choice, try again') 

    if player_input ==r: 

     roll= randint (1,8) 

     player +=roll #(+= sign helps to keep track of score) 

     print('You rolled is ' + str(roll)) 

     if roll ==1: 

      print('You Lose :)') 

      sys.exit 

      break 

私はroll == 1場合は終了するプログラムを教えしようとしていますが、何も起こっていないと私はsys.exit()sys.exit()はPythonの

を使用しようとする場合、それはちょうど私のエラーメッセージを与えるの使い方

はい、私はプログラムの上部にimport sysを使用しています。誰でも助けることができますか?


これは、それがプログラムを実行するとき

Traceback (most recent call last): 
line 33, in <module> 
    sys.exit() 
SystemExit 
+3

実際のトレースバックとは何ですか? – Volatility

+0

完全なコードスニペットを投稿しようとしてください - 例えば 'player'はどこから来ていますか?また、Python 3.xのタグ付けも変更しました –

+5

問題は、コードをIDLEに実行していることです。 IDLEはすべての例外(SystemExitも含む)をキャッチし、トレースバックを確認します。どのようなことが普通に行なわれるのかを見るためには、あなたのpythonプログラムをpythonシェルに実行するだけです(ターミナル/コマンドプロンプトからpythonを起動してください) – Bakuriu

答えて

4

sys.exit()あなたはおそらく、いくつかのエラーとして想定しているSystemExit例外が発生します。表示されていることのメッセージですあなたはあなたのプログラムがSystemExitをを上げるが、優雅に戻るにないたい場合は、関数の中で、あなたの機能をラップし、あなたが2.7を使用してsys.exit

0

を使用することを計画している場所から返すことができます。

from functools import partial 
from random import randint 

for roll in iter(partial(randint, 1, 8), 1): 
    print 'you rolled: {}'.format(roll) 
print 'oops you rolled a 1!' 

you rolled: 7 
you rolled: 7 
you rolled: 8 
you rolled: 6 
you rolled: 8 
you rolled: 5 
oops you rolled a 1! 

次に「おっと変更「私はあなたがそれをチェックすること

sys.exit(0) 

を使用することができると思うraise SystemExit

4

に印刷pythonの0で0を指定してください。doc:

オプションの引数argには、終了状態(デフォルトは0)または別の種類のオブジェクトを与える整数を指定できます。整数の場合、ゼロは「正常終了」とみなされ、0以外の値はシェルなどによって「異常終了」とみなされます。