Python的从0到1(第十八天)-Python的input()函数2

152 阅读4分钟

这是我参与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()函数结果的强制转换