用python+vue实现一个计算页面

要实现一个计算器页面,我们需要分别创建前端和后端部分。前端使用 Vue.js 框架,后端使用 Python 的 Flask 框架。

安装依赖

pip install flask
npm install -g vue
npm install -g @vue/cli
vue create calculator-frontend
cd calculator-frontend
npm run serve

在 calculator-frontend 目录下创建一个名为 src 的文件夹,并在其中创建一个名为 Calculator.vue 的文件。将以下代码粘贴到该文件中:

<template>
  <div id="app">
    <h1>简易计算器</h1>
    <input type="text" v-model="expression" />
    <button @click="calculate">计算</button>
    <p>结果: {{ result }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      expression: "",
      result: "",
    };
  },
  methods: {
    calculate() {
      this.$axios.post("http://localhost:5000/calculate", {
        expression: this.expression,
      }).then((response) => {
        this.result = response.data.result;
      });
    },
  },
};
</script>

在项目根目录下创建一个名为 backend.py 的文件,将以下代码粘贴到该文件中:

from flask import Flask, request, jsonify
import ast
import operator

app = Flask(__name__)

@app.route("/calculate", methods=["POST"])
def calculate():
    expression = request.json["expression"]
    try:
        result = eval_expr(expression)
        return jsonify({"result": result})
    except Exception as e:
        return jsonify({"error": str(e)})

def eval_expr(expr):
    ops = {ast.Add: operator.add, ast.Sub: operator.sub, ast.Mult: operator.mul, ast.Div: operator.truediv}
    node = ast.parse(expr, mode="eval")

    def _eval(node):
        if isinstance(node, ast.Expression):
            return _eval(node.body)
        elif isinstance(node, ast.Num):
            return node.n
        elif isinstance(node, ast.BinOp):
            left = _eval(node.left)
            right = _eval(node.right)
            return ops[type(node.op)](left, right)
        else:
            raise TypeError(node)

    return _eval(node.body)

if __name__ == "__main__":
    app.run(debug=True)

运行后端服务器

python backend.py

访问 http://localhost:8080,你将看到一个简单的计算器页面。在输入框中输入表达式,然后点击“计算”按钮,结果将显示在页面上。

相关推荐

  1. python+vue实现一个计算页面

    2024-06-13 22:04:03       8 阅读
  2. C#多页面一个实例

    2024-06-13 22:04:03       14 阅读
  3. python实现一个计算器

    2024-06-13 22:04:03       35 阅读
  4. Python设计一个计算器

    2024-06-13 22:04:03       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-13 22:04:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-13 22:04:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-13 22:04:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-13 22:04:03       20 阅读

热门阅读

  1. 网络:用2个IP地址描述一个连接

    2024-06-13 22:04:03       8 阅读
  2. 【无标题】

    2024-06-13 22:04:03       7 阅读
  3. vue3生命周期

    2024-06-13 22:04:03       5 阅读
  4. Qt | QTextStream 类(文本流)

    2024-06-13 22:04:03       10 阅读
  5. oppo手机精简包名列表

    2024-06-13 22:04:03       3 阅读
  6. SQL Server中的CTE和临时表优化

    2024-06-13 22:04:03       9 阅读
  7. Pipeline流水线组件

    2024-06-13 22:04:03       7 阅读
  8. 配置调整BGP网络的收敛速度方法

    2024-06-13 22:04:03       7 阅读
  9. Scikit Learn中支持单变量特征选择的SVM示例

    2024-06-13 22:04:03       8 阅读
  10. 一文入门机器学习

    2024-06-13 22:04:03       9 阅读
  11. Go AfterFunc 不触发

    2024-06-13 22:04:03       7 阅读
  12. 源码编译构建LAMP

    2024-06-13 22:04:03       8 阅读
  13. 超详细Python教程——迭代器和生成器综合例子

    2024-06-13 22:04:03       9 阅读
  14. C 运算符优先级

    2024-06-13 22:04:03       9 阅读
  15. windows执行定时任务

    2024-06-13 22:04:03       8 阅读