python顺序结构之有输入格式化_跟我一起玩PYTHON编程(上下册)

第3章

Python的控制输入用法

我们之前一直要使用 print(),让 Python 把我们想输出的内容打

印出来,显示内容的位置我们把它叫作控制台。但是,使用 print()输出的内容是我们自己预设好的,相当于我们自己打上去的内容。

3.1 使用控制台输入 input ()

我们现在来学习一下,如何让控制台自动获取我们输入的内容。是不是听着有点拗口,不容易明白?举一个例子就懂了,我们在登录邮箱或游戏时,都需要输入用户名、密码等信息,这时候计算机会提示我们输入信息。只有按照提示把需要的内容输入,计算机才会获取我们输入的内容,如图 3-1 所示。

bcyys160.gif查看原图

图 3-1\ 用户登录示意图

这个过程就叫控制台输入,我们只需要编辑用户输入的内容提示信息,然后等待用户输入信息后,Python 就会自动获取用户输入的信息内容。

要想通过编程完成这个任务,需要使用 input() 语句。input() 语句用于从控制台上获取用户输入的信息。比如,我们希望获取用户的名字,那么可以输入以下代码:

input(),括号内就是显示在控制台上的给用户的提示。用户按照提示输入内容即可,但是这样 Python 是无法运行的。因为用户会按

照你的提示输入信息,我们需要找到一个变量来储存这个信息,所以完整的代码应该是把 input() 获取到的信息赋值给一个变量,就像这样:

这样我们就将用户按照提示输入的信息,放在了一个名字叫 name 的变量里,然后我们输出这个变量即可:

我们运行一下这个程序,结果如图 3-2 所示。

bcyys164.gif查看原图

图 3-2 运行结果

这时候我们发现,input() 里的提示信息显示出来了,我们只需要按照它的提示,来填写信息就可以,我们输入“爱编程”,如图 3-3 所示。

bcyys165.gif查看原图

图 3-3 在 shell 中输入“爱编程”

然后点击 Enter 键,效果如图 3-4 所示。

bcyys166.gif查看原图

图 3-4 打印效果

我们输入的信息被 Python 获取到,并且打印出来了!

这就是 input() 的一个简单用法。我们还可以把这个程序完善一下,变成一个我们常见的登录系统,一般在输入用户名后,会提示我们一句话:“您好,×××,欢迎登录。”我们也可以做出这种效果,这需要用到我们之前学的字符串拼接:

利用 +(加号),把我们要输出的字符串拼接起来就可以了!这里需要我们记住一个重要的内容:使用控制台输入 input() 时,输出内容的数据类型是字符串型!这点很重要,我们后面还

会用到这个知识点!

我们运行一下这个程序,结果如图 3-5 所示。

bcyys168.gif查看原图

图 3-5 运行结果

瞧,当我们输入了用户名后,Python 开始和我们打招呼了!

利用控制台输入 input(),可以做很多有意思的效果,比如输入以下代码:

试一试这个运行结果,如图 3-6 所示。

bcyys170.gif查看原图

图 3-6 运行结果

是不是感觉 Python 更智能了一些呢?

现在,我们来做一个小练习,接下来的学习内容会更精彩的!

3.2 数据类型转换

我们上一节讲的控制台输入 input(),提到了一个重要知识是使用控制台输入 input(),输出内容的数据类型是字符串型。如果我们输出的信息不是字符串类型,该怎么办呢?比如,我们想根据出生年份算出年龄,然后让 Python 输出正确的年龄,该怎么做呢?首先,我们要思考如何通过出生年份算出年龄,你能想到办法吗?对了,就是用我们当前的年份与我们的出生年份相减就可以了!所以我们可以这么来编程:为了更清楚地看懂程序,可以在每条代码后添加一个解释说明的注释,如输入以下代码 :

看上去程序没有什么问题,我们试着运行一下:跳出了控制台输入的提示信息,如图 3-7 所示。

bcyys173.gif查看原图

图 3-7 第一次运行后输出结果

提示我们输入

出生年份,我们输入一个年份,如 2010,敲回车键,结果如图3-8 所示。

bcyys174.gif查看原图

图 3-8 运行结果出现错误

哦?又出现了我们不想见到的一个内容!最下一行是一句报错信息,它告诉我们程序在运行过程中有错误。

这是为什么呢?看来我们程序的某些环节出现了错误,这时候我们要像电影里的侦探一样,仔细地检查我们的程序。来吧,小侦探,跟着我一起仔细分析一下这个程序,找出错误在哪里。

通过分析,我们发现了问题。我们知道,变量 age 是我们想要通过计算得到的一个年龄,它需要的是一个整数型数据。那么想要得到一个整数型,就需要通过整数型算术运算,所以我们需要转换变量 birth 的数据类型,把它从一个字符串变成一个整数。该怎么做呢?想想我们之前学习的数据类型的表格,里面就提到了类型的前缀。

在程序上,我们可以这么做:在需要转换数据类型的变量前,加入要转换成的数据类型字符前缀就可以!例如:

改完的程序,是不是就万无一失了呢?我们可以再运行一次,结果如图3-9 所示。

bcyys178.gif查看原图

图 3-9 运行结果仍然有误

运行结果还是有错误!并且这句错误提示信息很眼熟呀!我们在讲字符串的拼接时,是不是遇到过?还记得是什么意思吗?忘记了就翻到前面去复习一

下吧! 这是提示我们,数据类型错误:字符串只能和字符串进行拼接,不能和 int 整数型数据进行拼接!看来我们最后一行代码有问题,细心的你能够自己发现问题出在哪儿吗?

我们要输出的是由三个字符串利用加号进行拼接,形成一行完整的字符串,但是其中好像混入了“奸细”。对,就是变量 age,因为我们刚才通过转换数据类型,输出的变量 age 是一个整数型。我们之前学习过,整数型数据是不能和字符串进行拼接的!因此,我们需要将 age 转换成字符串:在变量 age 前加入字符串前缀 str,如以下代码:

这次我们再运行一下看看效果,如图 3-10 所示。

bcyys181.gif查看原图

图 3-10 运行结果正确

成功!经过两次更改,我们终于完成了这个小程序,怎么样,你学会了吗?

3.3 格式化字符串

通过上一节的内容,我们知道了 Python 程序中保证数据类型的统一是非常重要的。尤其是进行字符串拼接以及整数、浮点数算术运算时,更要保证数据类型的统一,Python 才能正确运行,避免报错。但是每次都要考虑数据类型,考虑哪里加 str,哪里加 int,非常不方便。尤其是当我们输出的字符串比较长时,更容易漏掉 str,程序读起来也非常烦琐。所以,

本节我们学习一个非常有用的字符串书写方式,叫作格式化字符串。它是利用 f-string 的语法方式,不管输出的数据类型是什么,都会自动转化成字符串格式。我们来看一看是怎么做的吧!比如 , 我们希望 Python 打印出这样一个字符串。

我们知道这样输入一定是错误的,因为其中有整数型数据,是不能直接和字符串拼接的。所以,要按照我们之前学过的方式,应该使用 str 进行数据类型转换,我们修改后是这样子的。

哎呀,这个字符串好长呀,而且还有很多的 str(),万一少敲一个,就会报错了! 现在,我们来试一试格式化字符串吧!

第一种格式化字符串的方式是:f" 字符串 { 其他数据类型 } 字符串 "。它的使用格式是利用 f 和 {}(大括号)来完成的。比如,上面的程序,我们可以把字符串以外的数据类型变量用 {} 括起来,然后在整个字符串前加 f,就可以了。

大括号里的变量会统一变成字符串,不需要我们再人为地增加 str,同时字符串最前面的 f,就是格式化字符串的前缀。这样写出来,是不是又清晰,又简短,方便很多呢?

我们再运行一下,效果如图 3-11 所示。

bcyys186.gif查看原图

图 3-11 运行结果

如果我们想把下面的字符串也用格式

化字符串的方式进行转化,该怎么做呢?

怎么样?你做对了吗?需要强调一点,这种格式化字符串的方法,只适合高于 Python3.6 版本以上使用。比如,我这里使用的是 Python3.7 版本,就可以使用。如果你的 Python 版本低于 3.6,是无法使用这个方法的。那么有没有其他格式化字符串的方式呢?当然!我们来讲第二种方法,跟第一种一样简单方便,同时可以使用在 Python 所有版本里。

第二种格式化字符串的方式是:" 字符串 {} 字符串 ".format( 变量 ),跟第一种相比,第二种格式化字符串不需要在字符串前加 f,大括号内也不需要写入变量名,只需要使用大括号 {} 作为占位符,并在字符串结尾加 .format( 变量名 )。我们用刚才练习中的字符串进行举例:

我们可以把这个字符串写成:

.format( 变量名 ),按照字符串中显示的顺序,小括号内的变量名用逗号(,) 隔开就可以,是不是很方便?

我们再来练习一下:

以上两种格式化字符串的方式都是经常使用的,一定要记住哦!学会了这些方法,以后编程会更加方便简单!

3.3.1 while True 与缩进

如果我们想再运行一次这个程序,就需要重

复运行的过程,让这个程序循环执行,我们就可以多次输入不同的信息了。让程序循环有很多种方法,我们会在后面详细讲解不同的循环语句,现在只需要知道使用 while True 进行无限循环就可以了。现在,我们可以把 while True 加入想要循环的程序中:

我们先输入 while True,并且要注意 while True 后面接一个冒号(:),然后按下回车键(Enter),你会发现会自动换行到下一行代码,并且会自动缩进!然后把我们要循环的代码敲上就可以了。我们也可以人为操作进行缩进,点击键盘空格键,就可以完成语句缩进动作了(不建议通过空格键或者 TAB 制表符键完成缩进,按照顺序完成代码,回车换行最正规)。运行结果如图 3-12 所示。

bcyys192.gif查看原图

图 3-12 循环运行结果

我们可以多次输入年份信息,程序会循环执行下去。

3.3.2 缩进

缩进是 Python 中表示“语句块”的唯一方法,或者叫作显示程序运行级别的唯一标识。比如这个程序,缩进后的三行代码是属于循环内的程序,我们可以把它理解为属于包含在 while True 循环里面的程序,即 while True 循环级别最高,下一级别的语句就需要缩进,同

一级别的语句块缩进必须相同。而冒号(:)可以理解为循环的语句内容,所以是不能少的!空行对 Python 没有影响,但是空格缩进对 Python 是很关键的。

等我们学习条件判断 if…else 语句时,再详细讲解缩进的知识。

我们除了能在整数和字符串之间转换以外,还可以与其他数据类型进行转换。比如,以下代码。

这个结果我们都知道,是整数型 14。如果我们想让结果输出为 14.0,就可以把整数型转换成浮点数型,加 float,代码如下。

这时我们运行的结果,如图 3-13 所示。

bcyys196.gif查看原图

图 3-13 运行结果为浮点数型

3.4 条件语句

大部分编程语言的程序结构,都有 3 种最基本结构:顺序结构,循环结构,分支结构。比如,我们前面学习的控制台输入 input(),用到了 while True,可以让程序循环运行,就是一种循环结构;再往前,我们学的一些基本程序,都是从上向下按照顺序执行,执行到程序结尾就结束了,属于顺序结构。这两种程序结构如图 3-14 所示。

bcyys199.gif查看原图

图 3-14 顺序结构与循环结构流程图

但是,我们生活中常常有很多时候需要我们做出“选择”,比如,每天早晨会在起床和赖床之间做出选择;放学回家后会在吃饭和

写作业之间进行选择。这时候由于选择的条件不同,就会造成两种不同的结果:如果选择起床,就有时间舒舒服服地吃早点,准时上学;如果选择赖床,造成的后果就是迟到。这种情况也可以利用 Python 来完成。但是仅仅依靠顺序结构和循环结构两种结构,是无法解决这种“选择性”问题的。比如,当 Python 面对一个特定条件时,满足条件和不满足条件会执行两种不同的程序,这时就需要引入分支结构,我们也可以把这种结构叫作条件语句,如图 3-15 所示。

bcyys200.gif查看原图

图 3-15 分支结构流程图

比如,我们期末考试的满分为 100 分,如果考到 90 分以上,妈妈会奖励我们一顿大餐;如果考到 90 分以下,就没有奖励。如果用分支结构表示,见图 3-16 所示。

bcyys201.gif查看原图

图 3-16 考试成绩奖励与否分支结构图

这时,就产生了一个条件,同时有两种情况需要进行判断,在代码中我们可以使用 if…else 语句来完成,基本格式如图 3-17 所示。

bcyys202.gif查看原图

图 3-17 if…else 基本格式

这里要注意,if 后面与条件之间要有一个空格,这时 if 属于程序的关键词,会变色,最后要有一个冒号,代表满足条件时,有要执行的程序;下一行满足条件时执行的程序需

要进行缩进,代表运行级别低于 if 的运行级别,是包含在 if 里的语句。else 代表另一种情况,与 if 是同一级别,所以不需要缩进,又因为判断条件是“非此即彼”,即两者选其一的关系,所以 else 后不需要再把条件写出来,可以直接加冒号 :,然后回车完成缩进;下一行语句块是包含在 else 里的,所以必须要缩进。if 和 else 两个执行程序又是同一级别的语句块,所以缩进格数必须一致。我们来看看用 Python 编程如何完成这个程序:这里我们需要使用控制台输入 input() 来输入成绩,同时要在循环结构中使用条件语句,代码如下。

