ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

死循环与break、continue

2021-10-14 20:30:30  阅读:212  来源: 互联网

标签:体力 floor 杀手 break while continue 骑士 死循环


通过前面循环的学习,我们已经知道了什么叫死循环,例如:

python代码:

while True:
    print(1)

C++代码:

#include <iostream>
using namespace std;
int main() {
    while (true) {
        cout << 1 << endl;
    }
    return 0;
}

以上代码会一直打印1,不会停下来。今天要讲的break就是循环杀手,它可以杀死离他最近的一个循环,看一下程序

python代码:

while True:
    print(1)
    break

C++代码:

#include <iostream>
using namespace std;
int main() {
    while (true) {
        cout << 1 << endl;
        break;
    }
    return 0;
}

break 

 上面的程序运行了一次以后就遇到了杀手break,break杀死了这个死循环,所以程序只运行了一次。正常情况下我们请杀手并不是无缘无故请的,一般都会有一些条件,所以break基本上就是和条件语句(if 语句)共用。

例题:小明写了一个管理系统,但是他忘了自己的密码是多少,他可以尝试无数次,直到他输入正确的密码他才可以进入系统,请你写一个程序,模仿小明输入密码的过程。

分析:小明可以尝试无数次,输入正确的密码就停下来。

python代码:

while True:
    password = input("请输入密码:")
    if password == '123456':
        print("进入系统")
        break
    else:
        print('密码错误,请重新输入\n')

C++代码:

#include <iostream>
using namespace std;
int main() {
    int password = 123456, input;
    while (true) {
        cout << "请输入密码:";
        cin >> input;
        if (password == input) {
            cout << "进入系统" << endl;
            break;
        } else {
            cout << "密码错误请重新输入\n"
                 << endl;
        }
    }
    return 0;
}

练习题1:算金币
【题目描述】
国王讲金币作为工资,发放给忠诚的骑士,第1天,骑土收到一枚金币,之后两天(第2天和第3天)里,每天收到两枚金币;之后三天(第4、5.天)里,每天收到三枚金市;之后四关(第7、8、9、10天)里,每天收到四枚金币.…这种工资发放模式会一直这样延续下去:当连续n天每天收到n枚金币后,骑士会在之后的连续n+1天里,每天收到n+1枚金币(n为任意正整数)。
请你编写一个程序,确定从第一天开始到给定天数n,骑士一共获得了多少金币。

continue

 骑士因为身上的钱太多,被杀手盯上了,这天,骑士被国王派去地下城,骑士带领他的骑士团,只有在下地下城的时候是他一个人,地下城一共有10层,但是骑士不需要一层一层地下去,地下城在双数层会存在前往下一层地传送门(continue),在第10层有传回第一层的单向传送门,杀手得知消息以后决定先消耗一下骑士的体力,杀手的体力为8,骑士的体力为15,每走一层消耗2点体力,杀手准备在某一层等他,请你写出一个程序,帮助杀手击杀骑士,骑士是(死循环)。

python代码:

floor = 1  # 当前位于地下城的第 floor 层
qi_shi_ti_li = 15  # 骑士的初始体力为 15
killer = 8  # 杀手的体力为 8
while True:
    if floor % 2 == 0:  # 如果是双数层
        floor += 1  # 层数 +1, 体力没消耗
        continue  # 传送
    elif qi_shi_ti_li > killer:  # 否则如果骑士的体力比杀手的体力要多
        qi_shi_ti_li -= 2  # 安全通过这一层,并且体力 -2
        floor += 1  # 进入下一层
    else:  # 否则
        print(floor)  # break杀手在这一层等他,打印出这一层
        break  # 击杀骑士

C++代码:

#include <iostream>
using namespace std;
int main() {
    // 当前位于地下城的第 floor 层, 骑士体力为 15,杀手体力为 8
    int qiShiTiLi = 15, killer = 8, floor = 1;
    while (true) {
        if (floor % 2 == 0) {             // 如果是双数层,体力没有消耗
            floor += 1;                   // 层数 +1
            continue;                     // 前往下一层的传送门
        } else if (qiShiTiLi > killer) {  // 骑士体力大于杀手
            qiShiTiLi -= 2;               // 骑士体力 -2
            floor++;                      // 往下一层
        } else {
            cout << "杀手在第 " << floor << " 层" << endl;
            break;  // 遇到杀手break
        }
    }

    return 0;
}

接下来我们通过练习题来领略continue的用法 

练习题1:输入一个数n(n <= 1000),打印出1到n中所有不包含3与3的倍数的数

标签:体力,floor,杀手,break,while,continue,骑士,死循环
来源: https://blog.csdn.net/Water__wave/article/details/120763707

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有