0

コマンドラインを介して数値のリストを受け入れ、最大の数値を出力する必要があります。だから私はこのPythonスクリプトを書きました

import sys

arg_list = sys.argv[:]
num_list = arg_list[1:]
if (len(num_list) == 0):
    print "Please pass a list on numbers as an argument"
else:
    max_num = max(num_list)
    print "The largest number is " + str(max_num)

現在、このコードはリスト 1、5、77、8 に対して正常に機能していませんが、何が間違っていたのかわかりません。誰か助けてくれませんか?

4

3 に答える 3

3

プログラムへの引数は常に文字列です。num_list整数に変換する必要があります。

num_list = map(int, num_list)

入力のいずれかが有効な数値でない場合、これは ValueError 例外をスローする可能性があります。それをキャッチすることをお勧めします。

try:
    num_list = map(int, num_list)
except ValueError:
    print 'Please enter only integers'
    sys.exit(1)
于 2013-02-08T11:12:28.550 に答える
1

最初にそれらをintにキャストする必要があります

例えば

max(int(num) for num in num_list)
于 2013-02-08T11:12:13.093 に答える
1

それらを整数に変換するか、整数値を並べ替えることができます。

>>> num_list = ['1','5','77','8']
>>> sorted(num_list, key=int, reverse=True)[0]
'77'
于 2013-02-08T11:14:29.890 に答える