条件判断语句:一般用于按不同的条件来执行不同的命令。
在Praat中,条件语句也和其他编程语言一样,有几种形式:单条件判断,双条件判断,多条件判断。
我们先来看一看单条件判断的语法:
1 2 3 | if 条件语句 符合条件时要执行的操作 endif |
if和条件语句之间要用空格隔开。
看个简单例子:
1 2 3 4 5 | a=1 b=2 if a<b writeInfoLine: "符合条件,程序执行到这里" endif |
上例中,“a<b”就是条件语句,里面的writeInfoLine就是要执行的操作,这例子的意思是,如果a<b,那么就输出“符合条件,程序执行到这里”,如果把“a<b”改成“a>b”,那就不会执行到里面的输出语句。
再来看看双条件判断的语法:
1 2 3 4 5 | if 条件语句 符合条件时要执行的操作 else 不符合条件时要执行的操作 endif |
例子:
1 2 3 4 5 6 7 | a=2 b=1 if a<b writeInfoLine: "a小于b,程序执行到这里" else writeInfoLine: "a大于b,程序执行到这里" endif |
这例子的输出结果是:a大于b,程序执行到这里。因为条件不符合,所以执行到else下面的第六行语句,第四行语句不执行。
最后来看一下多条件判断语句的语法:
1 2 3 4 5 6 7 8 | if 条件语句1 符合条件1时要执行的操作 elsif 条件语句2 不符合条件1,符合条件2时要执行的操作 ...条件3、4、5…… else 以上都不符合条件时要执行的操作 endif |
这是多条件判断的语法,你有多少个条件就用多少个elsif进行判断。
来看例子:
1 2 3 4 5 6 7 8 9 | height=1.1 if height<1 price=0 elsif height<1.2 price=50 else price=100 endif writeInfoLine:price |
上例中,是很常见的,根据身高来判断票价的:身高小于1米的,免票价,身高小于1.2米的,半票,否则就是全票。我们这里的身高为1.1,所以最后执行到的是第五行,票价为50,输出结果即为:50。第三行和第七行的赋值语句都不会被执行。
要条件语句中常用的条件判断有:>(大于)、<(小于)、=(等于)、>=(大于等于)、<=(小于等于)、<>(不等于)。条件判断不仅仅用于数值的判断,也可用于字符串的判断,如:text$="yes"。
条件语句也可以综合多个条件进行判断,比如说同时满足条件1和条件2时才执行,我们可以用“and”来连接两个语句,只满足条件1或者只满足条件2就执行,我们可以用“or”来连接两个语句:
1 2 3 4 5 6 7 8 9 | a=3 b=0 c=3 d=2 if b<>0 and d<>0 writeInfoLine:a/b+c/d else writeInfoLine: "0不能作为被除数" endif |
上例中,我要计算a除以b,加上c除于d的值,我们知道被除数不能为0,所以我们要做计算之前要先判断b和d都不是0才行进行计算,要两个条件同时满足,所以我们用了“and”来连接两个判断语句。
我们现在来改一下上面的例子,用“or”来进行判断:
1 2 3 4 5 6 7 8 9 | a=3 b=0 c=3 d=2 if b=0 or d=0 writeInfoLine: "0不能作为被除数" else writeInfoLine:a/b+c/d endif |
在这个例子中,我们判断的是b或者d,只要有一个是0,那就不能进行计算,得到的结果是一样的,只是在写程序时进行的判断不一样,不管你是用and还是用or,只要能达到要求就可以了。
可能有些人发现了,在上面所有例子中,我的条件判断语句是顶格写的,而执行的语句却是空了几格来写,其实这并没有关系,在脚本执行的过程中,是不会去解释一行语句前面的空格的,也就是说,你前面有一个空格也行,两个空格也行,三个、四个……都行,除了空格,制表符也是可以的,也就是我们键盘上的“tab”键。我在上述例子中空格是为了增强脚本的可读性,当我们有多个条件语句进行嵌套时,这样我们会很容易看出什么条件执行哪里的语句,看看下面的例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | if 条件1 if 条件2 if 条件3 if 条件4 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 endif 执行满足条件1,2,3的语句 执行满足条件1,2,3的语句 endif 执行满足条件1,2的语句 执行满足条件1,2的语句 执行满足条件1,2的语句 endif 执行满足条件1的语句 执行满足条件1的语句 endif |
上述例子里面有4个if语句进行嵌套,每个if语句我们都比它外层的缩进4个空格(实际编程中我个人喜欢缩进一个制表符,打四个空格太累),这样我们一眼就看出来什么时候执行什么语句,这个if对应到哪个endif上,但如果没有缩进的话,就很难看出来了,觉得几个if对应起来非常乱,来看看:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | if 条件1 if 条件2 if 条件3 if 条件4 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 执行满足条件1,2,3,4的语句 endif 执行满足条件1,2,3的语句 执行满足条件1,2,3的语句 endif 执行满足条件1,2的语句 执行满足条件1,2的语句 执行满足条件1,2的语句 endif 执行满足条件1的语句 执行满足条件1的语句 endif |
这里我用汉字写出来,而且长度都相同,看起来可能还可以接受,不乱,但到实际编程中全是英文,而且长短不一,看起来就非常乱了。
这里只是考虑脚本格式的可读性问题,如果你要求不高,可以随便怎么写就怎么写,但是你陋半个月一个月回来看自己曾经写得长长的脚本,如果不格式化好一点的话你自己都不知道自己写的是什么了。
这节的教程就到这里吧。
原创作品,未经授权不可进行转载。