循环练习
心得:
循环题的核心就是先有思路,再把自己的思路用代码描述出来。
循环的核心在于判断条件,核心就是循环多少次,找的核心规律就是这个。
针对循环嵌套,一定要抛开第一层循环去思考。 例如: 第一层循环写下来,我就要思考,在这层循环我要做什么事。(九九乘法表 第一行循环我要输出几个式子) 第二层循环,把i替换成固定的一个值,然后思考在当前i下我要做什么?(九九乘法表第二层 我要在第二行输出2个式子)
输出一个3行5列的
*号
js
for (let i = 1; i <= 3; i++) {
let str = ``;
for (let j = 1; j <= 5; j++) {
str += "*";
}
console.log(str);
}- 输出一个等腰三角形
*
***
*****
*******
*********js
var row = 5; //总行数
for (let i = 1; i <= row; i++) {
let str = "";
// 拼接空白
for (let j = 1; j <= row - i; j++) {
str += "";
}
// 拼接星星
for (let s = 1; s <= 2 * i - 1; s++) {
str += "*";
}
console.log(str);
}- 求1-100之间的所有素数之和
js
let sum = 0;
for (let i = 1; i <= 100; i++) {
let isFind = false;
for (let j = 2; j < i - 1; j++) {
if (i % j === 0) {
isFind = true;
break;
}
}
if (!isFind && i > 1) {
console.log("素数", i);
sum += i;
}
}
console.log("所有素数的和", sum); //1060- 输出99乘法表,效果如下:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81js
for (let i = 1; i <= 9; i++) {
let str = "";
for (let j = 1; j <= i; j++) {
str += `${j}✖${i}=${j * i}\t`;
}
console.log(str);
}- 将猜拳游戏升级,记录系统和玩家的积分,获胜者加1分,平局和输者不计分
可参考以下效果:
游戏开始
==============第1轮==============
系统:0分,玩家:0分
你的出拳:剪刀
系统出拳:布
你赢了!
==============第2轮==============
系统:0分,玩家:1分
你的出拳:石头
系统出拳:布
你输了!
==============游戏结束==============
系统:1分,玩家:1分js
/* 猜拳游戏 */
function getRandom(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min);
}
const dataPane = {
round: 1, //第几轮
user: 0, //用户得分
system: 0, //系统得分
};
const typeMap = {
1: "剪刀",
2: "石头",
3: "布",
};
console.log(getRandom(1, 3));
// 开启死循环
while (true) {
const sysType = getRandom(1, 3);
const userType = Number(
prompt(`第${dataPane.round}轮,请选择您要出拳: 1-剪刀 2-石头 3-布`),
);
console.log(sysType, userType);
if (!userType && userType !== 1 && userType !== 2 && userType !== 3) {
alert("无效选择!");
break;
}
const isUserWin =
(userType === 1 && sysType === 3) ||
(userType === 2 && sysType === 1) ||
(userType === 3 && sysType === 2);
if (isUserWin) {
alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 您获胜了!`);
dataPane.user++;
} else if (userType === sysType) {
alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 平局!`);
} else {
alert(`您-${typeMap[userType]} 系统-${typeMap[sysType]} 您输了!`);
dataPane.system++;
}
dataPane.round++;
}