控制流:条件判断

2020-04-06  本文已影响0人  蝉时雨丶

控制流:条件判断


Python中,if语句包含以下部分:

if:

例如,假定有一些代码,检查某人的名字是否为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语句总是包含以下部分:

if name=='Alice':
    print('Hi,Alice.')
elif age<12:
    print('You are not Alice,Kiddo.')

如果有一系列的elif语句,仅有一条或零条子句会被执行。一旦一个语句的条件为True,剩下的
elif子句会自动跳过。你可以选择在最后的elif语句后面加上else语句。在这种情况下,保证
至少一个子句(且只有一个)会执行。

if...else...语句

else语句中包含下面部分:

if name=='Alice':
    print('Hi,Alice.')
else:
    print('Hello,Stranger.')

if条件判断

golang

1.语法结构
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>

PLSQL

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;

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'
上一篇下一篇

猜你喜欢

热点阅读