<p>1什么是函数?()是输入函数,当你在函数的括号内写出问题时,函数会将此问题原样显示在屏幕上并在终端区域等待你针对此问题的回答。 只有当我们在终端输入信息后这扇大门才会关上,继续执行下面的命令。</p><p>简单总结:</p><p>函数的使用是有问有答友来友往需要在终端处输入信息</p><p>练习。</p><p>('请在以下4个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:')</p><p>运行结果为:</p><p>请在以下4个选项【格兰芬多;斯莱特林;拉文克劳;赫奇帕奇】中,输入你想去的学院名字:</p><p>输入名字按回车键就没有后续了。因为后续没有命令了</p><p><br></p><p>2当我想将搜集到的数据和'学院欢迎你小萌新'拼接起来并打印出结果时,问题来了。虽然我用函数收集到了一个信息,可我如何从程序海洋中调出这个信息,进行数据拼接呢?这就涉及到了函数的第2个知识点——函数结果的赋值。通过赋值达到随时提取输入结果的目的。</p><p>name=('请输入你的名字:'),虽然看上去像是给函数赋值,但实际上我们是将函数的执行结果(收集到的信息)赋值给变量name。</p><p>这样不管你在终端输入的内容是什么,不管你的回答改变多少次,只要是对函数所提问题的回答都会被存储在变量中。等待你打印变量时,将回答提取出来,显示在显示屏上。</p><p>而这些展示在终端的回答或者信息或者说是数据,在代码世界,我们可以称其为输入值,也就是我们输入给函数的内容。</p><p><br></p> <p>注意27/32/35行</p> <p>注意print(),括号里只是name,而没有'',也就是说,不是print('name'),不然运行结果就是name。而不是函数里选择的变量</p> <p>但可以在后面的文字里用单引号直接打印里面的内容</p> <p>运行结果</p> <p>继续练习</p><p>重点提示:赋值,函数,变量拼接,print函数。</p><p>也就是1先将函数结果赋值给变量;2使用函数收集信息;3输出结果。</p> <p>运行结果</p> <p>第1步就是赋值,并通过函数提问</p><p>第2步我们要根据回答进行条件判断,如果回答是1就显示条件1的结果,如果选了其他选项,则显示其他条件的结果。</p><p><br></p> <p>问题来了,为什么if条件下的变量choice是字符串1——'1'呢?如果不是字符串格式,是整数1会出现什么结果呢?</p><p><br></p><p>结果如图,你输入的是1,显示的结果是else条件下的结果——您可是被梅林选中的孩子我们不接受这个选项。</p><p>这是为什么呢?我们输入的就是条件选项中的数字1,怎么就无法出现对应的结果呢?在这里就涉及到了函数的第3个知识点,函数的数据类型。</p><p><br></p><p>另外注意,if条件判断中,用的是==,两个等号。一个等号会出现错误提示</p> <p>对于函数来说,不管我们输入的回答是什么,不管你输入的是整数1234,还是字符串'隐形斗篷是我最想拥有的魔法',函数的输入值(搜集到的回答),永远会被“强制性”的转换为“字符串”类型。(Python3固定规则)</p> <p>不信?用我们第1关学过的type函数检验一下吧。</p><p>终端输入整数1,被强制转化为'1',字符串形式。</p><p>这样,由于我们用赋值运算符=,把函数的字符串结果赋给了变量choice,所以这个变量也一定是字符串类型。</p> <p>If条件句中的1是字符串——'1',然而现在是整数1,那它就不符合if的条件,那只能选择else,所以结果出来的就是第2个选项的else条件判断结果。</p> <p>通过</p><p>或者可以在上一步用into( ())将收集到的信息直接转化成整数</p> <p>这段点击运行并输入数据后,你立马会被报错,那么这段斯内普教授代码的错误源是哪里呢?就是因为函数输入值为字符串,但赋值为整数,这两者无法进行判断。</p><p>修改的话就是在第三行用int()函数</p> <p>在刚刚那个例子中只有两个选项,但是假设你有1、2、3、4直到365个选项,先不说数据类型转换正确与否,单引号一个一个的打太耗费时间了。我们就需要一个更为省力的简便方法,将所有输入值的数据类型一次性全部变为整数。</p> <p>刚刚不是说函数收集到的信息固定是字符串吗?还能变整数?</p><p>没错儿,函数的输入值在某些状况下是可以变为整数的。那么你还记得字符串转变为整数要怎么做吗?</p><p>int()</p><p>INT函数可以从函数的源头,将输入的内容转换为整数。</p><p><br></p><p>这串代码看起来是把函数整个强制转换了。实际上我们是将函数取得的结果,进行强制转换,并将强制转换的结果赋值存在名为choice的变量盒里,这样就算if条件是整数,程序也可以准确运行。</p> <p>练习</p> <p>就上图月工资练习</p><p>及老师答案</p><p>注意,m=int(('')),本身就会先打印''里面的内容,而终端输入数值后就会直接转换成整数</p><p><br></p> <p>从第一天回顾</p> <p>第二天</p> <p>第三天</p> <p>综合运用</p> <p>作业1</p> <p>作业2</p> <p>答案a</p> <p>小精灵:您好,欢迎来到古灵阁,请问您需要帮助吗?需要 or 不需要?</p><p>你:需要</p><p>小精灵:请问您需要什么帮助呢?1存取款;2货币兑换:3咨询</p><p>你:2</p><p>小精灵:金加隆和人民币的兑换率为1:513,即一金加隆=513人民币</p><p>小精灵:请问您需要兑换多少金加隆呢?</p><p>(你说了一个数字 N )</p><p>小精灵:好的,我知道了,您需要兑换(你说的数字 N )金加隆。</p><p>小精灵:那么,您需要付给我(你总的数字N513)人民币。</p><p>注1:如果选择不需要帮助,小精灵会礼貌地说好的,再见。</p><p>注2:如果选择帮助【1存取款]小精灵会推荐你去存取款窗口;如果选择帮助[3咨询】,小精灵会推荐你去咨询调口。</p> <p>题目讲解</p><p>和小精灵的对话可以被这么拆分:1小精灵通过 ()函数进行提问。</p><p>2提问分为两个基础条件:基础条件1 if 需要帮助:基础条件2 else 不需要帮</p><p>助。</p><p>3在基础条件1需要帮助的情况下,又分为3个额外条件:if1存取款; elif2</p><p>货币莞换: else 3咨询。</p><p>4小精灵会根据你的选择,给子不同的回答。如果选择1—存取款或者3-咨询,小精灵会准荐你去对应的窗口。</p><p>5如果选择 elif 条件2货币兑换,需要再通过 (函数提一个问题:请问您需要兑换多少金加隆呢?</p><p>6当获得了回答后,由于1金加隆=513人民币,而你支付的是人民币,所以需要计算出支付的人民币数额。</p><p>7这时,你需要使用 float ()函数,将回答的数额转换为浮点类型进行计算,再通过 str ()函数,转换为字符串类型才能进行数据拼接,打印出小精灵说的话那么,您需要付给我(你说的数字N51.3)人民币</p><p>8在基础条件2不需要帮助的情况精需会礼貌的说再见。</p> <p>注意,这里不是赋值,所以不能用一个等号。而应该是==,这样才是等于</p> <p>收集的数据要int函数,否则,就会运行else。如下图</p> <p>第三行正确的应该这样</p><p>因为函数收集到的数据是字符串,而if条件中的都是整数,所以这里需要把数字的字符串转化为整数</p> <p>print('好的,我知道了,您需要兑换'+m+'金加隆。'\n'那么,您需要付给我'+str(float(m)*513)+'人民币。') </p><p>注意:这个代码中那么直前的换行前后不需要',因为还在字符串里没有变!</p><p>或者说,在字符串里没有变,所以可以直接换行</p> <p>正确的换行是这样</p>