变量 score 本身是字符串格式,无法与整数进行关系运算符判断,所以需要进行数据类型转换,把字符串类型数据转换成整数型数据,然后重新赋值给变量score,我们可以理解为从变量 score 中把字符串类型的数据拿出来,转换成整数型数据,又重新放回到变量 score 里。

运行一下程序,我们可以看到效果,如图 3-18 所示。

bcyys204.gif查看原图

图 3-18 运行结果

这就是一个简单的条件语句,根据条件不同,执行不同的程序。条件语句的关键在于条件是否正确,同时要注意冒号和缩进。

3.5 条件语句的嵌套

if…else 还可以嵌套使用,用于多重条件判断。比如,想要判断一个整数是否能被 2 整除,同时还想判断出这个整数能在被 2 整除的情况下能否同时被 3 整除。如果用流程图来表示这一个程序(流程图真是个理解程序的好工具), 具体如图 3-19 所示。

bcyys207.gif查看原图

图 3-19 判断一个整数是否能被 2 与 3 整除的执行流程

通过流程图可以看出,能被 3 整除这个条件,是包含在第一个被 2 整除的条件里的,所以如果想用条件语句来完成这个程序,我们就需要用到 if…else 的嵌套,同时需要思考一下条件该如何写:能被 2 整除,换一个说法就是一个整数除以 2 没有余数,那么我们可以用算术运算符中求余 % 运算,让这个整数对 2 求余,余数为 0 就可以了。代码如下:

从程序可以清楚看出,第二个条件是嵌套在第一个判断条件之中的,所以嵌套的程序运行级别要低于第一个 if,嵌套的程序要进行再一步缩进。

但是这个程序有一定的缺陷,比如我们输入数字 9,你会发现它输出的结果是 9,不能被 2 整除。其实 9 是可以被 3 整除的,但由于两个条件是嵌套关系,Python 会先判断第一个条件,如果不

满足,就直接跳过第二个条件输出结果。这就是 if…else 嵌套的运行方法,学会了吗?

3.6 多个并列条件判断

与 if…else 嵌套语句相比,还有一种情况就是多个条件判断,但是条件是并列关系,而不是嵌套关系,这时,if…else 语句只能判断一个条件,即“非此即彼” 的关系不再适用,我们就需要引入 if…elif…else 语句来完成任务,elif 是 else if 的简写,流程如图 3-20 所示。

bcyys210.gif查看原图

图 3-20 if…elif…else 语句的流程图

现在,把上节的一个例子做一下修改,我们输入一个整数,来判断一下这个整数是否可以被 2 整除或者被 3 整除。这里“被 2 整除”与“被 3 整除”两个条件是一个并列关系,不再是嵌套关系。代码如下:

这两个条件是并列关系,所以,if…elif…else 三行代码前的缩进是对齐的,代表三行代码运行级别相同。

但是这个程序与之前 if…else 嵌套的程序一样,也有一定的缺陷,运行结果如图 3-21 所示。

bcyys212.gif查看原图

图 3-21 运行结果

当我们分别输入 6、12 这种既可以被 2 整除,又可以被 3 整除的数字时,只显示满足第一个条件的结论,也就是说当满

足第一个条件时,程序执行完就结束了,不再往后判断,这会造成结论不完整。我们希望输入 6,得到的结论是:6 既可以被 2 整除,也可以被 3 整除。这就要求我们需要在原程序中加入 if…else 的嵌套,来完善程序。想一想,应该怎么做?代码如下:

if…elif…elif……else 语句,常用来表示根据条件的多少,elif 可以继续添加,所有条件判断完成后,最后 else 结尾即可,如图 3-22 所示。

bcyys214.gif查看原图

图 3-22 if…elif…elif……else 流程示意图

关于 if 条件语句的内容,我们就学习到这儿,一定要注意两点。第一,条件的选取和逻辑性很重要。

第二,缩进很重要。

只要掌握这两点,相信你很容易学会 if 条件语句,我们来练习一下吧!

总结

1.控制台输入 input(),输出的结果为字符串类型,要注意数据类型的转换。

2.str(其他类型)→字符串类型;int(其他类型)→整型数据。

3.格式化字符串的两种方法:① f" 字符串 {a}";② " 字符串 {}".format(a)。

4.运用条件语句编辑时,注意条件判断、冒号和缩进。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值