簡體   English   中英

如何使用python在函數中使用列表作為參數

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

我對編程很新,並且只有一個月這樣做了。 目前我正在嘗試獲取用戶輸入,將其存儲在列表中,並將該列表傳遞給函數。 我在使用列表作為函數的參數(最后一行代碼)時遇到了麻煩。 預先感謝!

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))

在最后一個print行之前,定義標記列表,例如marks = [70, 68, 50, 89, ...] 70,68,50,89 marks = [70, 68, 50, 89, ...]並將其傳遞給函數調用中的gpaCalc:

print(gpaCalc(marks))

請注意, Python約定表明您不應在標識符中使用駝峰大小寫; 使用下划線代替: gpa_calc

編輯:我錯過了問題的重點! 要獲取用戶的輸入,請使用循環:

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

如果您想要解釋,請發表評論!

您可以傳遞一個列表,就像將它正常傳遞給任何函數一樣,只需始終確保通過正確索引訪問列表中的項目,而不是計算整個列表。 請改用以下內容:

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))

按原樣檢查“完成”。 如果沒有完成,那么轉換浮動。

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

排序...

    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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM