disp语句怎么格式 matlab_7 Matlab 条件判断与自定义输入输出

本文介绍了如何在Matlab中使用if语句进行条件判断,包括简单的合格不合格判断,以及更复杂的评分等级判断。通过示例代码演示了如何结合else和elseif实现多个条件分支,并引入了input函数允许用户输入成绩,以及使用sprintf函数进行格式化输出,提升代码的可读性和用户体验。同时,提出了对用户输入数据的验证以及错误信息提示的需求,鼓励读者尝试解决这些问题。
摘要由CSDN通过智能技术生成

计算机在某种程度上可以像人类一样完成条件判断——根据不同的条件,执行不同的操作。Matlab 使用if语句实现条件判断。

if 语句

假如我需要判断一个学生的考试成绩是否合格,做法是这样的:如果分数score变量的值大于等于60分,就显示合格。下面是用if语句写的判断程序(请练习使用脚本编辑器写代码并运行)。

score = 70;

if score >= 60

disp ('your score is ')

disp (score)

disp ('qualified!')

end

有几件事情需要注意:

if语句之后的那一行,需要缩进(一般是四个空格)。虽然

Matlab 不像 python 语言那样强制要求缩进,但是,这就像写文章不分段一样,阅读体验非常差。一段两段的还好说,代码一长就没法看了。matlab 脚本编辑器自带自动缩进功能,可以省不少事情。

if语句必须以end结尾。

示例程序中,if语句的执行顺序是:如果score >= 60这一逻辑表达式的值为true,就执行缩进的那三行disp语句,否则什么都不做.

disp中的字符串,当然可以使用中文。但是因为编码的问题,可能会遇到错误,如果遇到了,请记得排查是否使用了中文字符。

把这个程序改进一下,让score < 60的时候,也显示信息,而不是什么都不做。方法很简单,加一个else语句。

score = 58;

if score >= 60

disp ('your score is ')

disp (score)

disp ('qualified!')

else

disp ('your score is ')

disp (score)

disp ('unqualified!')

end

else 是“其他”的意思,这段代码的条件判断,其实就两种情况:score >= 60和“其他”。显然,58符合“其他”这一条件,所以程序执行else后面的语句而不执行if后面的三个disp语句。

这个程序只能判断一个成绩是否合格,现实情况是要判断成绩的等级。比如,90分以上是“优”,75到90分是“良”,60到75分是“中”,60分以下是“差”。Matlab 提供了elseif用来做更多的判断。示例如下:

score = 58;

if score >= 90

disp ('your score is ')

disp (score)

disp ('优')

elseif score >= 75

disp ('your score is ')

disp (score)

disp ('良')

elseif score >= 60

disp ('your score is ')

disp (score)

disp ('中')

else

disp ('your score is ')

disp (score)

disp ('差')

end

现在,我们可以看到if语句的完整形式了:

if

elseif

.

.

.

elseif

else

end

if语句的使用很灵活,除了if,end是必须的,elseif和else都不是必须的。

if 语句的执行顺序是从上到下的,如果当前的逻辑表达式为false,就进入下一个逻辑表达式的判断,直到遇到某个逻辑表达式的值为true,就执行该逻辑表达式后面的“动作”并忽略后面的所有elseif和else。

大家可以试着给出不同的score值,看看程序的输出结果,仔细理解和体会if语句的执行过程。

现在这个判断成绩等级的程序基本符合要求了,但还很麻烦,每执行一次判断都需要修改代码中 score 的赋值。disp的输出,看起来也很不美观。自定义输入输出就能解决这些问题。

input函数

input 函数可以从键盘接受用户的输入。help一下,可以了解到它的使用格式是input (PROMPT)或者input (PROMPT, 's'). 那个PROMPT是用户可以自定义的一个提示语,是字符串型的数据,需要用引号括起来的。

默认情况下,input接受数值型数据,可以是矩阵、表达式。也可以使用input (PROMPT, 's')这样的用法,让input接受string型数据。

不管哪种用法,接受到的输入都可以赋值给变量。看下面的例子:

>> score = input ('Please Enter Your Score: ')

Please Enter Your Score: 59 + 20

score =

79

>> name = input ('What''s Your Name? ', 's')

What's Your Name? John

name =

'John'

上述命令行中,变量 score 和 name 分别从用户处获得了数值型数据79和 string 型数据John

有了这个东西,我们可以把判断学生成绩等级的程序修改一下,让它先等待用户输入成绩,然后作出判断。

score = input ('Please Enter Your Score: ');

if score >= 90

disp ('your score is ')

disp (score)

disp ('优')

elseif score >= 75

disp ('your score is ')

disp (score)

disp ('良')

elseif score >= 60

disp ('your score is ')

disp (score)

disp ('中')

else

disp ('your score is ')

disp (score)

disp ('差')

end

现在,这个程序可以反复运行了,不用每次判断成绩都修改代码。但是还有一个小麻烦,大家都知道成绩是 0 到 100 分的数字,可是有些用户他不按套路出牌,胡乱输入数据。怎么解决这个问题?大家可以试试。

我们现在解决另一个问题,就是那个disp的输出有点丑,我希望能看到这样的结果“你的成绩是:X,对应的成绩等级是:Y”。

格式化输出字符串,sprintf

Matlab 格式化输出字符串与其他的程序语言类似,也采用占位符%的办法。占位符有点像是图书馆占座。

今天我到图书馆以后就将三本书往三个位置上一扔,这三个座位就是有人占了。过了一会儿,我和其他两个室友分别找那三本书,去相应的位置上坐下来。

这里书就相当于占位符%,而真正去坐那个座位的人,可以看成是变量的值。

好了,现在我有两个变量分别是score和等级rank. 我要输出这样的字符串the score you entered is %, the rank is %. 那个%所处的位置是我要用真正的score和rank去替换的。

占位符%,不仅可以指定输出位置,还可以指定输出格式。使用%d这样的形式指定输出格式。这里的意思是在占位符位置输出一个整数。最常见的有三种格式:

%d, 十进制整数

%f, 浮点数,可以用类似%.2f的格式控制显示精度

%s, 字符串

所以,一个完整的格式化输出字符串应该是这样的:the score you entered is %d, the rank is %s, %d和%s分别对应 score 和 rank,并指定了它们的数据类型:整数和字符串。

sprintf是 Matlab 用来完成格式化输出的一个函数。它的用法也很简单,把你要说的话写成字符串,然后把占位符对应的变量指顺序写出来就可以了。我们试试:

>> score = 78;

>> rank = 'qualified';

>> sprintf ('the score you entered is %d, the rank is %s', score, rank)

ans =

'the score you entered is 78, the rank is qualified'

>> floatnumber = 5.3456;

>> sprintf ('This is an example for output of float number: %.3f', floatnumber)

ans =

'This is an example for output of float number: 5.346'

最后,留个作业给大家:将判断学生成绩等级的程序修改一下,要求使用input 函数接受用户输入,如果输入的数据错误,需要给出相应的信息;使用 sprintf 函数格式化输出结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值