python:比较等效坐标

标签 python mysql math sympy

我正在使用 python 3 为我的类(class)作业做一个基于微分和集成的数学测验。我发现很难检查用户输入的答案是否正确。我目前正在使用下面的代码。但是,如果用户键入答案但顺序不同,则将其视为不正确。例如,如果答案是 (2,4) 但我输入的是 (4/2,4),尽管两个答案都是正确的,但它会被视为不正确。我试过使用 sympify 但它不起作用。我将如何克服这个问题?

    def Question4(self):
        QID = 109
        conn = mysql.connector.connect(user="root", password = "", host = "")
        mycursor = conn.cursor()
        #mysql query 
        query = """
        SELECT 
            QText, QAnswer, Marks
        FROM 
            QuestionInfo.Question
        WHERE 
            QID = %s
        """
        mycursor.execute(query, (QID, ))
        Question4, Answer4, Mark4 = mycursor.fetchone()
        self.Answer4 = str(Answer4)
        self.Mark4 = Mark4
        self.next_question.clicked.connect(self.HandleQuestion4)

    def HandleQuestion4(self):
        #for validation
        reply = QtGui.QMessageBox.question(self, 'Message',
            "Are you sure this is your final answer?", QtGui.QMessageBox.Yes | 
            QtGui.QMessageBox.No, QtGui.QMessageBox.Yes)
        #get users answer in a sympy state
        self.UAnswer4 = self.Answer.text().replace("^", "**")

        if reply == QtGui.QMessageBox.Yes:
            if sympify(self.UAnswer4) == sympify(self.Answer4):
                self.score = self.score + self.Mark4
            else:
                self.score = self.score + 0
            self.Question5()

最佳答案

如果您只需要数字,那么您可以在字符串上使用 S(sympify 的缩写)。否则,您可能需要 parse_expr 和/或其他字符串处理来处理其他语法,例如隐式乘法和求幂的“^”(请参阅​​ sympy.parsing.sympy_parser):

>>> S('4/2,2')
(2, 2)

关于python:比较等效坐标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28973373/

相关文章:

python - 正则表达式查找字符串中两个标记之间的位置

python - 从 CSV 文件读取时对数组的数值运算

javascript - Sequelize : A is not associated to B"nodejs

php - 有没有办法从另一个表插入记录

c# - 检测图中异常快速的跳跃

algorithm - 在线性时间内计算集合交集?

algorithm - 重复的递归排列

python - 如何从我的数据框列中删除 u-unicode 字符,该列是由字典组成的字符串?

python - 如何使用 Python C API 从对象的方法访问常量?

php - 如何在 Laravel 中按搜索词条件进行过滤?