Ok, więc szukałem bazy danych i przeczytałem kilka postów, ale żaden z nich nie odpowiada na moje pytanie, przynajmniej w sposób rozumiem. Najpierw założyć, jestem nowy w Pythonie, ale masz jakieś doświadczenie w C # i niektóre C ++. W tych językach zmienne są "globalne" i możesz mieć tylko jedną instancję. Teraz z Python wydaje się, że zmienne są lokalne, a można mieć wiele instancji zmiennej o tej samej nazwie. W przypadku programu mam zamiar pisać do szkoły, powiedziano mi, używając globalnych danych, jest złą praktyką (nie rozumiem tego myślenia). Próbuję więc przekazać dane z pierwszej funkcji do drugiej funkcji. Kod jako napisany jest przy użyciu zmiennej globalnej, jednak próbuję zobaczyć, jak przekazał dane b / w nich.

    #modules
import time
#variables

testScores = []
#avg = 0.0

#functions
def calculate_average():
    x = 0
    print("Enter test scores")
    while (x <=4): #limits number of inputs to 5 test scores as required per instructions for lab
        test = input('Enter test score: ')
        #if test == "":
            #break
        x += 1
        testScores.append(float(test)) #adds input from test var into testScores list as a float
    time.sleep(1)
    print("","calculating average", ".........", "", sep = "\n")
    time.sleep(1)
    global avg #makes the var avg global so as to keep data stored so other functions can access the data
    avg = float(sum(testScores)/len(testScores))#takes all the data points stored in the list testScores and adds them up via sum ,and then divdes by (len)gth (aka number of data points)
    print("%.2f" % avg)#displays avg limiting to two decimal points rounding to the nearest 100th


def determine_grade(): #fucntion calls the var avg (which was made global in function 1) and converts it into a letter grade.
    if (avg >= 90.0 and avg <= 100.0):
        print("Grade = A")
    elif (avg >= 80.0 and avg <= 89.9):
        print("Grade = B")
    elif (avg >= 70.0 and avg <= 79.9):
        print("Grade = C")
    elif (avg >= 60.0 and avg <= 69.9):
        print("Grade = D")
    elif (avg <= 59.9):
        print("Grade = F")
def main():
    print("Beginning Program","", sep = "\n")
    time.sleep(1)
    calculate_average()
    determine_grade()
    time.sleep(1)
    print("","End of program...", "Have a good day...", "Program Terminated", sep = "\n")

main()

Potrzebuję pomocy, w jaki sposób mogę wziąć wartość z zmiennej "AVG" w obliczaniu_verage () i przekazać go, aby określić_grade ().

0
Matthew Harrison 26 czerwiec 2017, 19:47

3 odpowiedzi

Najlepsza odpowiedź
def calculate_average():
    x = 0
    print("Enter test scores")
    while (x <=4):
        test = input('Enter test score: ')
        x += 1
        testScores.append(float(test))
    time.sleep(1)
    print("","calculating average", ".........", "", sep = "\n")
    time.sleep(1)
    avg = float(sum(testScores)/len(testScores))
    print("%.2f" % avg)
    return avg

def determine_grade(avg):
    if (avg >= 90.0 and avg <= 100.0):
        print("Grade = A")
    elif (avg >= 80.0 and avg <= 89.9):
        print("Grade = B")
    elif (avg >= 70.0 and avg <= 79.9):
        print("Grade = C")
    elif (avg >= 60.0 and avg <= 69.9):
        print("Grade = D")
    elif (avg <= 59.9):
        print("Grade = F")

def main():
    print("Beginning Program","", sep = "\n")
    time.sleep(1)
    avg = calculate_average()
    determine_grade(avg)
    time.sleep(1)
    print("","End of program...", "Have a good day...", "Program Terminated", sep = "\n")
0
Igor Yudin 26 czerwiec 2017, 16:57

Co chcesz zrobić, to mieć kalkulacja () powrotu AVG, a następnie przejść AVG do Detrmine_grade ()

...
avg = calculate_average()
determine_grade(avg)
...

W kalkulacji zamiast

avg = float(sum(testScores)/len(testScores))

Robić

return float(sum(testScores)/len(testScores))

W języku określonym zamiast

def determine_grade():

Robić

def determine_grade(avg):
0
PhoenixFireFlite 26 czerwiec 2017, 16:54

Zobacz: Co znaczy w Pythonie?

Oto prosty przykład wykonania funkcji z wartością zwracaną przypisaną do zmiennej:

while True:
    avg = calculate_average(testScores)
    grade = determine_grade(avg)
    print(grade)
    time.sleep(1)

Aktualizacja:

Związane z:

0
jmunsch 26 czerwiec 2017, 18:15