2014-10-01 4 views
0

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

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

Проблемы: обе функции имеют проблемы с вычислением, если в коде есть десятичное число (1.2, 1.3, 7.423 и т. Д.). Медианная функция будет округлять числа, если медиана должна иметь десятичное значение.

Выяснить, как вычислить режим также сложно. Если кто-то может мне помочь, это было бы здорово.

Спасибо за любую помощь, которую вы можете предложить. Это моя первая публикация здесь.

Вот код:

#instructions for user 
print ("This program is designed to calculate mean, median, and mode.") 
print ("I need you to type the numbers you desire to be calculated.") 
print ("") 
print ("NOTICE: Use the spacebar to separate your numbers.") 
print ("") 
print ("NOTICE: Press enter to finalize your numbers list.") 
print ("") 

#creates list of numbers 
s = raw_input("Begin typing: ") 
numbers = map(int, s.split()) 

#instructions for user 
print "" 
print "Type 'mean()' to calculate for mean." 
print "Type 'median()' to calcuate for median." 
print "" 

#creates mean function 
def mean(): 
    print "the mean is: " + str(sum(numbers)/len(numbers)) 

#creates median function 
def median(): 
    print "the median is: " + str(sorted(numbers)[len(numbers)//2]) 

ответ

0
numbers = map(int, s.split()) 

Использование int обрезает каждое число, округление до ближайшего целого числа. Используйте float, если вы хотите обрабатывать десятичные знаки.

numbers = map(float, s.split()) 
+0

спасибо. Это значительно облегчает мою среднюю функцию. Когда я использую свою медианную функцию, у меня все еще есть проблемы. Если я ввожу 1 2 3 4 в качестве своего списка, моя медиана выходит до 3.0, что неверно. Это должно быть 2.5 –

+0

Это потому, что вы просто получаете средний элемент по целочисленному делению ('len (numbers) // 2'); если вы хотите взять среднее значение из двух средних элементов, вам понадобится специальный случай, когда длина будет четной. – caseygrun

+0

не могли бы вы дать мне некоторый код, чтобы уйти. Я точно не знаю. –

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