2017-05-19 9 views
0

私はゲームで働いています。私はPythonでコーディングしています。私はubuntu/linuxを持っています。 os.system( 'clear')に問題があります。うまく動作しません。ここで コードです:ここではos.system( 'exit')のトラブル

elif acc == 'dinero': 
     print('Tienes ' + str(dinero) + '$') 
    elif acc == 'salir': 
     os.system('exit') 

は、コードの一部である、それだけでフリーズして実行中のまま、私は入力「salir」場合、問題は、第二のelifです。コード内に別のos.sytem( 'exit')がありますが、うまく動作し、解決方法はわかりません。他のすべての入力はうまく機能します。

答えて

1

端末にexitと入力すると(実質的には何かos.system)、プログラムだけでなくセッション全体が終了するという問題があります。あなたは自分のプログラムを終了したいので、次の操作を行います。

import sys 
# ... 
elif acc == "salir": 
    sys.exit(0) 

2の差のより詳細な説明は(あなたはこれがより正しいか理解しやすくすることができた場合に編集してください)。

Linux/Mac/Windowsのシェルからプログラムを実行すると、シェルと独自のプログラムの2つのプログラムが実行されます。あなたのプログラムは、シェルの「子プロセス」として実行されています。これは、シェルがシェルを所有していることを意味します。プログラムが終了すると、シェルはまだ実行されたままになります。

あなたの犬を歩くとあなたの犬が死ぬと想像してください。あなたはまだあなたの散歩を終わらせるか、何でもすることができます。それはsys.exit(0)のことです。あなたの犬は自殺して歩くことができます。

しかし、os.system("exit")はあなたの犬のようなもので、自分を殺してしまい、あなたとあなたの犬を殺します。彼はあなたなしでは生き残ることができず、同時にあなたがやっている他のものもあなたもなくては生き残ることができないので死ぬでしょう。

これは単純化された回答ですが、それは基本的に起こっていることです。

+0

うまく機能しますが、なぜ1つのケースでは機能し、もう1つでは動作しないのですか? – prossellob

+0

理由を説明しようとする編集を追加します – Ben

+0

そこに不明な点があれば教えてください。 – Ben