TypeError:take_quiz()缺少1个必需的位置参数:'database'

时间:2016-11-23 20:42:20

标签: python python-3.x

我是编程的新手,我正在尝试从一个函数返回一个字典并在另一个函数中使用它,但是我一直得到与标题中所述相同的错误。这是我的代码:

def read_qa(filename = 'data.csv'):
    database = {}
    f_in = open(filename, 'r')
    for line in f_in:
        line_list = line.strip().split(',')
        question = line_list[0]
        answers = line_list[1:]
        database[question] = answers
    f_in.close()
    return database

def take_quiz(database):
    name = input("Enter your name: ")
    num_questions = eval(input("How many questions?: "))
    if num_questions < len(database):
        print('The quiz will have', num_questions, 'questions.')
    else:
        print('The quiz will have', len(database), 'questions.')
    print()

read_qa()
take_quiz()



Error:
Traceback (most recent call last):
  File "/Users/BA/PycharmProjects/p/b.py", line 22, in <module>
    take_quiz()
TypeError: take_quiz() missing 1 required positional argument: 'database'

Process finished with exit code 1

1 个答案:

答案 0 :(得分:0)

您正在从read_qa()返回一个值。因此,您必须将此函数分配给可以存储返回值的变量。 同样在take_quiz()的def中,它期望一个在函数声明中被称为“数据库”的参数。所以你需要在调用take_quiz()时传递一个类似的正确参数。 temp = read_qa(),然后, take_quiz(温度)。 您可以使用任何有效的变量名称而不是temp。 我希望这有帮助...