input()函数

在今天的课程里,我们将继续了解中国的“新四大发明”——共享经济,在分享的快乐中,开启与计算机实现“双向沟通”的新篇章。

下面,我们一起来体验一下共享服务吧。请点击下方代码块左方的【运行】按钮,在右方【终端】区域,先【输入】你的所选的数字,再按回车键。

import timeprint('欢迎进入共享汽车服务中心,机器人1001号为您服务:')time.sleep(1)print('接下来请您仔细阅读共享汽车租赁服务条件,并按提示回复')
time.sleep(2)
print('1.已满18周岁,并持有中国大陆合法有效身份证件')
time.sleep(1)print('2.持有非临时的机动车驾驶证')time.sleep(1)print('3.手机号使用本人身份信息实名登记')time.sleep(1)print('请您确认是否满足上述条件,1.满足 2.不满足')time.sleep(2)choice=input('请输入您选择的数字:')if choice =='1':print('恭喜您满足租赁条件,可以进入下一步')else:print('很抱歉,您不满足租赁条件,暂时无法租赁共享汽车')
复制代码

看到没,这就是你利用input()函数,与计算机进行的第一次互动式沟通。

想实现真正的人机互动沟通的关键,就是:有来有往。比如,客服问你是否同意进入下一步,需要给程序输入一个提问命令:您是否同意进入下一步?

程序得令后,立马把客服的提问一字不改地显示在你的计算机屏幕上,问:您是否同意进入下一步?

那么,这个人类用键盘向电脑提供指令,再通过电脑把问题显示在显示器上,等人回答的过程,就是通过input()函数实现的。

那么,input()函数的具体用法、背后的逻辑究竟是什么呢?这关,会从四个角度逐个击破input()函数。

input()函数的使用

首先,让我们通过一段代码,来看一看input()函数是如何使用的:

input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:')
复制代码

input()函数是输入函数。就上面例子来讲,它需要你输入针对括号内'请在以下选项【100;200;500;1000】中,输入您想充值的金额:'的答案。

所以,当你在函数的括号内写出问题时,input()函数会将此问题原样显示在屏幕上,并在终端区域等待你针对此问题的回答。

可是,我们为什么要在终端处输入回答呢?不输入行不行?

事实上,我们可以把input()函数当作一扇链接现实世界与代码世界的门。

当问题从代码世界传递给我们,可我们却没有回答时,这扇等待输入的input()大门,就会一直处于敞开状态,一直等着你往里送回答。

而当我们输入信息后,这扇input()大门便会关上,继续执行下面的命令。

下面,我们来总结一下input()函数的使用方法:

下面,我们来亲自感受一下input()函数的魔法:1.请将代码串input('请在以下选项【100;200;500;1000】中,输入您想充值的金额::')写在下面代码框中;2.点击运行后,在右侧终端处输入自己的选择;3.输入答案后要按回车键(如显示运行通过,就请继续课程)。

input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:')
复制代码

怎么样?输入答案按回车键后,是不是除了自己输入的信息,其他什么都没有?但是程序又没有报错,这是为什么呢?

我们反复强调代码是一行行往下执行命令的,所以即使input()函数通过了,门关上了,由于input()函数下没有其他命令,自然就不会有结果产生。

但是,我们输入的回答并没有丢失,它被计算机储存在了程序中。

那么,如果我想要从程序海洋中找到刚刚输入的回答,利用它产生一个结果,比如提示用户将获得120%的金额要怎么办?

请在以下选项中【100;200;500;1000】中,输入您要充值的金额:200# 提出的问题您将获得240元!!!# 显示的结果
复制代码

咱先别急着码代码,按老规矩我们先梳理一下思维逻辑。首先,为了计算您将获取的金额,它们得知道您选择充值多少,所以首先得获取您选择的充值金额。

那么,我们思维的第一步,就是使用input()函数搜集信息:

input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:')# 运用input函数搜集信息
复制代码

