7

ユーザーに数値を入力してから、サイズ、合計、平均、最小、最大を出力するように依頼する必要があります。最初の 3 つを取得できますが、最小値と最大値に固執しています。私が抱えている問題はsort()、リストを整数にする必要があるため使用できないことですが、整数リストを使用することはできませんsplit()

これが私のコードです:

    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

ヒントはありますか?ありがとう

4

6 に答える 6

18

Python の組み込み関数を使用できますか? はいの場合は、次のほうが簡単です。

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'))
# float conversion is only required by Python 2. 

wherenumbersInt = map(int, list_of_numbers)は、リストの各文字列番号を整数に変換します。各関数には次の意味があります。

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

Python 標準ライブラリには平均関数はありません。ただし、代わりに使用できますnumpy.mean()pip install numpyまたはでインストールしてから、次のようにしますconda install numpy

import numpy as np
print("Average: ", np.mean(numbersInt))
于 2012-09-06T03:04:38.617 に答える
4

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

于 2012-09-06T02:44:37.563 に答える
2

次の 2 つのオプションがあります。

  • 現在の数値を以前の極値と比較し、それに応じて最小値と最大値を更新できます。

    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:')
    

    システムで最大の整数 ( sys.maxint)を使用してnminnmax

  • 各数値をリストに保存してから、すべての操作を一度に実行できます。

    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)
    
于 2012-09-06T05:55:04.010 に答える
1
tally = 0
sum = 0
average = 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)
于 2016-06-22T19:25:10.843 に答える
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])
于 2015-11-03T05:39:18.053 に答える