2017-04-25 7 views
0

コードは、コマンドラインから引数を受け取り、 'a'が5より大きい場合は "bad input"を、そうでない場合は "good input"を出力します。少なくとも私はそれが欲しいものです。誰かがこれが期待どおりに機能しない理由を説明してください。 (P.S - これは今まで私の最初のpythonコードである)Pythonの基本 - 比較、インデント、if ... else

import sys 

def main(): 
     print sys.argv[1] 
     ##print len(sys.argv[1]) 
     a=sys.argv[1] 
      if a > 5: 
       print "bad input" 
      else: 
       print "good input" 


if __name__ == '__main__': 
    main() 

enter image description here

+0

'sys.argv 'の要素は文字列であり、文字列を整数と比較することは意味がありません。ユーザが指定した文字列を整数に変換するには 'int()'を使う必要があります。 – jasonharper

+0

こんにちはjason、私はそれを= int(sys.argv [1])に変更しました。それは働いた。ありがとう –

答えて

0

はちょうどあなたのインデントを修正する必要があり、それが正常に動作します。コマンドラインから取得

import sys 

def main(): 
    a = sys.argv[1] 
    if a > 5: 
     print "bad input" 
    else: 
     print "good input" 


if __name__ == '__main__': 
    main() 
+0

その仕事の仲間はありませんでした。 a = int(sys.argv [1])は動作させました。しかし、とにかくありがとう –

+0

本当に? 'python script.py 10'は' bad input'を出力しませんでしたか?どのPythonバージョンを使用していますか? –

+0

バージョンpython27 –

0

引数は文字列形式であるので、あなたは、任意の数学的な操作を行うことができます前に、あなたはそれがここにのように整数に変換する必要があります= INT(sys.argvの[1])そして、スペースで次の行を開始しないでください。これは不要です。以下の解決策:

import sys 

def main(): 

    print(sys.argv[1]) 

    a = int(sys.argv[1]) 

    if a > 5: 
     print ("bad input") 
    else: 
     print ("good input") 

if __name__ == "__main__": 
    main()