2012-09-06 33 views
6

私はいくつかの数値を入力し、サイズ、合計、平均、最小値、最大値を印刷するようにユーザーに頼む必要があります。私は最初の3つのものを得ることができますが、私は最小と最大のものに固執しています。Pythonで最小値と最大値を見つける

number = raw_input('Enter number:') 
    list_of_numbers = number.split() 
    tally = 0 
    sum = 0 
     while number!= '': 
     tally = tally + 1 
     sum = sum + int(number) 
     average = float(sum)/float(tally) 
     number = raw_input('Enter number:') 
    print "Size:", tally 
    print "Sum:", sum 
    print "Average:", average 

任意のヒント:ここに私のコードはだ、私が持っている問題は、私は整数つのリストを作成する必要があるので、私はsort()を使用することはできませんが、あなたはsplit()

のための整数リストを使用することはできません?ありがとう

答えて

3

min()とmax()を使ってそれらの値を見つけることができると思います。

+0

私はそれが – user1008073

+4

@ user1008073 http://docs.python.org/library/functions.html#min – squiguy

16

Pythonの組み込み関数を使用できますか?もしそうであれば、それは簡単です:

numbersInt = map(int, list_of_numbers)は整数にリストの各文字列番号を変換し
number = raw_input('Enter number:') 
list_of_numbers = number.split() 

numbersInt = map(int, list_of_numbers) # convert string list to integer list 

print "Size:", len(numbersInt) 
print "Min:",  min(numbersInt) 
print "Max:",  max(numbersInt) 
print "Sum:",  sum(numbersInt) 
print "Average:", float(sum(numbersInt))/len(numbersInt) if len(numbersInt) > 0 else float('nan') 

。各関数は、以下の意味を有する:

  • len
  • minが最小
  • max最大
  • sum計算する計算リストの長さを計算するの和を計算しますリスト

Python標準ライブラリに平均関数はありません。しかし、代わりにnumpy.mean()を使用することができます。

+0

これが最も神託の方法と最も効率的であるが存在するとは思いません。 – jurka

1

あなたは2つのオプションがあります。あなたが前の極値に現在の数を比較し、それに応じて最小値と最大値を更新することができ

  • を。

    私たちは、あなたが一度にすべての操作を実行し、その後、リスト内の各番号を格納することができ、当社のnminnmax

  • を初期化するために、システム上の最大の整数(sys.maxint)を使用

    import sys 
    tally = 0 
    sum = 0 
    nmax = -sys.maxint 
    nmin = +sys.maxint 
    number = raw_input('Enter number:') 
    while number!= '': 
        number = int(number) 
        if number > nmax: 
         nmax = number 
        elif number < nmin: 
         nmin = number 
        tally = tally + 1 
        sum += number 
        average = float(sum)/float(tally) 
        number = raw_input('Enter number:') 
    

    number = raw_input('Enter number:') 
    numbers = [] 
    while number!= '': 
        numbers.append(int(number)) 
        number = raw_input('Enter number:') 
    numbers.sort() 
    nmin = numbers[0] 
    nmax = numbers[-1] 
    tally = len(numbers) 
    nsum = sum(numbers) 
    avg = nsum/float(tally) 
    
1

これは、私が間違っていない場合、少なくとも複雑である可能性があります。

len_min_max_sum=reduce(lambda x,y : (x[0]+1,y,x[2],x[3]+y) if x[0]>y else (x[0]+1,x[1],y,x[3]+y) if x[2]<y else (x[0]+1,x[1],x[2],x[3]+y) ,arr,(0,arr[0],arr[0],0)) 

len_min_max_sum_avg=(len_min_max_sum[0],len_min_max_sum[1],len_min_max_sum[2],len_min_max_sum[3],float(len_min_max_sum[3])/len_min_max_sum[0]) 
1
tally = 0 
sum = 0 
while True: 
number = input('Enter number') 
list_of_numbers = number.split() 
if number == '': 
continue 
else: 
tally = tally + 1 
sum = sum + int(number) 
average = float(sum)/float(tally) 
print('Size:', tally) 
print('Sum:', sum) 
print('Average:', average) 
+1

インデントを編集してください。これはPythonにとって非常に重要です。 – YakovL

関連する問題