2017-03-09 16 views
1

私はPythonでプログラミングをしているにもかかわらず、プログラムをダブルクリックして.pyファイルを開くと正しく機能しません。それは私がコマンドラインからIDE(Pycharm)を介してそれを実行するときになります。基本的に、ダブルクリックすると、キー=入力( "Enter decode key:")部分に到達し、何かを入力すると、それが閉じます。どんな助けでも大歓迎です。私は自分のコードがエレガントではないことを知っています。 Python 3.5.2.pyをダブルクリックするとPythonスクリプトが正しく実行されない

サンプル入力は「キー」は23、「エンコード」は142,128,133,123,134,142となります。それは "ウィンドウ"を出力し、コマンドラインとPycharmで正常に動作するはずです。

import sys 


def main(key, encoded): 

    if encoded == 0:    #This should run if program was double-clicked (no arguments) 
     encoded = input("Paste encoded JavaScript: ") 
     key = input("Enter decode key: ") 

    def decode(key, encoded):   #Decode the data 
     encoded = encoded.split(',') #Split each section delimiting by a colon 
     decoded = [] 
     for x in encoded: 
      x = int(x) - int(key)  #Subtract the key from the number in each section 
      decoded.append(chr(x))  #Change from ASCII decimal code to the ASCII character 
     decoded = ''.join(decoded)  #Join back into a string 
     print(".") 
     print(".") 
     print(".") 
     print(".") 
     print("Encoded data:") 
     print(encoded) 
     print("Decode key:") 
     print(key) 
     print("Decoded data:") 
     print(decoded) 
     return 0 

    decode(key, encoded)   #Jump into the decode function 
    return 0 

if __name__ == "__main__": 
    try: 
     if len(sys.argv) > 1:   #If length is greater than 1, then there were arguments added upon program execution 
      key = sys.argv[1]   #The "key" should be the first argument 
      encoded = sys.argv[2]  #The "encoded" data should follow 
     else: 
      key = 0     #If length is anything else, then set them to 0 and ask for the data later 
      encoded = 0 
     main(key, encoded)    #Jump into main function and pass the key and encoded arguments 
    finally: 
     input("Press Enter to exit") 
+0

最後に置くことができます: '' input( "Enter"を押して終了します) '' – jasonharper

+0

申し訳ありません、タイトルを変更しました。もともと、私はそれがちょうど最後に中断していないと思った。しかし、その後、私はそれがプログラムを通してそれを作っていないことに気づいた。それは情報を印刷した後に既に停止しているはずです(私はy =入力を持っています) – zinzara

+0

何が起こっているのか分かりません。私はあなたの貼り付けられたコードにいくつかの書式設定エラーがあったと思います。 –

答えて

0

簡単にスクリプトが

0

でスティックので、私は例外処理を使用してプログラムをラップすることをお勧めあなたのコードの末尾に入力(「」)を置きます。ここで

はあなたのコードの最後のセクションには、どのように見えるかの抜粋です。これにより

if __name__ == "__main__": 
    try: 
     if len(sys.argv) > 1: 
     # ... 
    finally: 
     input("Press the enter to exit") 

、関係なく、あなたのプログラムが正常に完了したか失敗したかどうかの、あなたは押すように尋ねるプロンプトが表示されます入る。これにより、ウィンドウを閉じる前に、画面の内容を読み取ることができます。

ちょうどあなたがここで起きていることを示しているプログラムに障害が発生した場合にあなたのプログラムになるない仕事の終わりにinput("")を置きます。

+0

ありがとうございます。私はそのコードとすべてを説明するコメントでコードを更新しました。プログラムは、デコードキーを入力した直後に(最後の部分)一時停止します。なぜデコード機能にジャンプしないのですか? – zinzara

+0

質問はちょうどフォーマットのための+1を得ました - 私はこのサイトの誰もがあなたが持っている世話をして欲しい。 try文の直前に 'print sys.argv'を追加してみてください。それはいくつかの光を発するかもしれません。 – Shadow

+0

だから、私はそれを試して、私が得たのはファイルのパスでした。どちらが起こるか。しかし、私は無関係な更新があります。だから、私は仕事場(これが使用される場所)にいて、そこでPython 2.7を使用しているので、いくつかのものを変換しなければなりませんでした。私がこれをしたら、すべてうまくいった。私が変更したのは、丸括弧がない場所とraw_inputへの入力箇所だけです。私はここでもPython 3.5を使用しながらこれを自宅で行いました。どうした? – zinzara

0

私はちょうど私の問題を解決したと思う。何らかの理由で、私のパスがPython 3.5に設定されていて、3.5で開くために右クリックしても2.7で開かれているにもかかわらず、.pyをダブルクリックすると、新しい問題を開くだけです。

関連する問題