using the output of a function as the input in ano

2019-09-18 18:38发布

问题:

# any help is greatly appreciated new to this stuff 

def total_bases(int1,int2,int3,int4):
    """(int, int, int, int) -> integer
    Return the total number of bases covered 
    >>>total_bases(2,3,4,5)
    40
    """

    return int1+2*int2+3*int3+4*int4

def slugging_percentage(total_bases,int5):
    """ (total_bases, int5) -> float # so for instance i need the product of the first function for the second function 
    Return the slugging percentage given the total number of bases covered and the total number at bat(int5)
    >>>slugging_percentage(20,9)
    2.22
    """

    return total_bases/int5

def on_base_percentage(h,bb,hbp,ab,sf):
    """(int,int,int,int,int) -> float
    Return the on-base percentage given the hits, base on balls, hit by pitch, at bats and sacrfice hits
    >>>on_base_percentage(1,2,3,4,5)
    0.43
    """

    return (h+bb+hbp)/(ab+bb+hbp+sf)

def on_base_plus_slugging(on_base_percentage,slugging_percentage):
    """(float,float) -> float # as well as for this 
    Return the on-base plus slugging given the on-base percentage and the slugging percentage 
    >>>on_base_plus_slugging(1.0,2.0)
    3.0
    """

    return on_base_percentage+slugging_percentage

def OPS_value(on_base_plus_slugging):
    """(float) -> string
    Return the on-base plus slugging value given the on-base plus slugging score range 
    >>>OPS_value(0.8234)
    B
    """
if on_base_plus_slugging > 0.9000:
    return "A"
elif on_base_plus_slugging > 0.7667:
    return "B"
elif on_base_plus_slugging > 0.7000:
    return "C"
else on_base_plus_slugging < 0.7000:
    return "F"
elif on_base_plus_slugging == 0.7000:
    return "F"

回答1:

Save the variable as global is one way.

 def some_function():
      global var     #This is a global variable
      #Do things to variable

The other way, which is what I believe you are looking for is to call a function inside of a function. This would look like this:

 def function_1(#some variable):
      #Stuff could be up here
      num = function2(5)
      #Stuff could be down here

 def function_2(a_number):
      a_number = a_number*2
      return a_number

This will make the variable num = 5*2.

I hope this helps.



回答2:

Functions can return values. You can store those values as variables. Then you can use those values as input to other functions.

I imagine you're trying to calculate the OPS_value using on_base and slugging percentages.

So you would calculate on_base, total_bases, and slugging and store the returned values in variables.

You then pass in those variables as input to your OPS_value function, which returns the final, calculated value.

See the below example:

def OPS_value(percent):
    """(float) -> string
    Return the on-base plus slugging value given the on-base plus slugging score range 
    >>>OPS_value(0.8234)
    B
    """

    if percent > 0.9000:
        return "A"
    elif percent > 0.7667:
        return "B"
    elif percent > 0.7000:
        return "C"
    else:
        return "F"

total_bases = total_bases(2, 3, 4, 5) # Get the return value for total_bases

slugging = slugging_percentage(total_bases, 9) # Get the return value for slugging_percent
on_base = on_base_percentage(1, 2, 3, 4, 5) 
print OPS_value(on_base + slugging) # using on_base + slugging as input

What we're trying to do is keep the math related to calculating each thing total_bases, slugging, etc separate.

The other major change from your original code is that you don't need to have a function for just adding two values. You can and should do that in one line.