Python 3.x 如何在不重新运行整个函数的情况下获取函数值

Python 3.x 如何在不重新运行整个函数的情况下获取函数值,python-3.x,Python 3.x,我想保存之前输入的列表的值,而不必在调用函数保存时重新输入 最好不要使用OOP,因为它目前不在我的学习模块内,但如果它不可避免,那么也欢迎自学 def createQuiz(): quiz = [] for i in range(2): quiz.append(str(i+1) + ') ' + input('Please input Question ' + str(i+1) + ':\n')) for j in range(4):

我想保存之前输入的列表的值,而不必在调用函数保存时重新输入

最好不要使用OOP,因为它目前不在我的学习模块内,但如果它不可避免,那么也欢迎自学

def createQuiz():
    quiz = []
    for i in range(2):
        quiz.append(str(i+1) + ') ' + input('Please input Question ' + str(i+1) + ':\n'))
        for j in range(4):
            quiz.append(chr(97+j) + '. ' + input('Please input option ' + str(j+1) + ':\n'))
        quiz.append('Answer: ' + input('Please input Answer(A,B,C,D):\n'))
    return quiz


def saveQuiz():
    with open('quiz.txt', 'w') as file:
        for i in createQuiz():
            file.write(i)
            file.write('\n')


def menu():
        userinput = int(input())
        if userinput == 1:
            createQuiz()
        elif userinput == 2:
            saveQuiz()
我希望它将列表中的值保存到文件中,但是当我运行savequick()时,它会运行整个createquick(),要求我再次输入值。

您的行

for i in createQuiz():
正在调用一个新的测验实例,但未提及您以前进行的测验。我想你是有意这么做的:

def createQuiz():
    quiz = []
    for i in range(2):
        quiz.append(str(i+1) + ') ' + input('Please input Question ' + str(i+1) + ':\n'))
        for j in range(2):
            quiz.append(chr(97+j) + '. ' + input('Please input option ' + str(j+1) + ':\n'))
        quiz.append('Answer: ' + input('Please input Answer(A,B,C,D):\n'))
    return quiz


def saveQuiz(quiz):
    with open('quiz.txt', 'w') as file:
        for i in quiz:
            file.write(i)
            file.write('\n')

quiz_instance = createQuiz()
saveQuiz(quiz_instance)
这给了我一个文件'quick.txt',包含

1) q1
a. a
b. b
Answer: b
2) q2
a. a
b. b
Answer: a

import json
json.dump(文件,我的列表)
将是一种比将来重新分析该文件容易得多的方法,因为它将支持
json.load(文件)
。Json是围绕列表和dicts设计的,这使它成为存储数据的一种很好的方式。谢谢,关于这个问题,我会查找它,所以您希望每次有输入时都保存到文件中,对吗?这在内存管理方面似乎效率低下。收集一些结果并在完成所有工作后保存它们没有什么错。因此,我根据问题对问题进行了编辑,使其与最终产品更为相似。第一个是生成一个函数,该函数接收用户输入并将其保存到列表中。第二个是制作一个函数,将值保存到文件中。当前代码的问题是,当我运行savequick()函数时,它会重新运行整个代码,要求我重新输入值。但是,我想要的是运行第一个将值输入列表,当我在选项中输入2时,它只会将列表上的信息保存到文件中。我认为,由于我已经在CreateQuike()中使用了return Quike来返回测验列表,当我在SaveQuike()中引用CreateQuike()时,它将返回list Quike的值。顺便重申一下我的问题,我想做的是,当我运行savequick()时,它不会运行整个createquick()函数,包括再次请求输入,而只是将列表测验中当前的内容保存到文件中。我曾考虑过使用全局变量,但很多帖子都提到不推荐使用它。一方面,你把
createquick()
当作一个对象来谈论,另一方面,你把
createquick()
当作一个函数来谈论。这是两件不同的事情。函数不是为存储数据而构建的。但是,输出(您通过返回测验给出)可以用于其他目的,例如保存它。这正是
savequick(quick)
函数在我的代码中所做的。我希望这能回答您的问题。如果有,您可以使用复选框接受我(或任何其他)的答案作为接受答案