变量和类型

我们通过一个实际的案例来学习编程里很重要的变量的概念,案例的名字叫狗龄计算器,具体功能为:输入一只狗的实际年龄,这个计算器会告诉你对应的人类年龄,也就是相当于人的多少岁。要完成这个计算,只需要把狗的年龄乘以7。就这么简单,开始吧! 我们把这个实际的项目案例分成了几个步骤来完成,这也是编程的基本思路:把大的任务拆解成一个个小的任务,然后分别来编程解决这些小任务,最终我们就完成了大的任务。对于狗龄计算器来说,我们拆分成如下几个任务:

  1. 向用户询问狗狗的名字;
  2. 向用户询问狗狗的年龄;
  3. 将狗狗的年龄乘以7得到相对应的人类年龄;
  4. 把结果友好的输出给用户:你的狗狗xx对应到人类年龄xx岁了; 接下来我们依次来实现每一个小任务,并讲解对应的知识点。

向用户询问狗狗的名字

为了实现这个任务,我们需要提示用户提供狗狗的名字,然后记住这个名字,以便在第4步中使用。为此我们要学习两个知识点:

  1. 如何把我们通过键盘输入的内容传递给python;
  2. 如何让python把我们输入的内容保存起来;

input函数如何工作

在python中有一个向用户请求输入的功能,叫input函数。(函数的具体定义在后面的章节中会讲解,可以简单地把它想成是调用了python提供的一个功能)。下面来看具体用法:

input("请问你的狗狗叫什么名字?")`

其中,input为函数的名字,代表输入的意思;调用input函数(或者说使用input功能)需要在后面跟上一对括号;括号里面的是提示用户的文字,需要放在两个引号之间。 括号和引号一定要注意使用英文模式的输入法输入,python代码中最常见的错误就是把括号引号等写成了中文,你可以实际输入一下中英文的括号和逗号,感受他们的区别 如果运行这段程序的话,python就会提示用户去输入一些内容,按下回车键意味着输入结束。那输入的名字去哪里了呢?这就引出了我们的第二个知识点。

使用变量保存值

变量是每种编程语言必不可少的功能,它的主要功能就是帮助我们存储一些内容以便后面使用,它的主要用法如下:

dog_name = "大宝"`

其中,左边的dog_name是变量的名字,中间的等号在编程中被称作赋值符号,右边的“大宝”是具体的内容。这一行代码的意思就是把变量dog_name赋值为大宝,也可以说把大宝这个名字存储到dog_name这个变量中。 关于变量的名字:名字可以随意起,但是有一些基本的规则:必须是连在一起的,不能有特殊符号,不能数字开头,我们这里通过下划线把两个单词组合在一起作为我们变量的名字,当然也可以是dogname,dogName等形式

将用户的输入赋值给一个变量

接下来我们将上面的两个知识点组合起来:首先让用户输入一个狗狗名字,然后把名字存到一个变量中。代码如下:

dog_name = input("请问你的狗狗叫什么名字?")`

这样我们就完成第一个小任务了,接下来进入第二个小任务。

向用户询问狗狗的年龄

学会了向用户询问狗狗的名字之后,怎么实现向用户询问狗狗的年龄是不是就比较简单了呢?代码如下:

dog_age = input("请问你的狗狗几岁啦?")`

现在我们已经得到狗狗的名字和年龄了,以后怎么使用它们呢,这就要用到print函数了。

print函数

print函数,也就是打印输出功能可以说是python编程中最常用的功能了,通过他我们可以把变量中的内容输出显示出来。代码如下:

print(dog_name)
print(dog_age)

python文件

现在我们的代码已经有好几行了,在IDLE的交互模式下只能一行一行的运行,怎么把它们组合在一起编程一个真正的程序呢,我们在IDLE中新建文件就可以了,当然你也可以选择在VSCode中新建文件。

变量之所以叫变量

变量之所以被叫做变量是因为变量中存储的内容是可以变化的,例如如下代码:

a = 1
a = 2

我们首先新建了一个变量a,然后把a赋值为了1,这时候变量a里面存的内容是1;接下来我们又把a赋值为了2,这时候变量a里面存的内容就变成了2,我们也可以说变量a被改变了。

运算符与表达式

改变变量的方法不只是直接把内容写在等号右边,我们也可以使用一些比较复杂的表达式,表达式跟数学表达式很像,由+,-,*,/等运算符组成。比如:

a = 1 + 1

在这个例子里面,python会首先计算等号右边的表达式:1+1,然后把计算结果2赋值给等号左边的变量a,相当于如下代码:

a = 2

也支持小数、乘法,如下:

b = 10*3.14159

也支持小括号

n = (98+97+58)/3

也支持在表达式中使用变量

a = 98
b = 97
c = 58
n = (a+b+c)/3

操作符之间的优先级也是支持的

n = 3 + 4 * 5

答案是35 还是 23 ? 常用操作符优先级从高到低排序如下:

操作符说明
**两个星号表示求指数,2**3就是2的3次方
* / %%是取模操作符,取模可以求出除法的余数,例如7%3为1
+ -
另外,表达式不仅限于数学运算,两个字符用加号操作的话就是连接的效果
a = 'Hello"
b = "大宝"
n = a + " " + b  # 右边表达式计算的结果为"Hello 大宝"并且赋值给n

掌握变量的知识之后,我们回到案例项目,继续我们的第三个小任务。

计算狗狗的年龄

在这一步中我们只需要把狗狗的年龄乘以7就可以得到对应的人类年龄,看起来很简单,代码如下:

dog_age = 12
human_age = dog_age*7
print(human_age)

运行程序会发现我们得到了84,很简单的就完成了任务。但是别忘了我们是需要让用户输入狗狗姓名和年龄的,因此完整的代码如下:

dog_name = input("请问你的狗狗叫什么名字? ")
dog_age = input("请问你的狗狗几岁了? ")
human_age = dog_age * 7
print(human_age)

运行程序时输入年龄12,会发现我们得到的结果居然是12121212121212,这显然是不对的! 问题出在哪里呢?你可以在IDLE中试试如下代码:

仔细观察会发现,将数字用引号括起来之后的乘法跟没有引号是完全不同的,这里有一个新的概念:字符串,用引号括起来的的内容我们称之为字符串,跟数字是不同的数据类型,关于数据类型,我们马上讲解。 回到我们的问题上,我们会发现input函数其实返回的是一个字符串,而我们需要的是一个数字,带着这个问题进入数据类型的章节。

数据类型

python中每一个数据都有一个类型,不同的类型有不同特性,比如在上面的乘法中,不同类型的数据用同样的乘法操作符进行计算的结果是大不一样的。 目前我们接触了两种数据类型:字符串和数字。 字符串类型可以简单地通过引号来识别,它代表的是字符/字母/文字的概念,例如:

a = 'Hello'
b = "你好"
c = '3'

字符串用单引号或者双引号都可以,只要前后保持一致就可以 数字类型就是我们通常数学意义上的数字,它可以进一步分为整数类型和浮点数类型(也就是小数类型);     整数,也称int,没有小数点;     浮点数,也称float,有小数点,支持科学计数法;

a = 3
b = -3
c = 3.14
d = 3.0

python还有其他类型,如布尔型、列表、字典和对象,后面用到的时候我们再逐步讲解。

代码修正

回到我们的问题,我们希望使用input函数输入数字时它就给我返回数字,但实际上它返回的是一个字符串。这时候我们就需要用到python提供的类型转换的功能,尝试如下代码:

a = '32'
a = int(a)
print(a)

在这段代码中,变量a首先被赋值为字符串'32',然后我们使用int函数,把字符串'32'转换成了一个整数32并赋值给变量a,所以最终输出的是一个数字32,你可以试着输出a*2试试,看看结果到底是3232还是64. 并且int不止可以把字符串转换为数字,还可以把小数转换为整数,试试int(3.14)吧 理解了这部分内容后,我们就可以把狗龄计算器中的问题修复了,完整代码为:

dog_name = input("请问你的狗狗叫什么名字? ")
dog_age = input("请问你的狗狗几岁了? ")
human_age = int(dog_age) * 7  #增加int函数,将字符串转换为数字再进行乘法
print(human_age)

完成这部分内容后,我们就进入了最后一步!

对用户友好的输出

当我们计算出来狗狗对应到人类的年龄之后,我们就需要把狗狗的名字跟年龄组合在一起输出了,为此我们首先复习一下print函数,在之前的例子中我们用了很多次print,但是都是输出一个内容:

print("Hello")
print(32)

那怎么样才能输出很多内容呢?有两种方法:

  1. 利用之前学到的加号连接符,可以把多个字符串连接在一起,比如:
print("Hello" + "World")
a = "Hello"
b = "World"
print(a + b)

这里要注意的是加号连接符只能连接两个字符串,如果是一个数字一个字符串是没办法连接的,会报错,比如:

print("Hello" + 32)
  1. 第二种方法是利用print函数的进阶功能:通过逗号隔开的方法可以给print函数传递多个内容,print函数会把他们用空格连在一起后输出,例如:
print("Hello" , 32 , "World")

最终狗龄计算器的完整代码为:

dog_name = input("请问你的狗狗叫什么名字? ")
dog_age = input("请问你的狗狗几岁了? ")
human_age = int(dog_age) * 7  #增加int函数,将字符串转换为数字再进行乘法
print("你的狗狗",dog_name,"对应到人类年龄是",human_age,"岁")

思维训练

在结束这一章之前,我们进行两个小的思维训练,考验一下你对变量的理解程度:

  1. 变量交换: 这时候我们得到的结果为:32 18,通过什么样的方法才能在运行print(a,b)的时候得到18 32这样的结果?
    a = 32
    b = 18
    print(a,b)
  1. 变量定义
    a = "Hello"
    a = Hello

当我去掉Hello外面的引号时会怎么样?

Last Updated:
Contributors: aibokalv