编程笔记 html5cssjs 005 小学数学四则运算练习

编程笔记 html5&css&js 005 小学数学四则运算练习

  • 一、代码
  • 二、解释

这段代码定义了一个页面,用于小学数学四则运算的练习。这可能有点难,实际如果需要可以通过更改代码来达到要求。

一、代码

<!DOCTYPE html>
<html lang="zh">
<head><meta charset="UTF-8"><!-- 设置页面视口,适应不同设备的宽度,并设置初始缩放为1.0 --><meta name="viewport" content="width=device-width, initial-scale=1.0"><!-- 页面标题 --><title>小学数学四则运算练习</title><!-- 页面样式定义 --><style>/* 设置页面背景颜色、居中显示、垂直居中、字体大小、颜色和字体 family */body {/* 设置背景颜色为深灰色 */background-color: #333;/* 使用弹性布局使得内容居中 */display: flex;justify-content: center;align-items: center;/* 设置高度为视窗高度,使得内容垂直居中 */height: 100vh;/* 设置字体大小和颜色 */font-size: 60px;color: white;/* 设置字体为Arial或任意 sans-serif 字体 */font-family: Arial, sans-serif;/* 定义容器的文本居中 */.container {text-align: center;}.view {line-height: 100px; /* 设置固定行高 */height: 100px; /* 如果需要强制元素高度一致,可加上height */overflow: hidden; /* 防止内容超出元素高度 */}input[type="text"] {/* 设置字体大小为100px */font-size: 100px;/* 设置宽度为屏幕宽度的30% */width: 30%;/* 设置底部外边距为20px */margin-bottom: 20px;}</style>
</head>
<body>
<div class="container"><p>小学数学四则运算练习</p><!-- 用于显示习题的区域 --><div class="view" id="question">请按回车键生成习题</div><!-- 用于显示答案的区域 --><div class="view" id="answer"></div><!-- 用于显示计时的区域 --><div class="view" id="time"></div><!-- 用于显示结果的区域 --><div class="view" id="result"></div><!-- 用户输入答案的输入框,回车键触发答案检查 --><input type="text" id="user-answer" onkeydown="if (event.keyCode === 13) checkAnswer()"><!-- 提示用户如何使用输入框的文本 --><p>空框时按回车生成习题,输入答案后按回车键验证<br></p>
</div>
<script>// 定义一个数组包含可能的操作数let operands = Array.from({length: 10}, (_, i) =>// 这个函数生成一个随机数。首先使用Math.random()生成一个0到1之间的随机数,然后乘以i < 5 ? 9 : 99的结果,// 再使用Math.floor()取整,之后加上Math.random() < 0.5 ? 0.1 : 0。// 这个表达式会生成一个在0到9.9之间的随机数(如果i小于5),或者在0到99.9之间的随机数(如果i大于等于5)。Math.floor(Math.random() * (i < 5 ? 9 : 99)) + (Math.random() < 0.5 ? 0.1 : 0));function getRandomOperand() {return operands[Math.floor(Math.random() * operands.length)];}// 定义一个数组包含可能的运算符let operators = ['+', '-', '*', '/'];// operators.push('^'); // 添加乘方运算符,但在JS中需要处理function getRandomOperator() {return operators[Math.floor(Math.random() * operators.length)];}function generateExpression(depth = 0, maxDepth = 3) {// 创建一个表达式字符串,同时考虑运算优先级// 该函数用于生成一个随机的数学表达式字符串。函数接受两个参数:depth表示当前生成表达式的深度,默认为0;maxDepth表示生成// 表达式的最大深度,默认为3。函数通过递归的方式生成表达式,根据随机概率选择是否添加括号,并随机选择运算符和操作数。对于乘// 方运算符,确保其右边有操作数;对于其他运算符,两边都可能有操作数。当达到最大深度时,返回一个随机的操作数。最终生成的表达// 式以字符串形式返回。if (depth === maxDepth) {return getRandomOperand().toString();}let expression = '';
// 随机决定是否添加括号if (Math.random() < 0.3 && depth < maxDepth - 1) {expression += '(';expression += generateExpression(depth + 1);expression += ')';} else {expression += getRandomOperand();}let operator = getRandomOperator();if (operator === '^') { // 对于乘方运算,确保右边有操作数expression += '^';expression += generateExpression(depth);} else { // 其他运算符两边都可能有操作数expression += operator;expression += generateExpression(depth + 1);}return expression;}// 计算生成的表达式function calculateExpression(expressionStr) {// 将"^"替换为Math.pow以执行乘方运算expressionStr = expressionStr.replace(/\^/g, '**');// 使用eval计算结果,但请确保表达式来自可靠源,否则有安全风险return eval(expressionStr);}// 生成并计算一个表达式function generateQuestion() {/*** 生成并计算一个表达式,然后将表达式显示在文档中,并返回计算结果(保留两位小数)。* 该过程包括:* 1. 生成一个表达式。* 2. 计算这个表达式的结果。* 3. 将这个表达式显示在页面上。* 4. 返回表达式的计算结果,结果保留两位小数。** @returns {number} 表达式的计算结果,保留两位小数。*/let question = generateExpression(); // 生成一个表达式let answer = calculateExpression(question); // 计算生成的表达式document.getElementById('question').innerText = question; // 将表达式显示在页面上return Number(answer.toFixed(2)); // 返回计算结果,保留两位小数}let currentAnswer;let startTime;function startPractice() {/*** 生成问题并初始化答题界面* 无参数* 无返回值*/currentAnswer = generateQuestion();document.getElementById('answer').innerText = '';document.getElementById('time').innerText = '';document.getElementById('result').innerText = '';startTime = new Date().getTime();}function checkAnswer() {/*** 处理用户提交的答案,并进行判分。* 无参数。* 无返回值。*/let userAnswer = parseFloat(document.getElementById('user-answer').value); // 获取用户输入的答案let currentTime = new Date().getTime(); // 获取当前时间戳let elapsedTime = (currentTime - startTime) / 1000; // 计算答题所用时间,转换为秒// 检查用户输入是否为合法数字if (isNaN(userAnswer) !== true) {userAnswer = Number(userAnswer.toFixed(2)); // 如果是合法数字,则保留两位小数}// 如果用户输入不是合法数字,则重新开始练习if (isNaN(userAnswer)) {startPractice();} else if (userAnswer === currentAnswer) { // 如果用户答案与正确答案相同document.getElementById('answer').innerText = currentAnswer; // 显示正确答案document.getElementById('time').innerText = `用时:${elapsedTime.toFixed(2)}`; // 显示用时document.getElementById('result').innerText = '答案正确'; // 显示结果:正确} else { // 如果用户答案与正确答案不同document.getElementById('answer').innerText = currentAnswer; // 显示正确答案document.getElementById('time').innerText = `用时:${elapsedTime.toFixed(2)}`; // 显示用时document.getElementById('result').innerText = '答案错误'; // 显示结果:错误}document.getElementById('user-answer').value = ''; // 清空输入框}window.onload = function () {// 将焦点设置到ID为"user-answer"的元素上。document.getElementById("user-answer").focus();};
</script>
</body>
</html>

二、解释

这段HTML代码定义了一个页面,用于小学四则运算的练习。页面具有以下功能:
页面布局与样式:通过CSS定义了页面的整体样式,包括背景颜色、字体大小和颜色、居中显示等内容。
生成随机习题:通过JavaScript函数generateExpression生成一个随机的数学表达式,并将其显示在页面上。
计算答案:使用JavaScript函数calculateExpression计算生成的表达式的答案。
用户交互:用户可以在页面上的输入框中输入答案,然后按回车键验证答案的正确性。答案的验证由checkAnswer函数处理。
显示结果:根据用户答案的正确性,在页面上显示相应的结果。
计时功能:记录用户回答问题所花费的时间,并在页面上显示。
适应不同设备:通过<meta>标签设置页面视口,使页面在不同设备上都能正确显示。
以上是该HTML代码的主要功能。代码中使用了JavaScript和CSS来实现这些功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/733546.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Git是一个分布式版本控制系统 一.1

git补充 通过git clone命令还是直接下载ZIP文件&#xff0c;你获取的都是代码库中的源代码。这意味着你可以查看、修改和编译这些源代码&#xff0c;根据需要进行自定义和扩展。 需要获取源代码而不需要版本控制的情况来说&#xff0c;直接下载ZIP文件和使用git clone命令确实…

音视频学习笔记——c++多线程(二)

✊✊✊&#x1f308;大家好&#xff01;本篇文章是多线程系列第二篇文章&#x1f607;。首先讲解了利用mutex解决多线程数据共享问题&#xff0c;举例更好理解lock和unlock的使用方法&#xff0c;以及错误操作造成的死锁问题&#xff0c;最后讲解了lock_guard与unique_lock使用…

Django模型层(附带test环境)

Django模型层(附带test环境) 目录 Django模型层(附带test环境)连接数据库Django ORM在models.py中建表允许为空指定默认值数据库迁移命令 开启测试环境建表语句补充(更改默认表名)数据的增加时间数据的时区 多表数据的增加一对多多对多 数据的删除修改数据查询数据查询所有数据…

Linux unset命令教程:如何删除环境变量或函数(附实例详解和注意事项)

Linux unset命令介绍 unset命令用于删除环境变量或函数。如果你不再需要某个环境变量或函数&#xff0c;你可以使用unset命令将其删除。 Linux unset命令适用的Linux版本 unset命令在大多数Linux发行版中都是可用的&#xff0c;包括Debian、Ubuntu、Alpine、Arch Linux、Kal…

鸿蒙OpenHarmony HDF 驱动开发

目录 序一、概述二、HDF驱动框架三、驱动程序四、驱动配置坚持就有收获 序 最近忙于适配OpenHarmonyOS LiteOS-M 平台&#xff0c;已经成功实践适配平台GD32F407、STM32F407、STM32G474板卡&#xff0c;LiteOS适配已经算是有实际经验了。 但是&#xff0c;鸿蒙代码学习进度慢下…

【AcWing】蓝桥杯集训每日一题Day1|二分|差分|503.借教室(C++)

503. 借教室 503. 借教室 - AcWing题库难度&#xff1a;简单时/空限制&#xff1a;1s / 128MB总通过数&#xff1a;8052总尝试数&#xff1a;26311来源&#xff1a;NOIP2012提高组算法标签二分差分 题目内容 在大学期间&#xff0c;经常需要租借教室。 大到院系举办活动&…

基于机器学习的网络入侵检测二元分类模型构建与性能评估(NSL-KDD数据集)

简介 该项目是一个基于NSL-KDD数据集的网络入侵检测系统&#xff0c;主要采用机器学习方法对网络流量数据进行使用了多种机器学习模型&#xff0c;如逻辑回归、线性SVM、多项式核SVM、高斯核SVM、决策树、随机森林、朴素贝叶斯和K近邻算法训练二元分类&#xff08;正常/异常&a…

bug总结(1)--变量取错

a c t i v i t y [ ′ t a g n a m e ′ ] 应为 activity[tag_name]应为 activity[′tagn​ame′]应为couponActivitList[0][‘name’] .隐藏的bug&#xff0c;在测试中竟然测不出来&#xff0c;而且上线了好久。为啥会出现这种低级错误呢&#xff1f;第一是写的时候不够仔细认…

Day26:安全开发-PHP应用模版引用Smarty渲染MVC模型数据联动RCE安全

目录 新闻列表 自写模版引用 Smarty模版引用 代码RCE安全测试 思维导图 PHP知识点&#xff1a; 功能&#xff1a;新闻列表&#xff0c;会员中心&#xff0c;资源下载&#xff0c;留言版&#xff0c;后台模块&#xff0c;模版引用&#xff0c;框架开发等 技术&#xff1a;输…

Selenium库快速查找网页元素及执行浏览器模拟操作

Selenium 是一个自动化测试工具&#xff0c;主要用于模拟用户在网页上的行为&#xff0c;进行自动化测试。它支持多种浏览器&#xff0c;并且可以在多种操作系统上运行。以下是 Selenium 库的一些主要特点和用途&#xff1a; 网页自动化测试&#xff1a; Selenium 可以模拟用户…

2024 年中国高校大数据挑战赛赛题 C:用户对博物馆评论的情感分析完整思路以及源代码分享

博物馆是公共文化服务体系的重要组成部分。国家文物局发布&#xff0c; 2021 年我国新增备案博物馆 395 家&#xff0c;备案博物馆总数达 6183 家&#xff0c;排 名全球前列&#xff1b;5605 家博物馆实现免费开放&#xff0c;占比达 90%以上&#xff1b;全国 博物馆举办展览 3…

【深度学习笔记】6_5 RNN的pytorch实现

注&#xff1a;本文为《动手学深度学习》开源内容&#xff0c;部分标注了个人理解&#xff0c;仅为个人学习记录&#xff0c;无抄袭搬运意图 6.5 循环神经网络的简洁实现 本节将使用PyTorch来更简洁地实现基于循环神经网络的语言模型。首先&#xff0c;我们读取周杰伦专辑歌词…

Python操作Redis 各种数据类型

本文将深入探讨如何使用Python操作Redis&#xff0c;覆盖从基础数据类型到高级功能的广泛主题。无论是字符串、列表、散列、集合还是有序集合&#xff0c;我们将一一解析&#xff0c;同时提供丰富的代码示例帮助读者更好地理解和应用。除此之外&#xff0c;本文还将介绍Redis的…

JVM和JVM内存管理

Java虚拟机&#xff08;Java Virtual Machine 简称JVM&#xff09;是运行所有Java程序的抽象计算机&#xff0c;是Java语言的运行环境&#xff0c;它是Java 最具吸引力的特性之一。Java源代码经过编译器编译后生成与平台无关的字节码文件&#xff08;.class文件&#xff09;。当…

【20240309】WORD宏设置批量修改全部表格格式

WORD宏设置批量修改全部表格格式 引言1. 设置表格文字样式2. 设置表格边框样式3. 设置所有表格边框样式为075pt4. 删除行参考 引言 这两周已经彻底变为office工程师了&#xff0c;更准确一点应该是Word工程师&#xff0c;一篇文档动不动就成百上千页&#xff0c;表格图片也是上…

计算机视觉(CV)自然语言处理(NLP)大模型应用,如何实现小模型

在人工智能领域&#xff0c;大模型已经成为引领创新和进步的重要推动力。它们不仅在自然语言处理、计算机视觉等任务中展现了强大的性能&#xff0c;还为各行各业带来了前所未有的机遇和挑战。本文将从一个高级写作专家的角度&#xff0c;深入探讨大模型的现状、技术突破以及未…

STM32之串口中断接收UART_Start_Receive_IT

网上搜索了好多&#xff0c;都是说主函数增加UART_Receive_IT()函数来着&#xff0c;实际正确的是UART_Start_Receive_IT()函数。 —————————————————— 参考时间&#xff1a;2024年3月9日 Cube版本&#xff1a;STM32CubeMX 6.8.1版本 参考芯片&#xff1a…

Svg Flow Editor 原生svg流程图编辑器(二)

系列文章 Svg Flow Editor 原生svg流程图编辑器&#xff08;一&#xff09; 说明 这项目也是我第一次写TS代码哈&#xff0c;现在还被绕在类型中头昏脑胀&#xff0c;更新可能会慢点&#xff0c;大家见谅~ 目前实现的功能&#xff1a;1. 元件的创建、移动、形变&#xff1b;2…

完全背包问题(一般写法与空间优化写法)

题目 有 N 种物品和一个容量是 V 的背包&#xff0c;每种物品都有无限件可用。 第 i 种物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整…

最多几个直角三角形python

最多几个直角三角形 问题描述思路代码实现 问题描述 最多可以组成几个直角三角形&#xff0c;一个边只能用一次。 输入描述&#xff1a; 第一行输入一个正整数T&#xff08;1<&#xff1d;T<&#xff1d;100&#xff09;&#xff0c;表示有T组测试数据. 对于每组测试数据…