2013-11-27 1 views
0

Я работаю над назначением Python, и я полностью застрял. Будем очень благодарны любой помощи. Я знаю, что это, вероятно, не так сложно, как кажется в моей голове ... Подробности ниже. Огромное спасибо.Средние числа в Python с использованием списков и ключей

Реализовать следующие три функции (вы должны использовать подходящий для создания циклов для вычисления средних значений):

allNumAvg (numList) принимает список чисел и возвращает среднее арифметическое всех чисел в списке.

posNumAvg (numList): принимает список чисел и возвращает среднее из всех номеров в списке, которые больше нуля.

nonPosAvg (numList): принимает список чисел и возвращает среднее из всех номеров в списке, которые меньше или равны нулю.

Напишите программу, которая просит пользователя ввести некоторые цифры (положительные, отрицательные и нулевые значения). Ваша программа не должна запрашивать у пользователя фиксированное количество номеров. Также он не должен запрашивать количество номеров, которые пользователь хочет ввести. Но, скорее, он должен попросить пользователя ввести несколько цифр и закончиться с -9999 (контрольное значение). Пользователь может вводить цифры в любом порядке. Ваша программа НЕ должна запрашивать у пользователя ввод положительных и отрицательных чисел отдельно.

Затем ваша программа должна создать список с введенными числами (убедитесь, что в этот список не включено значение контрольной суммы (-9999)), и выведите список и словарь со следующими парами Key-Value (с использованием ввода перечень и вышеуказанные функции):

Key = 'AvgPositive': Value = среднее значение всех положительных чисел 'AvgNonPos'

Key =: Value = среднее значение всех не-положительных чисел

Ключ = 'AvgAllNum': Значение = среднее значение для всех чисел

Пример запуска:

Введите номер (от -9999 до конца): 4

Введите номер (от -9999 до конца): -3

Введите номер (от -9999 до конца) : -15

Введите номер (-9999 до конца): 0

Введите номер (-9999 до конца): 10

Введите число (от -9999 до конец): 22

Введите номер (от -9999 до конца): -9999

Список всех чисел, введенных в:

[4, -3, -15, 0, 10, 22 ]

словарь со средними является:

{ 'AvgPositive': 12,0, '' AvgNonPos: -6.0, 'AvgAllNum': 3.0}

EDIT: Это то, что я до сих пор делал довольно быстро, чтобы иметь что-то, с чем можно работать, но я не могу понять, как реализовать ключи/словарь, как задание. Еще раз спасибо за любую помощь.

print("This program takes user-given numbers and calculates the average") 
counter = 0 
sum_of_numbers = 0 

first_question = int(input('Please enter a number. (Enter -9999 to end):')) 

while first_question != -9999 : 
    ent_num = int(input('Please enter a number. (Enter -9999 to end):')) 
    sum_of_numbers = sum_of_numbers + ent_num 
    counter = counter + 1 
    first_question = int(input('Please enter a number (Enter -9999 to end):')) 

print("Your average is " + str(sum_of_numbers/counter)) 
+0

Вопрос, похоже, очень сильно намекает на то, что вы должны поместить эти числа в список и послепровести список, а не выполнять вычисления в своем входном цикле. Это и быстрый взгляд на функции, доступные для работы с списками (например, 'sum()'), должно сделать это довольно простым ... Учет списков делает его еще проще ... – twalberg

ответ

0

Добро пожаловать в программирование на Python и программирование в целом!

Из вашего кода я предполагаю, что вы не совсем знакомы с списками, словарями и функциями Python и как их использовать. Я бы предложил вам найти учебники для них; зная, как их использовать, ваше задание значительно упростится.

Вот некоторые уроки, которые я нашел с некоторым быстрым поиском, которые могут помочь: Dictionary Tutorial, List Tutorial, Function Tutorial

Когда ваше задание говорит, чтобы сделать три функции, вероятно, вы должны сделать фактические функции, а не пытаться соответствовать функциональность в ваш цикл. Например, здесь есть простая функция, которая принимает число и добавляет 5 к нему, а затем возвращает его:

def addFive(number): 
    return number + 5 

Чтобы использовать его в вашем коде, вы бы что-то вроде этого:

num = 6 # num is now 6 
num = addFive(num) # num is now 11 

Итак, что вам нужно сделать, это создать объект списка, содержащий все введенные пользователем числа, а затем передать этот объект на три отдельные функции - posNumAvg, nonPosAvg, allNumAvg.

Создание словаря пар ключ-значение довольно просто - сначала создайте словарь, а затем заполните его соответствующими значениями. Например, вот как я бы создать словарь, как { «Hello»: «Мир»}

values = {} 
values['Hello'] = 'World' 
print(values) # Will print out {'Hello': 'World'} 

Так все, что вам нужно сделать, это для каждого из трех значений, необходимо, присвоить результат функции вызовите соответствующий ключ.

Если вам не кажется, что вам достаточно, чтобы выяснить это задание, прочитайте учебники снова и поиграйте со списками, словарями и функциями, чтобы попробовать и почувствовать их. Удачи!

P.S. Метод добавления в список будет полезен для вас. Попытайтесь выяснить, как его использовать!

Смежные вопросы