00:00
好,我们继续来上课,那么今天呢,我们主要是针对于我们所讲的这个流程控制和运算符啊,这些内容,我们做一个这个强化的训练啊,因为我们把我们上一关的作业也都做一遍啊,好了,我们先看第一个我们需要干嘛呢?去做这么一个计算器,对吧?然后呢,他有这么一定的要求,那我先不管他的要求,先说我们最计算器最基本的一个实现,那么也就是说在这里边啊,咱们来看,我直接以代码为例,我新建一个这个PP的文件,比如说叫做这个呃,0HOMEWORK home homework。啊,这里面我们要实现什么,实现的是计算器效果对吧,也就是说。实现计算器。计算。计算器那么好,那么要想实现计算器,这里面我们就要去思考,思考什么呢?我们得一步一步去来,对吧,那么要思考。首先我们得干嘛,获得第一个数,用户数就获得用户。输入的第一个数对吧,然后呢,再来干嘛,获得用户输入的第二个数,因为我们是两个数之间的运算,对吧,还要获得什么,获得用户所选择的怎么样选择的运算符嘛,那我们提供的运算符有哪些,有这个加减。
01:16
从。和除对不对?哎,那么获取到这些运算符以后,那接下来一用户选择是某一运算符,我是不是就按第一个数和第二个数做对应的运算对吧?比如说第一个数去开始干嘛去操作我们的第二个数对吧?所以这里边也就是。如果。选择了。选了某种运算符,则,则第一个数操作第二个数,是不是这样的,对不对?哎,这就是我们做这个的思路,那么我们还需要有什么呢?还会有一个扩展的内容,也就是扩展内容。第一个扩展内容是什么呀?也就是说我们的除数不能为零。不能。
02:00
为零对吧,第二个扩展的内容呢。是不是就是如果第一个数或者第二个数是字母?对吧,是这个英文字母,那么是不是提示不允许输入。字母啊,也就是非数字的情况下肯定是不行的,对不对,哎,所以这里边我们要去给它都兼容到这里面来去做啊,那不管怎么样,我们先要有什么,先要有我们的表单对吧,也就是要有我们的HTL啊,那这里边我们来叹号do c t,科特莫勒。HTML,然后以HTML开始。以HTML。结束中间包含的一个header。来个title叫做诶title啊,Title叫做计算器,然后再往下来来个method,设置一下它的这个字符集不是,呃,Mate热签啊,设置一下它的这个字符集叫做叉S等于UTFUTF,杠八。然后再往下来就是我的包的标签,那么包的标签里边是不是就包含着form表单对吧?然后method的方式依然是get方式,因为我们只介绍了一个get方式啊好了,然后在这里面我们给他缩进一下。
03:12
然后这里面咱们说了要提示有运算对吧,所以这里面input我们先去干嘛,给它输入第一个数啊,第一个数,比如说我们起一个名叫做test,然后起名呢,叫做noe吧,啊,这是第一个数,然后。来一个BR。这里面我也可以给他一个提示,叫做。请输入一,一个数。好。搞定。然后第一个数完成以后,是不是就是运算符了,哎,就看咱们选择我们的什么运算符嘛,那选择运算符的话,那在这里边我就直接写了来一个input。Input。我用这个单选来做了啊,Input,然后冒号ideal radio。内呢,比如就要运算符了啊,然后Y6它应该有个默认值对吧,那默认值的话,比如说叫什么呢?叫做这个呃加那显示了一个加号啊,CTRLCCTRLVVV加减称四个值对吧,那这个叫减。
04:10
减。然后还有乘这块就是乘,然后还有除这块。就是。出。打一个小绰号。好了,除OK,加点乘除搞定,搞定以后继续一个B的换行,然后再来请输入第二个数,那input还叫case,那取名为or是不是就可以了?哎,完事以后我们点一个BR,然后再来一个input,提交SME,我们告诉叫什么计算,计算好了,那咱们现在来看我的表单是不是就有了啊?这里边叫做。呃。下边的零,一,下边的lesson,幺零,下边的homework。
05:01
应该就01HOMEWORK了,好了,来,你看这是不是就有了,当然现在不用考虑别的,比如说我现在随便输入几个数字,你点击计算,是不是就得让他帮我计算了。没错吧,哎,这是一种情况啊,那么在计算的时候我们可以干嘛?你看我这种方式啊,我是不是通过获取运算符对吧,获取到你是判断你是加是减,是乘四除,我是不是开始将它做相对运算,那先不考虑别的啊,比如说这里边我们就最简单的写法啊,来你看。这好不好?PP交换回来,咱们说了运算符,我们怎么去接收这个运算符啊,是不是得有变量来接收啊,对吧?来接收的话,我在上面来接收啊,我在上面接收,在下面的这个PP空间去做运算,你看上面我是不是用建化开一个PP空间了,哎,那在这里边我们去接收这个运算符,比如说这里边到了运算符等于什么,等于到了下线get里面的。No,不对,是运算符对吧,如果你设置了用你设置,如果没设置呢,默认为控制不差,哎,这是不是我用了什么用了那合并运算对吧,防止什么使用那。
06:03
合并运算。运算是不是防止这个第一次。访问报错。多错对不对,如果你看,比如说这里面到了一。到了OE等于什么呢?等于到了下线get里面的NO1,这是不是我第一个数第一个数啊,哎,那你看如果我直接这么写的话啊,咱们来看我第一次访问的时候会不会报错来。找你看有没有报错,是报我这个N1不行啊,对吧,未定义这个,所以ne,但是运算符有吗?没有因为什么,因为我做了判断了对吧,也就是说你设置了运算符,我才把这个运算符复制给他,如果没设置默认是不是就把空字符串复制给那个变量了。对不对,而这个呢,它没有设置这个,所以这里边我还可以干嘛,我也可以用三元运算符来做判断啊,比如说这里边我只是多给大家写一点啊,使用三元运算符也可以判断。三元。
07:00
嗯。算服。判断对吧,那判断什么是不是可以a set,你设置了这个值了嘛,对吧,哎,你要是设置了好,我要让你用你设置了。Get里的。NO1,那你要没设置呢,没设置的话,我是不是默认默认,比如说默认为零了,因为它是数值嘛,对不对。哎,那一样,那么NO2是不是也要判断,那这么写是不是比较麻烦,那我是不是可以简单点写,直接是NO2,然后问号,呃问号问号,然后给个零,是不是更方便了。对不对,哎,那OK,这就是咱们这个使用三元运算符去判断变量和我们直接去用的一个区别,最起码在代码上我是不是节省了很多呀,那现在你看我再来刷新是不是就不会报错了。哎,所有的变量我是不是就搞定了,哎,那搞定以后,那接下来再下面我是不是开始做运算。那刚才我们说了要做运算,是不是就判断用户所。用户所选择的运算符啊,对不对,那也就是说,如果这个运算符emp TY m谁呢,到了运算符,只要他不为空的话,你看啊,如果用户没选择他为空为空,这里边我来挨唯一啊,你看能不能走到这里边来。
08:13
消息。是不是有输出一对吧,那如果说您的输入十。再来个注意我没有选择运算符对吧,再来说是不是也输出这个一了,看到了吗。哎,所以这个取反也说不为空的时候,是不是才做运算对吧,那不为空的时候,再这回是不为空,速度一了再来看刷新。没有是吧,来。加二一等计算是不是输出这个一了,哎,这是不是不为空情况才走到这里啊,所以当他不为空的时候,我开始干嘛,开始判断用户是吧说。选择的。运算符对吧,这块叫判断用户是否。是否选择预算符对吧,如果你没选择的话,我肯定什么肯定是不给你的,对吧,甚至我们可以给他提示,提示什么呀,提示。
09:04
用户选择运算符吧,运算符是不是也可以对吧?哎,你提示也行,不提示也可以啊,那尽量可以给用户一个提示啊,好了,那这块我们是判断这个所选择的运算符,那接下来SWTC就s Switch判断是不是更好,因为这个运算符这一个变量是不是有可能存在多个值对吧?那K如果等于加的时候,那我是不是就要做加法运算。对吧,然后再K,如果人家等于。减的数。那我是不是就做的减法运算。对吧,在K如果等于乘的时候,那我们做的就是乘法。运算对吧,然后在K如果等于除的时候,我们是不是做的就是除法运算。是不是这几个。除法。运算好了,那咱们看那加法运算的话,我这里面是不是得有这么一个,呃什么呀,有这么一个变量来去接收这个加法,对吧,那也就是说。
10:03
在这里边我直接去给他一个。变量叫做Dollar I。ES result。对吧?等于什么呢?等于DOLLAR1加上DOLLAR2,这是不是就是加法运算对吧?然后BI也可以,因为我要单项分支的多项,我要多项分支单项选折对吧?哎,如果是减法呢?我Dollar re绕是不是等于到N1减去Dollar n2。对吧?如果是乘A错了,少于什么少一个break对吧?如果是乘法呢?那我的Dollar result是不是就等于等于什么Dollar ae去乘以。Dollar n2,然后B也可以再break对吧?除法呢,那就是Dollar re,让等于DOLLAR1除以DOLLAR2,好,那最后一个我可以不用break了,对吧?然后最后我们在这里边是不是就输出结果就行了。没错吧,哎,那咱们来看啊,这里面直接我在最后这里面输出一个结果啊。叫做呃。
11:00
艾有什么?艾有个Dollar re SOP result啊,如果他有我就输出,如果没有默认是不是输出一个空了。对不对,那现在咱们来看可不可以啊,现在我没有做运算对吧,我把这些都删掉,比如说第一次来访问的时候,这没有问题,对吧,现在我来说,我说十。加。12,结果是22。哎,13减三结果是不是十对吧二。乘二结果是不是四对吧。十。除二结果是不是五那十。除零呢,选择一个除号一除零走,你告什么,是不是报错了,哎,报了一个警告,看到了吗?哎,这是什么呀。除数不为零对吧,所以当除数为零的时候,我是不是得做判断呢?也就是说一旦做除法的时候,什么时候才能做除法,是不是在这里面如果如果什么如果遭了no。不等于零的数。不等于零的时候,我才能干嘛,才能去做这个运算。
12:01
才能去做这个运算对吧,哎,那否则否则的话是不行的,也就是说在这里边。我们给他一个。呃。我看一下括号有没有用错啊,OK,没有用错啊,好了。那在这里边我们就给了什么,比如说我给了一个错误提示啊,到了这个ER对吧,到了E。等于,等于什么呢?等于这个,呃。大哥,除数不能为零。对吧,那好了,那最后我是不是就可以输出这个错误了,那那怎么输出我还是一样在这里面我来艾扣。还一个什么Dollar e对吧,问号问号。给他一个空,也就是说你有我就输出,没有我就输出一个空,当提示里选择运算符啊,我也可以,比如到了E啊叫什么呢?叫做叫请选择运算符是不是就可以了,哎,也就是说当你这个判断,你看我们是一层一层来的啊,你看当你这个运算符如果没有通过的话,是不是就走这里来了。
13:08
对不对?哎,那如果你用算通过了,我走到这个十位里面,判断你到底是做的某一个运算对吧?如果你做的是这个除法,一旦它等于零的时候,我是不是走到这个ER走到这里来了,对不对?哎,那现在你来看啊,这个时候我们一样再重新访问啊来,比如说现在我不给了运算符,我就说一个十。再来一个是。看来点击计算是不告诉求出预算符。对不对,哎,或者说其实我们做默认的时候,他也告诉什么,是不是也选择应财富,其实默认的时候我们需要选择嘛,肯定是不需要的。对不对,哎,默认的,注意默认情况下我们是不需要的啊,所以这里边我可以怎么办。在这里边我是不是用他这个方式去判断的,对吧,它这个方式我注意就要注意我们预算不变量是怎么接受的,我预算出变量是怎么接受,你看如果设置了这个运算不变量,我就让它。用你设置,如果没设置,我是不是就为空了。
14:00
看到了吗?但是我第一次的时候,注意第一次的时候他肯定是没设置,肯定是一个空字符串。对不对,哎,肯定是一个控制,那我别给控制符串了,我给个什么呢?我给一个empy empty。给一个M。给你个安,以后这个时候咱们来看啊,我在这里边咱就不管判断不判断的问题了,来为他钢DP打印一下,到了运算符好了,这个时候你来看,走,你拿没拿到安排拿了,这是第一次吧,哎,第一次是这样,如果我要是没选择运算符呢,来看到了再来个是这是没选择,没选择时候我点击计算。干嘛呀?O1O2是不是也是安排。哎,那也就是我第一次和我选不选择都会去走到这里对吧。哦,那要这样的话,我就只能做他一个。默认的了。哦,有办法了,有办法了啊,什么办法咱们来看啊。你看好了,如果我直接这样的重新刷新啊,咱们就为了第一次能运算符不出现嘛,对吧,现在我点击你看什么都没有,诶我没输出吗。
15:06
输出了。输出了,这里面我判断的是什么判断是它来判断还原啊,把这个M去掉。还是等于什么,等于一个空字符串就等于空就可以了,对吧,来点击计算计算以后,现在咱们来看啊。他默认就我选择这个应该服,我的目的就是什么,当第一次如要不选择应该服务,也就是说只有第二次,比如说你输入十,再来个十。只有这种情况1.1计算出,我才能让他输出,请选择运算符,明白吧,所以这种情况你看是不是no,一是有值的NO2是不是也是有值的,咱们来看啊,在这里边。我在这块啊。V告DP打印什么呀?Dollar OV来,你看它有没有值。是不是有值对吧,那么也就是说当它不为空。让他不为空。并且。并且什么呀,并且这个遭了NO1。存在值是吧,也就是emp TY也用M了,Empty。
16:05
呃。Emptyy这样吧,就直接它不等于零,不等于零对吧,或者谁呀,到了no no2不等于零是不是只要有一个要求满足是不是就可以了。对吧,哎,这里面只要有一个要求可以的话就没问题。啊,它当它不为空的时候。如果他为空的情况下,为空的情况下。他俩。都不能等于零。那这块我给它括起来啊,括起来好了,我们测试一下,看看我们这个逻辑对不对,对吧?好了,那现在我们来看啊,这个图我们再来刷新。呃,走到哪里了啊,如果他不为空不为空。
17:00
请选择运算符走到了。也走到下边是吧。来把这个注释掉啊,咱们来看啊,它最终能输出到哪里,比如说这里边走到这里我就给个艾个一啊,走到下面这里边呢,我就艾一个二,就是一二,我们来做测试啊好了,现在咱们来看所有都不为空的时候走你。告什么?二、看到了吗?走到哪儿了?是不是走到了这里边?对吧,输出一个二啊,那如果说这里面我来个十,再来个十,点击计算来,你看这个数也是输出二也都走到了这里面也有条件。给的不对吧,是不是,也就是说你看啊,都走到这里边应该是什么,它当它不为空的时候,如果它不为空的情况下,那么并且变什么呢?并且我的。NO1不等于零。或者我的NO2也不等于零。不等于零啊,那这个数再来看。再来刷机。喂。
18:01
我一等于十,NO2也等于十对吧,那这里边我应该是。Empty也用empty吧,到了N1对吧,取反,也就如果它不为空,是比如说它不为空的时候,并且第一个数不为空,然后呢,或者第二个数也不为空的时候。就代表了人家选择了运算嘛,对吧,到了NO2啊,到了NO2也不为空的时候。好了。这个时候再来刷新。你看都是二,那我这块应该用什么,应该用一个。并且。两个都不为空,那不行,还是他得,他肯定是得或者了啊,这样的话就判断是不是就比较麻烦。刷新一下啊。当它不为空就是它不为空时,反过来是false。我取反变成处。他是说他俩同样要返回一个处。才可以。所以这个时候我的十跟十,它为什么没给我返回一个数呢?你看啊,这里边挖一个不用挖啊,直接呃,VR-DP打印打印什么呢。
19:10
你看我们来测试一下啊,Empty empty。到了N。遭了noe。区反对吧,然后或者去反EPTY到了NY,你看啊,我让他们两个做运算,你看他们给我反馈的结果是什么东西啊。走,你。反过来一个布尔值的处对吧,那处跟处。他最终也是盘回一个处啊。哦,因为我的运算符为空了。就算不被空了。对吧,所以这么判断是不是很麻烦很乱对吧?那好了,那不要不要紧,我们换一种方式,就别用这种方式了,对吧?因为我们用这种逻辑判断给的太多就比较麻烦,对吧?所以怎么办?你看我们目的不就是为了判断它第一次嘛,对不对,因为第一次我不想让他输入它第一次嘛,人家刚进来,刚进来肯定什么都不提示,当你没选择预算服的时候,我是不是才提示对吧?也就是说当你点击提交这一刻,我是不是才提示,所以在这里面可以干嘛呢?你看我在提交这里边,我也给他一个name。
20:14
内部等于什么?AA等于sub啊等于sub,那现在咱们来看啊,一样在这里边我来。VDB打印打印谁的打印这个Dollar_get里面那谁呀subb吧,哎,现在你看我来打印它是报错的,因为第一次它是没有了,对吧,只有我提交了一次以后是不是才不会报错。哎,那好了,那既然是这样的话,那咱们看我把这些硕士输入都可以删掉了啊在这里边。我可以干嘛第一件事儿。判断用户是否提交对吧,如果如果什么呀,如果这个a set你设置了到了下线get里面的sub的话,对吧,我才干嘛才进行做运算。
21:00
才进行做运算,才进行这里面的相关操作,看到了吗?那这里的相关操作什么呀?比如输出一这个咱也不需要输出了,对吧,十位值里面捡起来好了你看。是不是这样,如果A赛的你设置了这个提交,我才干嘛呀,我才来判断运算服务,那这个时候你看第一次的时候,我是不是就不会输出这个艾瑞了啊,再来把大。去掉是不是就没有了,对吧?那当你输入十不选择运算符,再来个十,我点击计算数是不是高,请选择运算符对吧,那再来十。乘以二走,你是不告计数,正常计算十。除。零是不是给我错误提示看到了吧?哎,那OK,这回是不是就搞定了,那搞定他以后呢,接下来呢。还差什么东西,咱们来看啊,我这里边还有要求什么呀,如果第一个数,第二个数是字母呢,也就是说当这里边比如说ABC啊,就说一样,我就选加吧,加上ABC。等于什么?你看是不是这里边已经给我一个提示了,对吧,他说什么,他说不是一个数值,你看不是一个数值,对吧,所以在这里边我也需要干嘛,给他进行一个判断嘛,那也就是说在这里边。
22:06
看好了,我这不是接收完了吗?接收完值以后,接下来干嘛判断。第一个数和。第二个数。第二个数是否是数值?树枝。对吧,那怎么判断,如果如果什么直接取反A-a me是不是检测数字是否是检测这个变量是否是数字或者数字,这不串对吧?如果你不是的情况下,我就遭了ER or。ER,有了是吧,Noe吧,啊就等于什么呢?等于一个,比如我给了一个放标签结束的放标签啊,虽然已经被弃用了,但是我们还可以用对吧?然后里边给了一个color,既然报错嘛,那我们就给了一个红色的对吧?Read,然后告诉什么叫做第一个数必须为数值。好了,所搞定了,否则else,否则情况下呢,那到了ER or的noe,就它等于一个空中串对吧?那同样第二数是不是也这么判断,如果取反A杠。
23:08
Me?丢进来哎,如果它是这个不是一个数字的话啊,那我们也要提示,如果是数字呢,数字是是数字的话,这个错误提示是不是得空了,对吧,不是的话,那这里边e no。N啊,这里面等于等于什么,等于的是不是还是这句话。只是提示变了,变成什么,变成第二个了,对吧,来。这到了第二个数啊,第二。个数必须数值,否则为空,那是吧,那好了,那这两个数是不是要放到这个后面做提示啊,对不对,所以在这个换行之前,在换行之前我给它输出一个,那么输出呢,我可以加括号。问号。PHP输出谁呀?包了ER or的nod,然问号这个号回来是不是输出这个变量,哎,那么这种输出我可以简写,怎么简写呢?在这里边你看好了,我在这块给你简写一下啊,只咱们这块是不是只输出一个变量了,只输出一个变量可以直接降号问号等号问号降回来这里这里边你写个变量名就是简写了,哎,这就代表了这个意思,是输出这个变量了,好了,那现在我们来看啊,这个时候我们来。
24:18
比如第一次访问,诶没问题对吧,当我输入一个十。减去减多少,减ABC能减吗?说不行啊,所以我第一这里面是不能计算的,第二是要给他提示的,但现在来点击计算,他就给我报错,因为什么?因为我计算了对吧,然后但是在提示是有第二处必须是数值对吧?哎,那也说这两个一旦是有错误的时候,是不是就不能做计算呢?所以我在计算的时候,我需要干嘛,需要再判断一下。在哪,是不是在这做计算呢,对吧,在这计算之前,我需要判断什么,判断用户输入的这个数值啊,输入的数值。
25:01
是否是舒服的数是否是。正确,是否是正确的?正确的对吧,那也就是如果,如果什么呀,如果这个empy MT,判断谁判断这个e or的noe,如果它为空,并且什么呀,Empy emptyt里边的这个到了ER no2。是吧,并且它也为空的时候,为空是不是才正确的对吧,我这两个变量默认是不控制不住,控制不用M的简称是不就为空啊,为空就正确,正确的时候我才能干嘛让你去做运算。没错吧,哎,否则错误的说。我给了一个提示。再给个提示,什么提示到了E等于等于叫做大哥对吧。输入的不是数字,不能计算好,那这时候你看我所有的错误是不是都可以屏蔽掉了啊来,现在我们返回默认的啊,比如说这里边一样,我说十。乘ABC点击计算,你看告诉我第二处B数是组对吧,然后他给我提示什么,大哥输入的不是数字,不能做计算,是不是可以了,如果我正常输数字十乘二来走,结果是不是20看到了吧,那整个计算器的功能我是不是就实现了?
26:16
哎,那OK,这节课我们到。
我来说两句