简体   繁体   中英

how do I use a list as an argument in a function using python

I'm fairly new to programming and have only been doing so for a month. Currently I'm trying to get user input, store it in a list, and pass that list into a function. I'm having trouble using the list as an argument for my function (the last line of code). Thank in advance!

grade_list = []
percentages = 0

while True:
    percentages = input("Enter some numbers here: ")
    if percentages == "done":
        break
    grade_list.append(percentages)

print(grade_list)


def gpaCalc(marks):
    gpaList = []
    for grade in marks: #sorts data
        if grade <= 49.99:
            grade = 0.00

        elif 50 <= grade <= 52.99:
            grade = 0.70

        elif 53 <= grade <= 56.99:
            grade = 1.00

        elif 57 <= grade <= 59.99:
            grade = 1.30

        elif 60 <= grade <= 62.99:
            grade = 1.70

        elif 63 <= grade <= 66.99:
            grade = 2.00

        elif 67 <= grade <= 69.99:
            grade = 2.30

        elif 70 <= grade <= 72.99:
            grade = 2.70

        elif 73 <= grade <= 76.99:
            grade = 3.00

        elif 77 <= grade <= 79.99:
            grade = 3.30

        elif 80 <= grade <= 84.99:
            grade = 3.70

        elif 85 <= grade <= 89.99:
            grade = 3.90

        elif 90 <= grade <= 100:
            grade = 4.00

        gpaList.append(grade) #gathers data into list
        gpaList.sort()

    return gpaList

print (gpaCalc(PROBLEM))

Right before the last print line, define your list of marks, eg marks = [70, 68, 50, 89, ...] and pass it to gpaCalc in your function call:

print(gpaCalc(marks))

Note that Python convention says you should not use camel case in your identifiers; use underlines instead: gpa_calc

Edit: I missed the point of the question! To get the user's inputs, use a loop:

def get_user_input():
    grades = []

    while True:
        # take input
        value = ... # figure it out

        if value == 'q':
            break

        try:
            # do basic validation here
            grades.append(int(value))

            # might be a good idea to check the range too…
        except ValueError:
            print("This is not a valid grade!")

    return grades

If you would like an explanation, leave a comment!

You can pass a list as you would pass it normally into any function, just always make sure you are accessing the items in the list by indexing correctly, rather than calculating the whole list. Use the following instead:

def gpaCalc(marks):
    gpaList = []
    for grade in marks[0]: #sorts data

        if grade <= 49.99:
            grade = 0.00

        elif 50 <= grade <= 52.99:
            grade = 0.70

        elif 53 <= grade <= 56.99:
            grade = 1.00

        elif 57 <= grade <= 59.99:
            grade = 1.30

        elif 60 <= grade <= 62.99:
            grade = 1.70

        elif 63 <= grade <= 66.99:
            grade = 2.00

        elif 67 <= grade <= 69.99:
            grade = 2.30

        elif 70 <= grade <= 72.99:
            grade = 2.70

        elif 73 <= grade <= 76.99:
            grade = 3.00

        elif 77 <= grade <= 79.99:
            grade = 3.30

        elif 80 <= grade <= 84.99:
            grade = 3.70

        elif 85 <= grade <= 89.99:
            grade = 3.90

        elif 90 <= grade <= 100:
            grade = 4.00

        gpaList.append(grade) #gathers data into list
        gpaList.sort()

    return gpaList

grade_list = []
percentages = 0

while True:
    percentages = input("Enter some numbers here: ")
    if percentages == "done":
        break
    grade_list.append(percentages)

print(gpaCalc(grade_list))

keep your check for "done" as is. if it is not done, then convert float.

while True:
    percentages = input("Enter some numbers here and 'done' to exit:")
    if percentages == "done":
        break

    try:
        grade_list.append(float(percentages))
    except ValueError:
        pass

sorting...

    for grade in marks: #sorts data
        .....

        gpaList.append(grade) #gathers data into list

    #also, sort outside the loop, when done, not each time.
    gpaList.sort()

    return gpaList

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM