控制流:条件判断
控制流:条件判断
Python中,if语句包含以下部分:
if:
- if关键字;
- 条件(即求值为True或False的表达式);
- 冒号;
例如,假定有一些代码,检查某人的名字是否为Alice(假设此前曾为name赋值)。
if name=='Alice':
print('Hi,Alice.')
简化为一行的写法:
OutputDateFormat=eval(f"datetime.strftime(datetime.today(),'{DateFormat_map[OutputDateFormat]}')") if OutputDateFormat else None
if ... elif..语句:
在代码中,elif语句总是包含以下部分:
- elif关键字:
- 条件(即求值为True或False的表达式);
- 冒号;
- 在下一行开始,缩进的代码块(称为elif子句);
if name=='Alice':
print('Hi,Alice.')
elif age<12:
print('You are not Alice,Kiddo.')
如果有一系列的elif语句,仅有一条或零条子句会被执行。一旦一个语句的条件为True,剩下的
elif子句会自动跳过。你可以选择在最后的elif语句后面加上else语句。在这种情况下,保证
至少一个子句(且只有一个)会执行。
if...else...语句
else语句中包含下面部分:
- else关键字;
- 冒号;
- 在下一行开始,缩进的代码块(称为else子句)。
if name=='Alice':
print('Hi,Alice.')
else:
print('Hello,Stranger.')
if条件判断
golang1.语法结构
if语句的语法:
if 布尔表达式{
/* 在布尔表达式为true时执行 */
}
if在布尔表达式为true时,其后紧跟的语句块执行,如果为fasle则不执行。
if...else语句的语法:
if 布尔表达式{
/* 在布尔表达式为true时执行 /
} else{
/ 在布尔表达式为false时执行 */
}
if在布尔表达式为true时,其后紧跟的语句块执行,如果为false则执行else语句块。
if...else if ...else语法:
if 布尔表达式{
-- 在布尔表达式为true时执行
} else if {
-- 在布尔表达式为true时执行
...
} else{
-- 在布尔表达式为false时执行
}
先判断if的布尔表达式,如果为true,其后紧跟的语句块执行,如果为false,再判断else if的
布尔表达式,如果为true,其后紧跟的语句块执行,如果为false,再判断下一个else if的布尔表达式,
以此类推,当最后一个else if的表达式为false时,执行else语句块。
在if语句的使用过程中,应注意以下细节。
·不需要使用括号将条件包含起来。
·大括号{}必须存在,即使只有一行语句。
·左括号必须在if或else的同一行。
·在if之后,条件语句之前,可以添加变量初始化语句,使用";"进行分隔。
2.使用案例
第一个例子是if...else的语法,判断奇数偶数。
例子1 判断奇数偶数。
package main
import "fmt"
func main() {
num := 20
if num%2 == 0 {
fmt.Println(num, "偶数")
} else {
fmt.Println(num, "奇数")
}
}
运行结果:
20 偶数
switch分支语句
1.语法结构
Go语言中switch语句的语法如下所示:
switch var1 {
case val1:
...
case val2:
...
default:
...
}
switch语句执行的过程自上而下,直到找到case匹配项,匹配项中无须使用break,因为Go语言
中的switch默认给每个case自带break。因此匹配成功后不会向下执行其他的case分支,而是跳出
整个switch。可以添加fallthrough,强制执行后面的case分支。fallthrough必须放在case分支的
最后一行。如果它出现在中间的某个地方,编译器就会报错。
变量var1可以是任何类型,而val1和val2则可以是同类型的任意值。类型不局限于常量或整数,但
必须是相同类型或最终结果为相同类型的表达式。
case后的值不能重复,但可以同时测试多个符合条件的值,也就是说case后可以有多个值,这些值
之间使用逗号分隔,例如:case val1,val2,val3。
switch后的表达式可以省略,默认是switch true。
2.使用案例
例子:判断学生成绩。
func main() {
/* 定义局部变量 */
grade := ""
score := 78.5
switch { //switch后面省略不写,默认相当于:switch true
case score >= 90:
grade = "A"
case score >= 80:
grade = "B"
case score >= 70:
grade = "C"
case score >= 60:
grade = "D"
default:
grade = "E"
}
fmt.Printf("你的等级是:%s\n", grade)
fmt.Print("最终评价是:")
switch grade {
case "A":
fmt.Printf("优秀!\n")
case "B":
fmt.Printf("良好\n")
case "C":
fmt.Printf("中等\n")
case "D":
fmt.Printf("及格\n")
default:
fmt.Printf("差\n")
}
}
再看一个案例,判断某年某月的天数:
package main
import "fmt"
func main() {
/* 定义局部变量 */
year := 2008
month := 2
days := 0
switch month {
case 1, 3, 5, 7, 8, 10, 12:
days = 31
case 4, 6, 9, 11:
days = 30
case 2:
if (year%4 == 0 && year%100 != 0) || year%400 == 0 {
days = 29
} else {
days = 28
}
default:
days = -1
}
fmt.Printf("%d 年 %d 月的天数为: %d\n", year, month, days)
}
运行结果:
2008 年 2 月的天数为: 29
3.类型转换
switch语句还可以被用于type switch(类型转换)来判断某个interface变量中实际存储的变量类型。
下面演示type switch的语法。其语法结构如下所示:
switch x.(type){
case type:
statement(s);
case type:
statement(s);
/* 你可以定义任意个数的case /
default: / 可选 */
statement(s);
}
例子:判断interface变量中存储的变量类型。
package main
import "fmt"
func main() {
var x interface{}
switch i := x.(type) {
case nil:
fmt.Printf(" x 的类型:%T", i)
case int:
fmt.Printf("x是int型")
case float64:
fmt.Printf("x是float64型")
case func(int):
fmt.Printf("x是func(int)型")
case bool, string:
fmt.Printf("x是bool或string型")
default:
fmt.Printf("未知型")
}
}
运行结果:
x 的类型:<nil>
1.if...then语句
If...then语句是选择语句中最简单的一种形式,它只做一种情况或条件判断,其语法格式如下:
if <condition_expression> then
plsql_sentence
end if;
·condition_expression:表达一个条件表达式,当其值为true时,程序会执行if下面的PL/SQL语句(即“plsql_sentence”语句);如果其值为false,
则程序会跳过if下面的语句而直接执行end if后面的语句。
·plsql_sentence:当condition_expression表达式的值为true时,要执行的PL/SQL语句。
实例:定义两个字符串变量,然后赋值,接着使用if...then语句比较两个字符串变量的长度,并输出比较结果。
set severoutput on
declare
var_name1 varchar2(50); //定义两个字符串变量
var_name2 varchar2(50);
begin
var_name1:='East'; //给两个字符串变量赋值
var_name2:='xiaoke'
if length(var_name1)< length(var_name2) then //比较两个字符串的长度大小
/*输出比较后的结果*/
dbms_output.put_line('字符串“var_name”'||var_name1||'”的长度比字符串“'||var_name2||”的长度小');
end if;
end;
/
如果if后面的条件表达式存在“并且”、“或者”、“非”等逻辑运算,则可以使用“and”、“or”、“not”等逻辑运算符。另外,如果要判断if后面
的条件表达式的值为空值,则需要在条件表达式中使用“is”和“null”关键字,如:
if last_name is null then
...
end if;
2.if ...then...else语句
它可以实现判断两种情况,只要if后面的条件表达式为false,程序就会执行else语句下面的PL/SQL语句。
实例:
if <condition_expression> then
plsql_sentence1;
else
plsql_sentence2;
end if;
·condition_expression:表示一个条件表达式,若该条件表达式的值为true,则程序执行if下面的PL/SQL语句,即plsql_sentence1语句;否则,程序将
执行else下面的PL/SQL语句,即plsql_sentence2语句。
·plsql_sentence1:if语句的表达式为true时,要执行的PL/SQL语句。
·plsql_sentence2:if语句的表达式为false时,要执行的PL/SQL语句。
实例:通过if...else语句实现只有年龄大于等于56岁,才可以申请退休,否则程序提示不可以申请退休。
set serveroutput on
declare
age int:=55; //定义整型变量并赋值
begin
if age>=56 then //比较年龄是否大于56岁
dbms_output.put_line('您可以申请退休了!'); //输出可以退休信息
else
dbms_output.put_line('您小于56岁,不可以申请退休了!'); //输出不可以退休信息
end if;
end;
/
3.if...then...elsif语句
if...then...elsif语句实现了多分支判断选择,它使程序的判断条件更加丰富,更加多样化,该语句下的哪个判断分支的表达式为true,那么程序
就会执行其下面对应的PL/SQL语句。
实例:
if <condition_expression1> then
plsql_sentence_1;
elsif <condition_expression2> then
plsql_senctence_2;
...
else
plsql_sentence_n;
end if;
- condition_expression1:第一个条件表达式,若其值为false,则程序继续判断condition_expression2表达式。
- condition_expression2:第二个条件表达式,若其值为false,则程序继续判断下面的elsif语句后面的表达式;若再没有“elsif”语句,则程序
将执行else语句下面的PL/SQL语句。 - plsql_sentence_1:第一个条件表达式的值为true时,要执行的PL/SQL语句。
- plsql_sentence_2:第二个条件表达式的值为true时,要执行的PL/SQL语句。
- plsql_sentence_n:当其上面所有的条件表达式的值都为false时,要执行的PL/SQL语句。
实例:指定一个月份数值,然后使用if...then...elsif语句判断它所属的季节,并输出季节信息。
set serveroutput on
declare
month int:=10; //定义整型变量并赋值
begin
if month >=0 and month <=3 then //判断春季
dbms_output.put_line('这是春季');
elsif month >=4 and month <=4 then //判断夏季
dbms_output.put_line('这是夏季');
elsif month >=7 and month <=9 then //判断秋季
dbms_output.put_line('这是秋季');
elsif month >=10 and month <=12 then //判断冬季
dbms_output.put_line('这是冬季');
else
dbms_output.put_line('对不起,月份不合法');
end if;
end;
/
注意:在if...then...elsif语句中,多个条件表达式之间不能存在逻辑上的冲突,否则程序将判断出错。
T-SQL.PNG
IF
格式
IF<条件表达式>
{命令行|程序块}
其中<条件表达式>可以是各种表达式的组合,但表达式的值必须是逻辑值“真”或“假”。其中命令行和程序块可以是合法Transact-SQL
任意语句,但含两条或两条以上的语句的程序块必须加BEGIN···END子句。
执行顺序是:遇到选择结构IF子句,先判断IF子句后的条件表达式,如果条件表达式的逻辑值是“真”,就执行后面的命令行或程序块,然后
再执行IF结构下一条语句;如果条件式的逻辑值是“假”,就不执行后面的命令行或程序块,直接执行IF结构的下一条语句。
例子:判断数字3是否整数。
declare @x int
set @x=3
if @x>0
print '@x是正数'
print'end'
IF ···ELSE
F选择结构可以带ELSE子句,IF···ELSE的语法格式如下:
IF <条件表达式>
BEGIN
{命令行1|程序块1}
END
ELSE
BEGIN
{命令行2|程序块2}
END
如果逻辑判断表达式返回的结果是“真”,那么程序接下来会执行命令1或程序块1;如果逻辑判断表达式返回的结果是“假”,那么程序接下来
会执行命令行2或程序块2。
例子:判断两个数8和3的大小。
declare @x int,@y int
set @x=8
set @y=3
if @x>@y
print '@x大于@y'
else
print '@x小于等于@y'