Praat脚本编程中文教程:条件判断语句if的用法

分类:Praat
 标签:Praat脚本,Praat中文教程,Praat编程
   修改 | 阅读(1967)| 评论(0)



条件判断语句:一般用于按不同的条件来执行不同的命令。

在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

这里我用汉字写出来,而且长度都相同,看起来可能还可以接受,不乱,但到实际编程中全是英文,而且长短不一,看起来就非常乱了。

这里只是考虑脚本格式的可读性问题,如果你要求不高,可以随便怎么写就怎么写,但是你陋半个月一个月回来看自己曾经写得长长的脚本,如果不格式化好一点的话你自己都不知道自己写的是什么了。


这节的教程就到这里吧。


原创作品,未经授权不可进行转载。






您的昵称:*
QQ登录(无需注册直接登录可进行回复)
您的邮箱:(填写邮箱,如有回复可进行邮件通知)
字体
字号
验证码:
点击刷新