如何将多个输入从用户传递给函数?

时间:2013-11-19 22:14:34

标签: python python-3.x

我正在尝试获得测试,作业,测验和实验室的数量。然后将这些值传递给函数以获取类别中每个项目的分数。

如何传递多个值以便在函数中使用?

def get_initial_input():

    int(input("How many assignments? "))
    int(input("How many quizzes? "))
    int(input("How many labs? "))
    int(input("How many tests? "))

    #Trying to pass all the values entered above to the function below
    #Using 'return' I can only pass one value

def get_scores(s):


    for x in range(len(s)):
        s[x] = int(input("Give a score: "))

def main():

    num = get_initial_input()
    scores = [0] * num

    get_scores(scores)

    total = 0
    for x in range(len(scores)):
        total += scores[x]

    print("The sum is: "+str(total))

    if total > 0:
        print("The average is: "+str(total/num))

    if (total/num) > 100:
        print("You got extra credit!")

main()

4 个答案:

答案 0 :(得分:0)

您需要存储返回的输入:

assignments = int(input("How many assignments? "))

现在您有一个可以使用的变量。你需要从函数中返回它:

def get_initial_input():    
    assignments = int(input("How many assignments? "))
    quizzes = int(input("How many quizzes? "))
    labs = int(input("How many labs? "))
    tests = int(input("How many tests? "))
    return assignments, quizzes, labs, tests

并且存储函数调用的返回值时:

assignments, quizzes, labs, tests = get_initial_input()

答案 1 :(得分:0)

将它们分配给变量:

assigments = int(input("How many assignments? "))
quizzes = int(input("How many quizzes? "))

存储后,您可以返回全部:

return [assigment, quizzes,...]

希望这有帮助!

答案 2 :(得分:0)

def get_initial_input():
    input_list = []
    input_list.append(int(input("How many assignments? ")))
    input_list.append(int(input("How many quizzes? ")))
    input_list.append(int(input("How many labs? ")))
    input_list.append(int(input("How many tests? ")))
    return input_list

def get_scores(s):
    return [ int(input("Give a score: ")) for x in s]
    #use list comprehensions

def main():

    input_list = get_initial_input()
    scores = get_scores(input_list)

    total = sum(scores)
    num = sum(input_list) # I am assuming this

    print("The sum is: "+str(total))
    if total > 0:
        print("The average is: "+str(total/num))

    if (total/num) > 100:
        print("You got extra credit!")

main()

要记住的要点。

  1. 要从函数返回多个值,有很多解决方法。如果其中一个值使用list值。
  2. 在函数get_scores中,我使用了列表推导。它也可以使用for循环来完成:for item in s: score_list.append(...); return score_list。列表理解更清晰,更灵腻。
  3. 您不再需要为sum数组写一个循环。 Python有内置函数来做到这一点。只需使用sum(list)即可。 Built-in Functions
  4. 我看到你正在使用类似C / C ++的编码风格。阅读更多教程并编写更多代码将有助于开发编写代码的pythonic风格。

答案 3 :(得分:0)

您可以返回任何能够保存所有值的对象。

元组的示例

def get_initial_input():
    return tuple( int(input("How many "+q+"? ")) \
        for q in ["assignments", "quizzes", "labs", "tests"] )

assignments, quizzes, labs, tests = get_initial_input()

了解如何将元组分配给多个变量。

dict示例:

def get_initial_input():
    res={}
    for q in ["assignments", "quizzes", "labs", "tests"]:
        res[q] = int(input("How many "+q+"? "))
    return res

config = get_initial_input()

这里有一个dict,其中包含用户输入的所有值。