看看DeepSeek写的计算器

公 众 号:木木与代码
本文作者:@MuMu
编写日期:2025年03月07日
本文字数:3520个字符
关注可了解更多的教程。问题或建议,请公众号留言;

效果:

上图计算器是使用Trae让DeepSeek帮我开发的,功能都可以用,页面和很美观!都是一条指令完成的,包括文件创建和代码生成。

下面给大家分享一下代码:

HTML

<!DOCTYPE html>
<html lang="zh-CN">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>网页计算器</title>
  <link rel="stylesheet" href="./style.css">
</head>
<body>
  <div class="calculator">
    <div class="display">0</div>
    <div class="buttons">
      <button class="operator" data-action="clear">C</button>
      <button class="operator" data-action="sign">±</button>
      <button class="operator" data-action="percent">%</button>
      <button class="operator" data-action="divide">÷</button>
      
      <button data-number="7">7</button>
      <button data-number="8">8</button>
      <button data-number="9">9</button>
      <button class="operator" data-action="multiply">×</button>
      
      <button data-number="4">4</button>
      <button data-number="5">5</button>
      <button data-number="6">6</button>
      <button class="operator" data-action="subtract">-</button>
      
      <button data-number="1">1</button>
      <button data-number="2">2</button>
      <button data-number="3">3</button>
      <button class="operator" data-action="add">+</button>
      
      <button data-number="0" class="span-2">0</button>
      <button data-number=".">.</button>
      <button class="operator" data-action="calculate">=</button>
    </div>
  </div>
  <script src="./app.js"></script>
</body>
</html>

CSS

.calculator {
  width: 320px;
  margin: 50px auto;
  padding: 20px;
  background: #f0f0f0;
  border-radius: 10px;
  box-shadow: 0 0 10px rgba(0,0,0,0.2);
}

.display {
  background: #fff;
  padding: 20px;
  margin-bottom: 10px;
  border-radius: 5px;
  text-align: right;
  font-size: 2em;
  height: 60px;
}

.buttons {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 10px;
}

button {
  padding: 20px;
  border: none;
  background: #fff;
  border-radius: 5px;
  font-size: 1.2em;
  cursor: pointer;
  transition: background 0.3s;
}

button:hover {
  background: #e0e0e0;
}

.operator {
  background: #ff9500;
  color: white;
}

.operator:hover {
  background: #ff7b00;
}

.span-2 {
  grid-column: span 2;
}

JavaScript

let displayValue = '0';
let firstOperand = null;
let operator = null;
let waitingForSecondOperand = false;

const display = document.querySelector('.display');
const buttons = document.querySelectorAll('button');

function updateDisplay() {
  display.textContent = displayValue;
}

buttons.forEach(button => {
  button.addEventListener('click', () => {
    const action = button.dataset.action;
    const number = button.dataset.number;

    if (number) {
      handleNumber(number);
    } else if (action) {
      handleOperator(action);
    }
  });
});

function handleNumber(num) {
  if (waitingForSecondOperand) {
    displayValue = num;
    waitingForSecondOperand = false;
  } else {
    displayValue = displayValue === '0' ? num : displayValue + num;
  }
  updateDisplay();
}

function handleOperator(op) {
  switch(op) {
    case 'clear':
      displayValue = '0';
      firstOperand = null;
      operator = null;
      waitingForSecondOperand = false;
      break;
    case 'sign':
      displayValue = (parseFloat(displayValue) * -1).toString();
      break;
    case 'percent':
      displayValue = (parseFloat(displayValue) / 100).toString();
      break;
    case 'calculate':
      if (operator && firstOperand !== null) {
        const result = calculate(firstOperand, displayValue, operator);
        displayValue = result.toString();
        firstOperand = result;
        operator = null;
        waitingForSecondOperand = true;
      }
      break;
    default:
      if (operator && !waitingForSecondOperand) {
        const result = calculate(firstOperand, displayValue, operator);
        displayValue = result.toString();
        firstOperand = result;
      } else {
        firstOperand = parseFloat(displayValue);
      }
      operator = op;
      waitingForSecondOperand = true;
  }
  updateDisplay();
}

function calculate(a, b, op) {
  a = parseFloat(a);
  b = parseFloat(b);
  switch(op) {
    case 'add': return a + b;
    case 'subtract': return a - b;
    case 'multiply': return a * b;
    case 'divide': return b === 0 ? '错误' : a / b;
    default: return b;
  }
}

updateDisplay();

如果你没有使用过Trae,可以查看作者前期发布的文章!

作者公众号:木木与代码

欢迎关注作者一起讨论和学习。

电力系统潮流计算是电力工程领域的一项核心技术,主要用于分析电力网络在稳态运行条件下的电压、电流、功率分布等运行状态。MATLAB凭借其强大的数值计算功能和便捷的编程环境,成为电力系统潮流计算的重要工具,它提供了丰富的数学函数库,能够高效地处理复杂的电力系统计算任务。 本压缩包中的“潮流计算MATLAB程序”是一套完整的电力系统潮流计算解决方案,主要包括以下几个关键部分: 数据输入模块:该模块负责读取电力系统的网络数据,包括发电机、线路、变压器等设备的参数。这些数据通常来源于IEEE测试系统或实际电网,并以特定格式存储。 网络建模:基于输入数据,程序构建电力系统的数学模型,主要涉及节点功率平衡方程的建立。每个节点的注入功率等于其消耗功率,对于发电机节点还需考虑其有功和无功功率的调节能力。 迭代算法:潮流计算的核心是求解非线性方程组,常见的算法有牛顿-拉夫森法和高斯-塞德尔法。MATLAB的优化工具箱可辅助实现这些算法,通过迭代更新节点电压和支路电流,直至满足收敛条件。 结果输出:计算完成后,程序能够输出关键性能指标,如节点电压幅值和相角、支路功率流、发电机的有功无功功率等。这些信息对于分析电网运行状态和制定调度策略具有重要意义。 可视化功能:程序可能包含图形用户界面(GUI),用于展示计算结果,例如绘制网络拓扑图并标注节点电压和支路功率,便于用户直观理解计算结果。 错误处理与调试:良好的程序设计应包含错误检测和处理机制,以应对不合理数据或计算过程中出现的问题,并给出适当的提示。 对于电力系统分析课程的学生来说,这个MATLAB程序是一个宝贵的学习资源。它不仅有助于学生掌握电力系统的理论知识,还能让他们了解如何将理论应用于实践,通过MATLAB解决实际问题。尽管该程序是作者一周内完成的,可能存在一些未完善之处,但使用者可以在参考的基础上逐步改进和完善,使其更贴合自身需求。 总之
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值