0
def list_stats(values, num_int, low_range, high_range):  # function to fix
    values = generate_integer_list(num_int, low_range, high_range)
    new_val = values.sort()
    low_val = new_val[0]
    high_val = new_val[num_int - 1]
    total = 0
    i = 0
    for num in range(num_int-1):
        i = i + 1
        num = values[i]
        total = total + num
    avg = total/num_int
    return total, low_val, high_val, avg


def generate_integer_list(num_int, low_range, high_range): # generates random #'s
    values = []
    for count in range(num_int):
        number = random.randint(low_range, high_range)
        values.append(number)
    return values

生成されたリストで最大値と最小値を見つけ、リスト内のすべての数値の合計と平均を取得する必要があります。私の番号は、generate_integer_list によって生成されます。

sort 関数を使用して生成されたリストをソートし、そのリストの最初と最後の数字を取得して、最小と最大を求めました。ただし、返される値はとにかく正しくありません。ソートされたリストに新しい名前を付けようとしましたが、うまくいきません。

適切な値を返す唯一の方法は、並べ替えられたリストを印刷することですが、質問に関しては許可されていません。どうすればこれを修正できますか?

4

2 に答える 2

2

合計を計算するコードは、最初の値をスキップします。数値のリストを直接ループするだけで、ここで範囲を作成する必要はありません:

total = 0
for num in values:
    total = total + num

並べ替えに頼らずにこれを行うことができます。すべての数値をループする必要があります。

def list_stats(values, num_int, low_range, high_range):
    values = generate_integer_list(num_int, low_range, high_range)
    total = 0
    low_val = high_val = values[0]  # something to start with
    for num in values:
        total += num
        if num < low_val:
            low_val = num
        if num > high_val:
            high_val = num
    avg = total / num_int
    return total, low_val, high_val, avg

数字についても同じことになるので、に置き換えましtotal = total + numた。total += num

また、値のリストの最初の値から開始low_valして終了しました。high_valループは、進行するにつれて、より低い値またはより高い値を見つけます。

于 2013-11-05T18:41:32.587 に答える
1

選択した方向である場合、これを単純化するために使用できる BIF がいくつかあります。

sum(numlist) # the sum of your random list
sum(numlist) / len(numlist) # average your list
sorted(numlist, key=int)[0] # lowest element
numlist[len(numlist) - 1] # list is already sorted this gives you the max

簡単なスニペットです。私はあなたのコードを書き直していません。

于 2013-11-05T19:16:39.533 に答える