Использование возвращаемого значения в последующей функции - PullRequest
0 голосов
/ 17 февраля 2020

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

def add(x,y):
  addition = x + y
  return addition

def square(a):
  result = a * a
  return result

sum = add(1,4)
product = square(addition)

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

Редактировать: это пример кода, над которым я на самом деле работаю, который даст лучшее представление о том, в чем проблема. Проблема в том, что я отправляю среднее значение в функцию calcStdDev.

#import libraries to be used
import time
import StatisticsCalculations

#global variables
mean = 0
stdDev = 0

#get file from user
fileChoice = input("Enter the .csv file name: ") 
inputFile = open(fileChoice)

headers = inputFile.readline().strip('\n').split(',') #create headers for columns and strips unnecessary characters

#create a list with header-number of lists in it
dataColumns = []
for i in headers:
  dataColumns.append([]) #fills inital list with as many empty lists as there are columns

#counts how many rows there are and adds a column of data into each empty list
rowCount = 0
for row in inputFile:
  rowCount = rowCount + 1
  comps = row.strip().split(',') #components of data
  for j in range(len(comps)):
    dataColumns[j].append(float(comps[j])) #appends the jth entry into the jth column, separating data into categories

k = 0
for entry in dataColumns:
  print("{:>11}".format(headers[k]),"|", "{:>10.2f}".format(StatisticsCalculations.findMax(dataColumns[k])),"|", 
    "{:>10.2f}".format(StatisticsCalculations.findMin(dataColumns[k])),"|","{:>10.2f}".format(StatisticsCalculations.calculateMean(dataColumns[k], rowCount)),"|","{:>10.2f}".format()) #format each data entry to be right aligned and be correctly spaced in its column
#prining break line for each row
  k = k + 1 #counting until dataColumns is exhausted

inputFile.close()

И модуль StatisticsCalculations:

import math

def calculateMean(data, rowCount):
  sumForMean = 0
  for entry in data:
    sumForMean = sumForMean + entry
    mean = sumForMean/rowCount

  return mean

def calculateStdDev(data, mean, rowCount, entry):
  stdDevSum = 0 
  for x in data: 
    stdDevSum = float(stdDevSum) + ((float(entry[x]) - mean)** 2) #getting sum of squared difference to be used in std dev formula
  stdDev = math.sqrt(stdDevSum / rowCount) #using the stdDevSum for the remaining parts of std dev formula

  return stdDev


def findMin(data):
  lowestNum = 1000
  for component in data:
    if component < lowestNum:
      lowestNum = component

  return lowestNum

def findMax(data):
  highestNum = -1
  for number in data:
    if number > highestNum:
      highestNum = number

  return highestNum

1 Ответ

0 голосов
/ 17 февраля 2020

Прежде всего, sum является зарезервированным словом, вы не должны использовать его в качестве переменной.

Вы можете сделать это следующим образом:

def add(x,y):
  addition = x + y
  return addition

def square(a):
  result = a * a
  return result

s = add(1, 4)
product = square(s)

Или напрямую:

product = square(add(1, 4))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...