这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战
input()
函数结果的赋值
首先,我们可以对变量进行赋值,这样当我们想提取数据时,只要直接打印变量名,就能唤醒程序对数据的记忆。
这个赋值逻辑,在input()
函数中也是行得通的。我们也可以通过赋值,达到随时提取输入结果的目的。但是在逻辑层面,我们需要拐一个弯。
比如,以我们下面这串代码为例:
money = input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:')
虽然看上去像是给input()
函数赋值,但实际上,我们是将input()
函数的执行结果(收集的信息)赋值给变量money。
通俗来讲,我们放进money这个盒子里的东西,不是input()
函数中提的问题,而是我们通过input()
函数收集到的别人的答案。
这样,不管你在终端输入的内容是什么,不管你的回答改变多少次。只要是对input()
函数所提问题的回答,都会被存储在变量中。等待你打印变量时,将回答提取出来,展示在显示屏上。
而这些展示在终端的信息/回答/数据,在代码世界,我们可以称其为输入值——我们输入给函数的内容。
money = input(' 请在以下选项中【100;200;500;1000】中,输入您要充值的金额: ')
print(money)
刚才,我们在终端处输入的信息——充值的金额(每个人输入的内容不同),就是输入值。
同时,为了能随时且方便地提取输入值,我们需要把input()
函数的结果赋给变量money。
当我们铺好了搜集信息的路,并对获取的信息进行了赋值,此时就可以进行最后一步,打印最终结果了。
这里有一个重点,在我们理解代码时,脑中的思维顺序是先搜集信息,再把input()
函数的结果赋给变量。
但是为了书写规范及防止漏掉信息,我们需要按照代码书写格式,优先对input()
函数的结果进行赋值。
我们再用一张图,来直观地总结一下。
掌握了input()函数的综合使用场景,我们再来解决关卡开始时的问题:用户充值时,提示用户将获得120%的金额。
看起来 So easy,咱只需要将搜集到的结果,乘以 1.2 就可以啦~
当然,为了能够实现拼接,我们还需要将乘法的结果强制转换成为字符串,别忘了用str()
哦~
试着运行一下以下代码:
money = input(' 请在以下选项中【100;200;500;1000】中,输入您要充值的金额: ')
print("您将获得" + str(money * 1.2))
但最终运行却报错【TypeError: can't multiply sequence by non-int of type 'float'】
我们明明使用了类型转换,却还是报错,这是为什么呢?在这里,就涉及到了 input()
函数的第三个知识点:
input()
函数的数据类型
现在,我们再来分析一下代码的报错信息,TypeError: can't multiply sequence by non-int of type 'float',翻译结果为类型错误:无法将序列与“float”类型的非int相乘,简单点说就是money*1.2乘法运算两侧不是数字,那么那一侧不是数字呢?很显然左侧不是,那左侧的money是什么类型呢?
答案是【字符串】类型
对于input()函数来说,不管我们输入的回答是什么,不管你输入的是整数1234,还是字符串『什么是快乐星球』,input()函数的输入值(搜集到的回答),永远会被【强制性】地转换为【字符串】类型。(Python3固定规则)
不信?用我们第一关学过的type()函数检验一下?
choice = input('请输入1或2:')
print(type(choice))
是不是呀,我们输入的整数【1】或【2】就会被强制地转换为字符串的【'1'】或【'2'】。
所以,不管我们在终端区域输入什么,input()函数的输入值一定是【字符串】。
就这样,由于我们用赋值运算符【=】把input()函数的字符串结果,赋给了变量money,所以这个变量也一定是字符串类型。
现在,我们确定了变量money的数据类型是字符串。下面,我们就应该解决一下这个问题,怎么解决呢?
为了让用户输入的数据可以参与运算,我们应该将数据转换为整数类型,这时候我们会用到第四个知识点。
input()
函数结果的强制转换