第3章 这是什么?变量
##3.1 神奇的变量
程序是按既定算法、用某种计算机语言所规定的指令和语言编写的一系列指令或语言集合。算法和程序都应有以下特征:
(1)有0个或多个输入。
(2)有0个或多个输出。
Python作为一种计算机语言,用Python编写的程序也具有程序的基本特征。
如果程序没有输入和输出,就和我们没有互动,这样的程序一点都不好玩。我们玩的游戏都是有输入和输出的,这样可以互动的程序更加有趣。
我们来看一个有输入和输出的程序:猜年龄。
程序运行:
如果输入的年龄是4,就会得到这样的结果。
如果输入的年龄是27,就会得到这样的结果。
猜年龄程序有输入,也有输出,我们将猜测的年龄输入计算机,计算机通过判断,反馈我们猜的对与错。
如果程序有输入,就需要计算机内存中空出一块地方来存放输入的值。比如猜年龄游戏中输入的数字:27,存放之后,我们给它挂上age的标签,下次用的时候,直接找到age,拿出数字,就可以使用输入的值了。
说不定,小朋友会说果果老师写错了呢。
第一个等号的意思是赋值给age,也就是说让age的值等于你输入的年龄。
第二个等号的意思是比较age和27,看看它们是否相等。
在前面的代码后面加上:
print(age)会出现结果27,就是刚刚输入的年龄。
print(age =="27")会出现结果True(真),表示age和27进行比较,它们是相等的。
其中,age是变量,变量就是可变化的值。我们再玩一个游戏—取名字。
程序运行结果为:
在计算机内存中,“狗狗”和“猫咪”已经存在了。然后告诉Python“狗狗”的名字叫作lili,“猫咪”的名字叫作lucy。
后面觉得lili的名字更适合“猫咪”,就给猫咪取了lili这个名字,给“狗狗”取了mili这个名字,然后告诉Python。
这样“狗狗”和“猫咪”的名字都发生了改变。
因为把“猫咪”的名字改成了lili,所以lili只能对应“猫咪”。
但是lucy并没有变成其他动物的名字,所以lucy是“猫咪”的另一个名字。编写一段代码看看lucy是谁的名字。
(1)lili="狗狗"
程序中第一句,首先计算机在内存中分配一块空间用于创建字符串对象“狗狗”,然后给对象“狗狗”贴上lili的标签。
(2)lucy="猫咪"
程序中第二句,计算机在内存中分配一块空间用于创建字符串对象“猫咪”,然后给对象“猫咪”贴上lucy的标签。
(3)print("lili是" + lili + "的名字。")
程序中第三句,使用变量lili拿到内存空间中存储的值“狗狗”,并调用print方法将内容输出到屏幕上。
得到的运行结果是:lili是狗狗的名字。
(4)print("lucy是" + lucy + "的名字。")
程序中第四句,使用变量lucy拿到内存空间中存储的值“猫咪”,并调用print方法将内容输出到屏幕上。
得到的运行结果是:lucy是猫咪的名字。
(5)lili= "猫咪"
程序中第五句,把lili标签从“狗狗”身上撕下来,给对象“猫咪”贴上。
(6)mili= "狗狗"
程序中第六句,给对象“狗狗”贴上mili的标签。
(7)print("lili是" + lili + "的名字。")
程序中第七句,使用变量lili拿到内存空间中存储的值“猫咪”,并调用print方法将内容输出到屏幕上。
得到的运行结果是:lili是猫咪的名字。
(8)print("mili是" + mili + “的名字。")
程序中第八句,使用变量mili拿到内存空间中存储的值“狗狗”,并调用print方法将内容输出到屏幕上。
得到的运行结果是:mili是狗狗的名字。
一定要在前面代码的基础上添加下面的代码进行比较哟!
3.2 数字的奥秘
数字数据类型主要用来存储数字。在计算机编程中经常会用到数字,例如实验数据的计算、游戏中的得分、网上购物的支付等。Python支持4种不同的数字类型:int(整数)、long(长整型)、float(浮点型)、complex(复数)。本节主要介绍int和float。
3.2.1 数字运算符
在第1章,我们已经知道Python可以做计算题,经常使用到运算符。
“+”运算符用来进行加法运算。例如,用Python计算9+8。
“-”运算符用来进行减法运算。我们出一个难度大一点的计算题:988888-564656 ,Python能帮我们计算出来吗?
“”运算符用来进行乘法运算。例如,用Python计算8965的值。
不过程序的乘法运算符长成这样*。
“/”运算符用来进行除法运算。例如,用Python计算988/34的值。
程序的除法运算符长成这样/。
3.2.2 运算顺序
学习了基本的数字运算符,接下来使用它们进行运算。
3+1*9等于多少呢?
有的小朋友会说:3+ 1*9= 36
有的小朋友会说:3+ 1*9= 12
哪个才正确呢?果果老师用Python来给你们解答一下:
因为两级运算时,先乘除,后加减。其中,加法和减法为第一级运算,乘法和除法为第二级运算。所以我们先进行乘法运算,1*9=9,再进行加法运算,9+3=12。看来要学习编程,数学方面也要下功夫。
再来计算一个更加复杂的题目(12+2) * 3 /2 + 4。这个计算式太复杂了,我计算不出来了。让Python来教教我们。
这次的算式是有括号的,先计算括号中的12+2=14,再计算括号外的143/2+4。括号外的先计算乘除,所以按顺序先计算乘法143=42,再计算除法42/2=21,最后计算加法21+4=25。
小朋友们,学会了吗?我们再挑战一个更加复杂的题目,如果这个都能计算出来,你们就很厉害了。题目是(((4+5)2)/3) +102,看着很难。别怕,让Python来帮我们解决它。
这次的算式是括号中还套着括号,我们先计算最里层括号的4+5=9,这时算式变成了((92)/3) +102;接下来计算外面一层括号的92=18,算式成了(18/3) +102;再往外一层计算,18/3=6,算式成了6+102;这个时候就很简单了,先算102=20,算式变成了6+20=26。
3.2.3 给数字取一个洋气的英文名
在猜年龄游戏中,我们用age接收输入的数字27,计算机在内存中创建了数字对象27(当时使用的是字符串“27”,我们暂时理解为数字),然后挂上了标签age。这样我们就为数字对象创建了变量age,就像给数字取了一个洋气的英文名字一样。
这个简单的运算也可以用变量来表示。我们为1创建一个变量first,为4创建一个变量second,然后进行计算,把两个变量加起来,代码如下:
我们要计算1.2*5等于多少,用变量怎么表示呢?首先为浮点数1.2创建一个变量a,然后为整数5创建一个变量b,再进行相应的计算。
为了巩固学习,我们再来计算3/2,看看结果是多少。
##3.3 字符串是什么东西
接下来,我们为字符串创建变量,其实和数字是一样的。
这就创建了一个字符串对象,并赋值给了str。后面如果需要使用"Hello World!",我们通过操作str就可以。例如,我们要输出"Hello World!"到屏幕上,通过操作str即可。代码如下:
Python也可以用单引号标识字符串,例如:
依然可以看到,屏幕上打印出了Hello World!。
字符串变量的作用
通过字符串变量,我们可以对字符串对象进行操作。
1. 拼接字符串变量
我们在屏幕上输入名字,让Python记住。
我们可以将两个字符串变量相加,变成一个新的字符串。
输入名字:果果,程序运行结果为:
在上述程序中,我们将字符串变量name和字符串变量str相加,成为一个新的字符串new。我们将这个操作称为字符串的拼接操作。如果将数字变量和字符串变量相加,会发生什么呢?我们来实践一下。
定义两个变量,var_1为字符串变量,var_2为数字变量,将var_1和var_2进行加法操作。
程序运行出错了,错误提示:只能拼接两个字符串变量,所以字符串变量和数字变量是不能进行拼接操作的。
2. 字符串变量的截取
我们能获取字符串变量中的一个字符。
在上述程序中,我们先创建了一个字符串对象“i love my family!”,给字符串贴上了var的标签,我们获取了字符串对象的第2位var[2]。
给字符串对象的第2位贴上了var_1标签并且打印在屏幕上。如果我们要取字符串对象中的love,要怎么写呢?
在上述程序中,我们通过var[2:6]截取了字符串对象中的love。
3. 大小写快速互换
我们可以改变字符串变量的大小写。
程序运行结果显示,"HAVE A GOOD DAY!"成功转换为了小写:
在上述程序中,我们将"HAVE A GOOD DAY!"转换为小写:have a good day!,这是通过lower ( )函数来完成的。
程序运行结果为:
在上述程序中,我们将"happy birthday to you!"转换为大写:HAPPY BIRTHDAY TO YOU!,这是通过upper ()函数来完成的。
4.在字符串中插入变量
我们可以在字符串中的某一个位置插入变量。
接下来,我们用这个方法来欢迎新同学。
程序运行结果为:
在上述程序中,大家可以看到我们使用了两个百分号%就将“米粒”插入了“欢迎同学来到果果老师的编程课程!”这句话中。
首先第一个%s告诉Python要在哪个位置插入字符串,第二个%告诉Python要插入的字符串是哪个,Python知道了之后,就会帮助我们在字符串中插入变量。
程序运行结果为:
%s表示插入的变量是字符串变量,我们也可以插入数字变量,将s改成d就可以了。
程序运行结果为:
上述程序中,我们通过%d在字符串中插入了整数。
age = int(input("请输入你的年龄:"))这句代码接收输入的值,并把输入的值转化为整数。
##3.4 变量的可变性
变量是可变的,我们在前面已经介绍过了,那么变量有多可变呢?我们来玩几个游戏就明白了。
第一个游戏:我们的老师。我的老师叫大果老师,你的老师也叫大果老师,我们的老师都是大果老师。计算机先创建了“大果老师”字符串对象,然后给字符串对象贴上了myTeacher标签,将变量myTeacher赋值给yourTeacher,字符串对象贴上了yourTeacher标签。所以,两个变量可以指向同一个对象。
程序运行结果为:
第二个游戏:大变身。
程序运行结果为:
在上述程序中,我们首先创建了mili字符串对象,然后给字符串对象贴上了var标签,这时输出var变量的值为mili;接下来,我们创建了一个数字对象7,把var标签从字符串对象上拿下来,贴到了数字对象上,这时输出var变量的值为7。
##3.5 变量取名字很讲究
前面例子中的变量名大家注意到了吗?基本上都是以字母开头的,大家知道为什么吗?原来Python变量的命名需要遵循一定的规则,变量的命名规则有很多,下面我们介绍常用的规则。
变量可以取你喜欢的任何名字。不过最好记住一点,变量的名字由字母、数字或者下画线“_”组成,不能使用空格、连字符、标点符号、引号或其他字符。例如var$就是不合法的,Python会帮我们指出来。
Python提示我们invalid syntax,意思是无效的语法。
变量名的第一个字符是有限制的,第一个字符只能是字母或者下画线,如果是字母,那么最好以小写字母开头。第一个字符不可以是数字。例如,2h这样的变量名是不合法的,b2、a_1、_1a都是合法的变量名。
Python变量名是区分大小写的。也就是说,bc和Bc是两个不同的变量名。在程序中,我们定义了bc变量,要输出bc变量,但是我们把bc变量写成了Bc,这个时候Python就不认识了,因为我们定义的变量是bc,而不是Bc。
虽然变量名的长度没有限制,但是不建议太长。如果是这样的:sdklfksdjlfjsdalkjfjksdaklfjkasdfkaskdlfjkas,就会很容易出错。
变量名最好取一眼就能明白的,比如年龄:age,姓名:name。
##3.6 变量学习小结
- 学习变量:变量是一个可变化的值,在Python中是一个标签。
- 基本数据类型——数字以及数字的+、-、×、÷运算。
- 基本数据类型——字符串以及字符串的拼接、截取、大小写等操作。
- 变量的可变性。
- 变量的命名规则。
##3.7 趣味小挑战
- 创建一个合法的变量,打印出你最喜欢的一句格言。
- 进行数字运算并得出答案:((2+5)*4+2)/3-2。
- 截取字符串“Believe in yourself”中的Believe,并打印到屏幕上。
- 在字符串“我们要保护地球”中的地球前面插入你喜欢的修饰语。