美文网首页
控制流:条件判断

控制流:条件判断

作者: 蝉时雨丶 | 来源:发表于2020-04-06 13:57 被阅读0次

    控制流:条件判断


    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条件判断

    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;

    • 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'
    

    相关文章

      网友评论

          本文标题:控制流:条件判断

          本文链接:https://www.haomeiwen.com/subject/cjzvphtx.html