![]() |
Class method returning multiple values,dont know which is returned when.. - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: Class method returning multiple values,dont know which is returned when.. (/thread-196.html) |
Class method returning multiple values,dont know which is returned when.. - ujjwalrathod007 - Sep-29-2016 Dear all, Good morning from Germany, I have a python code in which the function returns two values. Out of which, only one value changes at a time and other remains the same. I want to find which is changing and want to append it. The code looks as following def calcrand(self,xlowrand,xhighrand): xalg = self.xalg yalg = self.yalg xlowrand = self.xlowrand xhighrand = self.xhighrand if (len(xalg))>=2 and len(yalg)>=2: last = len(yalg)-1 xPrevious = xalg[last-1] xLast = xalg[last] yPrevious = yalg[last-1] yLast = yalg[last] prevdist= abs(yalg[last-1]-ygoal) currentdist= abs(yalg[last]-ygoal) if currentdist<prevdist: m=float ((yLast-yPrevious)/(xLast-xPrevious)) if m>0: if yalg[last]< ygoal: xlowrand=xalg[last] return float(xlowrand),float(xhighrand), else: xhighrand=xalg[last] return float(xlowrand),float(xhighrand) elif yalg[last]< ygoal: xhighrand=xalg[last] return float(xlowrand),float(xhighrand) else: xlowrand=xalg[last] return float(xlowrand),float(xhighrand) elif (len(xalg))==1: return float(xlowrand),float(xhighrand) elif (len(xalg))<1: return float(xlowrand),float(xhighrand) else: print('there are no data') return float(xlowrand),float(xhighrand)I run this in a loop... RE: Class method returning multiple values,dont know which is returned when.. - Larz60+ - Sep-29-2016 Hello, Since you are already returning a tuple, just add a third value which indicates what the other two values are. this can be a code, 1 - condition 1, 2 - condition 2, ... or it can be a string like ,m < 0' Larz60+ RE: Class method returning multiple values,dont know which is returned when.. - ujjwalrathod007 - Sep-29-2016 Hello, I am still not clear what do you mean?? I get output as following when I run it in loop Quote:returnvalue 0.0 9.0 for the first iteration (0 , 9) is the return than (0 , 7.599) so I only want to append like (0, 9, 7.599, 3.88, 5.38, ) RE: Class method returning multiple values,dont know which is returned when.. - Larz60+ - Sep-29-2016 Hello, Taking the following snippet of your code: if currentdist<prevdist: m=float ((yLast-yPrevious)/(xLast-xPrevious)) if m>0: if yalg[last]< ygoal: xlowrand=xalg[last] return float(xlowrand),float(xhighrand), else: xhighrand=xalg[last] return float(xlowrand),float(xhighrand)you could add a list which shows how the values were constructed like: msg = [] if currentdist < prevdist: msg.append('currentdist < prevdist') m = float((yLast - yPrevious) / (xLast - xPrevious)) if m > 0: msg.append('m > 0') if yalg[last] < ygoal: xlowrand = xalg[last] return float(xlowrand), float(xhighrand), msg else: msg.append('m <= 0') xhighrand = xalg[last] return float(xlowrand), float(xhighrand), msgNow results will include a list like: 3.8855839217, 7.59979666373, ['currentdist < prevdist', 'm <= 0']Larz60+ RE: Class method returning multiple values,dont know which is returned when.. - ujjwalrathod007 - Oct-03-2016 Thank you it has helped me. Nevertheless I have 1 new issue which I have posted maybe you can have a look.!! |