控制流:条件判断

控制流:条件判断


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'
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,204评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,091评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,548评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,657评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,689评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,554评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,302评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,216评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,661评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,851评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,977评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,697评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,306评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,898评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,019评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,138评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,927评论 2 355

推荐阅读更多精彩内容