-
2015-03-12 18:50:52
使用while循环的注意事项:
(1)表达式不可以为空,表达式为空不合法;
(2)表达式可以用非0代表逻辑值真(true),用0代表逻辑值假(false);
(3)循环体中必须有改变条件表达是值得语句,否则将成为死循环。
例如:
while(1){......}
是一个无限循环语句。
while(0){......}
是一个不会进行循环的语句。
使用do.....while循环的注意事项:
(1)循环先执行循环体,如果循环条件不成立,循环体已经执行一次了,使用时注意变量变化;
(2)表达式不可以为空,为空不合法;
(3)表达式可以用非0代表逻辑值真(true),用0代表逻辑值假(false);
(4)循环体中必须有改变条件表达是值得语句,否则将成为死循环;
(5)循环语句要有分号“;”。
更多相关内容 -
判断数学表达式是否合法
2017-06-16 10:11:48要求:输入一个表达式,判断这个表达式是否数学表达式 思路:判断每一个字符,如果... * 检查表达式是否合法,合法返回true * @param expression * @return */ private boolean checkExpression(String expression)要求:输入一个表达式,判断这个表达式是否数学表达式
思路:判断每一个字符,如果是数字,根据数字规则判断;如果是运算符,根据运算符规则判断。方法比较笨
代码实现如下:
/** * 检查表达式是否合法,合法返回true * @param expression * @return */ private boolean checkExpression(String expression) { //去除空格 expression = expression.replaceAll(" ",""); Set<Character> operate_set = new HashSet<>(); operate_set.add('-'); operate_set.add('+'); operate_set.add('*'); operate_set.add('/'); //拆分字符串 char[] arr = expression.toCharArray(); int len = arr.length; //前后括号计数,用来判断括号是否合法 int checkNum=0; //数字集合 List<Character> digit_list = new ArrayList<>(); StringBuffer stringBuffer = new StringBuffer(); //循环判断 for (int i = 0; i < len; i++) { if(Character.isDigit(arr[i])|| arr[i] == '.'){ //数字和小数点判断 //把数字和小数点加入到集合中,为了下一步判断数字是否合法 digit_list.add(arr[i]); }else { //非数字和小数点 //如果集合中有值,取出来判断这个数字整体是否合法 if(digit_list.size()>0) { //判断字符串是否合法 boolean result = getNumberStringFromList(digit_list); if(result){ //如果合法,清空集合,为了判断下一个 digit_list.clear(); }else{ //不合法,返回false return false; } } if (arr[i] == '+' || arr[i] == '*' || arr[i] == '/') { //判断规则(1.不能位于首位 2.不能位于末尾 3.后面不能有其他运算符 4.后面不能有后括号) if (i == 0 || i == (len - 1) || operate_set.contains(arr[i + 1]) || arr[i + 1] == ')') { System.out.println("error type : '+' or '*' or '/' ->"+ arr[i]); return false; } } else if (arr[i] == '-') { //减号判断规则(1.不能位于末尾 2.后面不能有其他运算符 3.后面不能有后括号) if (i == (len - 1) || operate_set.contains(arr[i + 1]) || arr[i + 1] == ')') { System.out.println("error type : '-' ->"+ arr[i]); return false; } } else if (arr[i] == '(') { checkNum++; //判断规则(1.不能位于末尾 2.后面不能有+,*,/运算符和后括号 3.前面不能为数字) if (i == (len - 1) || arr[i + 1] == '+' || arr[i + 1] == '*' || arr[i + 1] == '/' || arr[i + 1] == ')'||(i != 0 && Character.isDigit(arr[i-1]))) { System.out.println("error type : '(' ->"+ arr[i]); return false; } } else if (arr[i] == ')') { checkNum--; //判定规则(1.不能位于首位 2.后面不能是前括号 3.括号计数不能小于0,小于0说明前面少了前括号) if (i == 0 || (i < (len - 1) && arr[i + 1] == '(') || checkNum < 0) { System.out.println("error type : ')' ->"+ arr[i]); return false; } }else{ //非数字和运算符 System.out.println("error type : not number and operator ->"+ arr[i]); return false; } } } //如果集合中有值,取出来判断这个数字整体是否合法 if(digit_list.size()>0) { //判断字符串是否合法 boolean result = getNumberStringFromList(digit_list); if(result){ //如果合法,清空集合,为了判断下一个 digit_list.clear(); }else{ //不合法,返回false return false; } } //不为0,说明括号不对等,可能多前括号 if(checkNum!=0){ return false; } return true; } /** * 把集合中的字符,拼接成字符串,并校验字符串是否是数值 * @param list * @return */ private boolean getNumberStringFromList(List<Character> list){ //如果集合中有值,取出来判断这个数字整体是否合法 if(list != null){ StringBuffer stringBuffer = new StringBuffer(); for(Character character : list){ stringBuffer.append(character); } //正则判断数字是否合法 boolean result = isNumber(stringBuffer.toString()); if(!result){ System.out.println("error type: digit ->"+stringBuffer.toString()); } return result; } return false; }
/** * 判断字符串是否为整数,浮点数类型,是返回true * @param str * @return */public static boolean isNumber(String str){ Pattern pattern = Pattern.compile("^-?([1-9]\\d*\\.\\d+|0\\.\\d*[1-9]\\d*|[1-9]\\d*|0)$"); Matcher isNum = pattern.matcher(str); if( !isNum.matches() ){ return false; } return true;}测试案例:
false案例:
2+2.
2+000.3
2+0023
2+a
2)+1
+2-3
2+(3
2+4)
2+6/
2+6+
2+6*
2+()+3
2+(3+3)+8)+9
等。
-
C语言学习笔记—循环控制语句(while、for、do.....while)
2021-01-19 13:20:50循环控制语句 在程序设计中,如果需要重复执行某些操作,就要用到循环结构。使用循环结构时,要明确两个问题:需要重复执行的是哪些操作(循环体)?这些操作在什么情况下执行(循环条件)。 ...循环控制语句
在程序设计中,如果需要重复执行某些操作,就要用到循环结构。使用循环结构时,要明确两个问题:需要重复执行的是哪些操作(循环体)?这些操作在什么情况下执行(循环条件)?。
while语句
一般形式: while(表达式) 循环体语句; while(表达式) { 循环体语句; }
表达式的值为 真 时,循环执行,知道表达式的值为 假 时终止执行并执行下一条语句。
应用
输入成绩,根据输入的成绩判断分数所在等级 优秀(score>=90)、良(90>score>=70)、及格(70>score>=60)、不及格(60>score>=40)、很差(40>score>=0)
例:#include <stdio.h> #include <stdlib.h> //输入成绩,根据输入的成绩判断分数所在等级 优秀(score>=90)、良(90>score>=70)、及格(70>score>=60)、不及格(60>score>=40)、很差(40>score>=0) int main() { //定义 int score; int i = 0; while(i < 10){ i++; //1.提示输入成绩 printf("请输入第%d次成绩\n",i); //2.接收输入的成绩 scanf("%d",&score); //3.选择嵌套 //如果大于等于90 if(score >= 90){ //输出优秀; printf("优秀!\n"); }else if(score >= 70){ printf("良!\n");//否则 } else if(score >= 60){ printf("及格!\n"); } else if(score >= 40){ printf("不及格!\n"); } else{ printf("很差!\n"); } } system("pause"); return 0; }
由此可见:
- while语句中的表达式可以是任何合法的表达式。
- 循环体语句包含多条时可用大括号包含起来.
for语句
一般形式: for(表达式1;表达式2;表达式3;) 循环体语句; for(表达式1;表达式2;表达式3;) { 循环体语句; 循环体语句; ...... }
- 表达式1,用来指定循环变量的初始值,指定循环的起点。
- 表达式2,条件表达式,用来判断循环的变量是否满足执行循环的条件。
- 表达式3,步长表达式,用来改变循环变量的值。
- 循环体语句,反复执行的操作。
- 表达式之间用分号分隔。
#include <stdio.h> int main() { int sum = 0; int i; for (i = 1; i <= 50; i++) { sum += i; } printf("1和50之间(包括1和50)的整数之和为%d\n", sum); return 0; }
- 若循环体语句有多条语句组成,必须用大括号把他们括起来,变成一条复合语句。否则,只会循环执行紧跟其后的的一条语句。
- for语句中的三个语句的执行顺序,与书写顺序并不相同,表达式3,的执行顺序在执行循环体语句之后。
do…while语句
for语句和while语句都是在循环体执行前,先判断条件是否成立在决定是否执行循环体,若条件不成立则一次都不会执行。
do-while语句略有不同,它先执行循环体在判断条件是否成立,也就是说无论循环条件是否成立它都会会至少执行一次循环体。一般形式: do { 循环体语句; }while(表达式);
例:
#include <stdio.h> #include <stdlib.h> int main() { int i = 0; /*while(1){ printf("XXX很帅!\n"); }*/ do{ i++; printf("XXX很帅!\n"); if(i == 10){ break; } }while(1); system("pause"); return 0; }
break和continue语句
break语句
强制循环结束,一旦执行了break语句则提前结束了循环,不在继续执行break语句之后的语句,常与if语句配合使用,条件满足时跳出循环。
continueyu语句
continue语句的作用是跳过本轮循环,即跳过循环体中的continue语句后面的语句,继续下一轮循环。
break与continue的区别在于,break结束循环,而continue只是跳过跳过后面的语句继续循环。
-
笔记||Python3之布尔表达式+条件判断
2021-01-13 23:49:34布尔表达式:布尔类型:特性:只有两种情况 --- 真 / 假1 -- True False2 -- type(True) ------------ 布尔表达式:1 ---它的结果是bool2 ---关系运算 3>1 关系的等价 == 一个等号是赋值 不等价 !=3 ---字符串的...布尔表达式:
布尔类型:特性:只有两种情况 --- 真 / 假
1 -- True False
2 -- type(True) ------------
布尔表达式:1 ---它的结果是bool
2 ---关系运算 3>1 关系的等价 == 一个等号是赋值 不等价 !=
3 ---字符串的比较:① -- 是比较长度吗? ---- 不成立
② -- 比较的是字符串对应的ASCII值 A---65 a----97
4 --- 逻辑运算
布尔结果:1 ---in 在里面
2 ---not in 不在里面
3 ---str tuple list
4 ---(1, 3) in (1, 3, 5) --------False
条件组合:1 -- 且 --------- 条件1 and 条件2
①其中一个为False ----- 整个表达式= False
②如果条件1 == True,条件2,一定会执行
③如果条件1 == False,条件2,一定不会执行
2 -- 或 --------- 条件1 or 条件2
① - 其中一个为True ----- 整个表达式=True
② - 如果条件1 == True, 条件2,一定不会执行
③ - 如果条件1 == False,条件2, 一定会执行
3 -- 不 -- not
①取反 True ---- False
4 -- 优先级
① - 没有任何括号的情况下 not > and > or
② - 建议多打括号 (3(2(1))) ------- 从里到外
③ - 复杂的逻辑关系 -------- 建议注释
=============================================================================================================
条件判断:
流程控制:①顺序结构 ---- 一步步执行
②选择结构 ---- 在某一步选择性执行
③循环结构 ---- 在一定条件下,一直执行某段代码
条件判断:1 -- if -- 如果 if条件==True:执行if里面的语句
2 -- if ...else... 如果--否则
①只有2种情况,肯定会执行其中一个
②对立面的情况下使用
3 -- 多种分支 if ....elif ...else...
①最后的else选配
②只要满足其中一个分支,就退出if的语句结构
4 -- if的嵌套
①要执行内部的if 一定要外部的 if 满足才可以
②相当于 and
5 -- switch语句 ------------ 没有这个语法
6 -- 多条件可以分行写
7 -- 注释/取消注释 ctrl + /
8 -- 扩展:
① - if 如果后面跟是 非0的数值、非空字符串、 非空元组、 非空列表,该if的条件结果为True
9 -- input() -函数 -- 接收字符串 -- 返回的是字符串
if语句只要满足其中一个就结束整个if代码块
-
Python使用正则表达式判断邮箱地址的合法性!
2018-12-11 15:32:24首先使用正则定义邮箱地址的通用表达式:^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$ 释义:a-zA-Z 表示为26个英文字母的大小写格式 0-9 表示0到9之间的数 _- 表示下划线及中线 $ 表示结尾终止 ... -
(三)Python语法基础之程序控制结构与函数设计(条件表达式、选择结构、循环结构、函数)
2020-02-16 21:41:22一、选择结构 二、循环结构 三、函数 -
3.1.1 条件表达式
2020-12-10 09:56:14在选择结果和训话结构中,都要根据条件表达式的值来确定下一步的执行流程。...从这个意义上来讲,所有的Python合法表达式都可以作为条件表达式,包括含有函数调用的表达式。例如:1 >>> if 3: ... -
正则表达式
2014-12-03 14:51:39这样,引用就不只是帮助你输入正则表达式的重复部分的快 捷方式了,它还实施了一条规约,那就是一个字符串各个分离的部分包含的是完全相同的字符.例如:下面的正则表达式匹配的就是位于单引号或双引号之内的所有字 ... -
中缀表达式转后缀表达式以及后缀表达式合法性验证
2012-12-26 17:07:59后缀表达式中,是不含有括号的,计算机在运算的时候,从左向右读取,若遇到运算符,则取运算符左边的两个操作数来计算,并将计算结果作为下一次计算的一个操作数。 下面分享一个用JAVA实现的中... -
python笔试题22-41
2021-04-27 00:48:1733、type(1+2L*3.14)的结果是 A、 B、 C、 D、 34、若k为整形,下述while循环执行次数为 k=1000 while k>1: print k k = k/2 A、9 B、10 C、11 D、100 35、以下谁是不合法的布尔表达式 A、x in range(6)B、3=aC、e>5... -
【C#】利用正则表达式验证IPV4地址的合法性
2021-04-21 10:44:25【C#】利用正则表达式验证IPV4地址的合法性1 题目描述2 源码详解3 实现效果 1 题目描述 利用正则表达式验证IPV4地址的合法性,并输出是第几类地址及是否为私有地址或保留地址。 IPV4的地址分类及网络号的范围如下:... -
python中的各种表达式
2020-11-29 19:33:371 三元运算符格式:变量=条件返回True的结果 if 条件 else 条件返回False的结果条件:1 必须有结果2 必须要有if和else3 简单的条件判断# a=1# b=5# c=a if a>b else b# print(c)# ...test(3,50))2 列表表达式格式:[... -
continue语句只用于循环语句中_流程控制之循环语句【for循环语句】
2020-11-21 04:00:50for循环语句for循环是Java程序设计中最有用的循环语句之一。...表达式3){ 语句序列}表达式1:该表达式用于初始化循环控制变量,它只在循环开始时执行一次。表达式2:循环条件表达式,它的类型为boolean... -
C++ 使用正则表达式
2021-01-11 22:07:33正则表达式正则表达式RE库组件正则表达式的使用参考资料 正则表达式 正则表达式(regular expression)是一种描述字符序列的方法,是一种极其强大的计算工具。 C++正则表达式库(RE库)定义在<regex>中,它包含多... -
Python如何判断数独是否合法
2020-11-30 12:00:01Python如何判断数独...注意事项一个合法的数独(仅部分填充)并不一定是可解的。我们仅需使填充的空格有效即可。解体思路将数独按照行、列和块进行预处理,然后分别判断是否合法。利用Python的表达式推导,匿名函... -
C语言基础之6:C控制语句:循环
2022-02-05 23:40:25=、==、+=、*=、-=、/=、%= 函数:fabs() C语言有3种循环:for、while、do while 使用关系运算符构建控制循环的表达式 其他运算符 循环常用的数组 编写有返回值的函数 Tips2: 循环的使用方法 大多数人都希望自己是... -
Chapter Two : Python 语言基础、运算符与表达式、程序的控制结构合集
2021-03-07 22:25:28运算符与表达式3. 程序的控制结构 在本章的开头送给大家一句话:生活不会突变,你要做的只是耐心和积累。人这一辈子没法做太多的事情,所以每一件事情都要做得精彩绝伦。— 史蒂夫·乔布斯(苹果公司联合创始人) 1. ... -
【Python中布尔表达式的正确表示】
2021-12-21 11:25:05[快速理解] 1.布尔表达式是:判断变量逻辑关系的运算,结果为True或False。...以下哪项是不合法的Python布尔表达式? A.1==2 B.1<=2 C.(1==2)and(1!=2) D.a=1 欢迎大家转发,一起传播知识和正 -
python测试题
2020-12-20 04:21:18一、填空题1.Python使用符号...3、Python中的可变数据类型有,不可变数据类型有。4、Python的数字类型分为、、等子类型。5、设s=‘abcdefg’,则s[3]值是 ,s[3:5]值是 ,s[:5]值是 ,s[3:]值是 ,s[ : :2]值是 ... -
史上最全正则表达式语法,文末附常用表达式!
2019-10-28 09:03:25元字符是构造正则表达式的一种基本元素。 . :匹配除换行符以外的任意字符 w:匹配字母或数字或下划线或汉字 s:匹配任意的空白符 d:匹配数字 b:匹配单词的开始或结束 ^:匹配字符串的开始 $:匹配字符串的... -
python运算表达式
2021-03-06 22:49:19运算符1、算术运算符:+,-,*,/,//(求整商),%,**(求多次方,左边为数,右边为多少次方)2、关系运算符:>,=,!=3、测试运算:in,not in,...(同)6、矩阵运算符:@(矩阵乘法)选择结构单分支 if 表达式:语句... -
循环遍历正则验证input框内容合法性
2017-05-05 09:44:10最近在写一个前端工具类,用来验证输入框的正确性,就不用jQuery验证那个东西了, 尝试了一下,代码如下: ... 循环遍历正则验证input框内容合法性 城市1: 城市2: 城市3: 城市4: 城市5: -
与数学表达式de/3abc对应的Python表达式中,不正确的是( )。_学小易找答案
2021-01-14 01:05:52【单选题】空气中一内外半径分别为 与b的接地导体球壳,距球心 处( )有一点电荷Q,则导体球壳上所感应的电荷总量是( )【单选题】与数学表达式de/3abc对应的Python表达式中,不正确的是( )。【单选题】一个不接地的导体... -
2012年计算机等级二级C语言章节习题及答案(5)
2021-05-23 08:35:38第6章循环控制一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项填涂在答题卡相应位置上。)6.1对表达式for(表达式1;;表达式3)可理解为A)for(表达式1;0;表达式3)B)for(表达式1;1... -
Nginx Rewrite && 正则表达式
2021-10-12 10:06:42正则表达式的目的是为了尽量精确的去匹配 文件,尽量精确的匹配,不区分的话更容易找到 目录,尽量精确匹配,区分大小写优先级更高,更容易找到 ③ 在实际网站使用中,至少要有三个匹配规则定义 ------------------... -
【嵌入式】C语言高级编程-语句表达式(03)
2020-07-06 17:36:45C语言的表达式02. C语言的语句03. C语言中的代码块04. C语言中的语句表达式05. 宏中使用语句表达式06. Linux内核应用示例07. 附录 01. C语言的表达式 表达式和语句是 C 语言中的基础概念。什么是表达式呢?表达式... -
详解Python正则表达式(含丰富案例)
2022-03-12 11:24:41正则表达式在网络爬虫、数据分析中有着广泛使用,掌握正则表达式能够达到事半功倍的效果。本文详细介绍正则表达式中各种规则及其符号含义,并结合Python中的Re库进行演示,由浅入深,即学即练即用,内容丰富,非常... -
C语言for语句用法详解
2021-05-18 12:34:53C语言for语句用法详解C语言是一门高级计算机编程语言,设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。下面小编给大家介绍C语言for语句... -
在switch语句中的表达式的类型必须是
2021-05-19 19:35:46在switch多分支语句中,break语句有...如果没有break语句,则会从满足条件的地方(即与switch(表达式)括号中表达式匹配的case)开始执行,直到switch结构结束。当break语句用于do-while、for、while循环语句中时,可...