然而,当我想将搜集到的数据和【'200'】通过计算得到240,并打印出结果时,问题来了。虽然我用input()函数搜集到了一个信息,可我如何从程序海洋中调出这个信息,进行数据处理呢?

这就涉及到了input()函数的第二个知识点——函数结果的赋值。

接下来讲解input函数的赋值~

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()函数结果的强制转换

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()函数结果的强制转换

可是刚不是告诉我,input()函数搜集到的信息固定是字符串嘛?还能变整数呢?

没错,input()函数的输入值在某些情况下,是可以变为整数的。

有了int()函数,我们就可以从input()函数的源头,将输入的内容转换为整数

money=int(input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:'))# 将输入值强制转换为整数,并赋值给变量money
复制代码

但是,这串代码看起来像是把input()函数整个强制转换了。

可实际上,我们是将input()函数取得的结果,进行强制转换,并将强制转换的结果赋值存在名为money的变量盒里。

这样,money就可以参与乘法运算了。

下面,请你接下我的接力棒。补齐下面的代码:用户输入金额,打印结果是金额*1.2。

money=int(input('请在以下选项中【100;200;500;1000】中,输入您要充值的金额:'))# 将输入值强制转换为整数,并赋值给变量money
复制代码

那么,除了上述计算的场景,我们什么时候还会用到,input()函数结果的强制转换呢?

思路很简单,当你想要的答案是数字时,比如年龄:

age = int(input('请输入您的年龄'))#将输入的岁数(字符串),强制转换为整数if age > 18:#当年龄(整数)大于18(整数)时print('安全驾驶哦~')#打印else条件下的结果else:#当年龄(整数)小于18(整数)时print('先别上路啦,试试共享单车~')#打印else条件下的结果
复制代码

再比如需要输入的信息是时间,或者工资等数字时:

money = int(input('你一个月工资多少钱?'))#将输入的工资数(字符串),强制转换为整数if money >= 10000:#当工资数(整数)大于等于10000(整数)时print('土豪我们做朋友吧!')#打印if条件下的结果else:#当工资数(整数)小于10000(整数)时print('我负责赚钱养家,你负责貌美如花~')#打印else条件下
复制代码

下面,将上方月工资的代码,添加另一条件:【当工资大于5000,小于10000时】。打印结果:【我们都是搬砖族。。。】,并将添加条件后的整段代码写在下方区域。【要点提示:三个条件并存时,请使用if…elif…else…语句】

money = int(input('你一个月工资多少钱?'))#将输入的工资数(字符串),强制转换为整数
if money >= 10000:
#当工资数(整数)大于等于10000(整数)时print('土豪我们做朋友吧!')
#打印if条件下的结果elif 5000 < money < 10000:#当工资数(整数)大于5000(整数)小于10000(整数)时print('我们都是搬砖族。。。')#打印elif条件下的结果else:#当工资数(整数)小于等于5000(整数)时print('我负责赚钱养家,你负责貌美如花~')#打印else条件下的结果
复制代码

最后,我们再来归纳一下input()函数数据类型强制转换的知识点:

那么,本关卡的重点,input()函数的所有知识点我们就介绍完了。最后,我们再来整理一下input()函数的重点内容。

input()函数知识点总结

Python的零基础超详细讲解(第十天)-Python的input()函数相关推荐

  1. Python的零基础超详细讲解(第十二天)-Python函数及使用

    基础篇往期文章: Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博 ...

  2. Python的零基础超详细讲解(第六天)-Python的数字类

    数字(Number) Python 数字数据类型用于存储数值. 数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间. 以下实例在变量赋值时 Number 对象将被创建: v ...

  3. Python的零基础超详细讲解(第十三天)-Python的类与对象

    基础篇往期文章如下: Python的零基础超详细讲解(第一天)-Python简介以及下载 Python的零基础超详细讲解(第二天)-Python的基础语法1 Python的零基础超详细讲解(第三天)- ...

  4. Python的零基础超详细讲解(第七天)-Python的数据的应用

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  5. Python的零基础超详细讲解(第五天)-Python的运算符

    往期文章 Python的零基础超详细讲解(第一天)-Python简介以及下载_编程简单学的博客-CSDN博客 Python的零基础超详细讲解(第二天)-Python的基础语法1_编程简单学的博客-CS ...

  6. Python的零基础超详细讲解(第三天)-Python的基础语法

    多行语句 Python 通常是一行写完一条语句,但如果语句很长,我们可以使用反斜杠 \ 来实现多行语句,例如: duohang = item_one + \item_two + \item_three ...

  7. Python的零基础超详细讲解(第二天)-Python的基础语法1

    Python 基础语法 打开python的编辑器 这里注意的是,之前下载的python在电脑主页上没有快捷方式,需要在win开始界面中打开 最终打开效果是一个白色的跟终端类似的编辑器,我们输入的时候是 ...

  8. Python的零基础超详细讲解(第一天)-Python简介以及下载

    接下来我会将python基础部分出一个合集分享给大家记得关注我不迷路哦~ Python简介 Python 是一个高层次的结合了解释性.编译性.互动性和面向对象的脚本语言. Python 的设计具有很强 ...

  9. Python的零基础超详细讲解(第八天)-Python的条件判断

    我们在使用无线耳机听音乐的时候,我们可以设置轻点两下耳机就播放下一首.如果我只设置轻点两下耳机,就播放下一首,那么,由于缺少正在使用耳机(耳机塞进耳朵视为正在使用)的前提条件,无论你是否正在使用,只要 ...

最新文章

  1. ODS(Operational Data Store)定义
  2. Python+OpenCV图像处理之模糊操作
  3. CString类简介
  4. 移动web图片加载完获取img宽高
  5. jsp js弹出网页对话框
  6. JQ实现音乐插件并自动播放
  7. darknet测试voc数据集精度
  8. 孩子们的世界很大,很大...(评刘海强日记)
  9. 什么是SOL注入攻击?Land攻击?Ping of Death攻击?Teardrop攻击?
  10. 如何使用netstat命令验证DDOS入侵?
  11. Matlab点云处理及可视化第1期—基于KD树的邻域点搜索(柱状邻域、球状邻域及KNN)
  12. opencv录制视频 python_Python-OpenCV录制H264编码的MP4视频
  13. 如何删除打开方式列表中的侯选
  14. QVGA/HVGA/WVGA/FWVGA分辨率屏含义及大小
  15. 最全的DevOps工具集合,再也不怕选型了!
  16. Jdk(1.8)下载和安装
  17. HashMap扩容为什么为2的次方幂
  18. 图像处理:显著性区域检测总结(一)
  19. 诺基亚 2060java_不到500元的神机,诺基亚2060全五色真机图赏 - IT之家
  20. 我仅代表还是我谨代表

热门文章

  1. RandomForest:随机森林预测生物标记biomarker——回归
  2. Error in setwd(***) : cannot change working directory
  3. python使用matplotlib中的errorbar函数可视化误差条、并自定义数据点标记、数据点大小、数据点颜色、数据点边缘颜色、误差棒颜色、误差棒线条宽度、误差棒边界线长度、误差棒边界线厚度等
  4. pandas使用read_csv函数读取文件时指定数据列的数据类型、pandas使用read_csv函数读取文件时通过keep_default_na参数设置缺失值替换为空字符串
  5. R语言ggplot2可视化线图(line plot):当数据有中断、缺失时R不会将数据绘制为连续的线图、而是出现断点
  6. R语言基于多字段(多数据列、multiple columns)对dataframe的行数据进行排序(Ordering rows)实战:使用R原生方法、data.table、dplyr等方案
  7. R语言威布尔分布函数F Distribution(dweibull, pweibull, qweibull rweibull )实战
  8. 本地xshell损坏了着急拷贝服务器上的大文件怎么办?有办法lrzsz来帮忙
  9. R语言基础知识详解及概括
  10. plotly基于dataframe数据绘制股票蜡烛图(Candlestick)