MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Problem with the 'if' command


your condition does not check for Even/Odd. Use EvenQ or OddQ for this 


hope this helps, Daniel

mathandpi wrote:

> Hi everyone,

> I'm a new Mathematica user so I may be missing something fairly obvious, but I'm having trouble with the 'if' command.

> I'm writing a function that is supposed to return the median of a list (I know such a function already exists, but I need to create one myself).


> What I have is:


> newMedian[list_] := 

>  If[Length[list]/2 == 0, 

>   1/2*(list[[(Length[list]/2) + 1]] + list[[(Length[list])/2]])

>   , list[[(Length[list] + 1)/2]]]


> if the list has an off number of members (condition is false), it evaluates as expected.  If it's even, however,


> newMedian[{1, 2, 3, 4}] returns:

> Part::pspec: Part specification 5/2 is neither an integer nor a list of integers.




> list={1,2,3,4};


> 1/2*(list[[(Length[list]/2) + 1]] + list[[(Length[list])/2]])

> returns 5/2, as expected so that code is right.


> It seems likes its actually evaluating the false part of the code (trying to find the 5/2'ith element in a list), even though the condition is true.


> What's going on here?


> Thanks


  • Prev by Date: Help with project needed
  • Next by Date: Re: Problem with the 'if' command
  • Previous by thread: Re: Problem with the 'if' command
  • Next by thread: Re: Problem with the 'if' command