变量与计算器
简单计算器
下面来做一个简单计算器,完成普通计算器功能。
打开IDlE,输入以下脚本进行计算。
>>> 3+4
7
>>> 6-(8*2)
-10
>>> (5*2+34)*(4+5)
396
>>>
每一行都是一个Python语句,如果可能的话,它们会被自动求值。只要算式表述正确,不用担心运算符优先级问题,Python就会自动处理好的。
变量与常量
上述简单的运算功能不是这个计算器的全部,接着来扩充一下:
>>> x=12
>>> (x+1)*(x+2)
182
>>>
上面程序中x是一个变量。
那么什么是变量呢?“变量”来自一个拉丁文字,“变”意思是“可以改变”,程序设计中的变量来源于数学。
在初等数学中,变量是表示数字的字母字符,具有任意性和未知性。可把变量当作是显式数字一样,对其进行代数计算,可以在单个计算中解决很多问题,例如:函数y
= f(x)涉及两个变量y和x,分别表示函数的值和参数。 术语“变量”来源于当参数(也称为“函数的变量”)变化时,值相应变化。而在高等数学中,变量是表示数学对象的符号,可以是数字,向量,矩阵,甚至是函数。
类似地,在计算机科学中,变量是表示计算机存储器中表示的值的名称(通常是字母字符或与字母与数字的组合),变量涉及了2个概念:变量名和变量值 ,变量名是变量的一个代号,通过这个代号可以找到变量,而变量值是变量名对应的值。
可以这么形象地理解变量:一台中巴公交车内有很多座位,每个座位都可以视为车内的一个变量,按从左到右,从前到后的顺序给座位编上号,比如1号座位、2号座位等等 ,多少号座位视为变量名,随着客人上车下车,座位里会坐不同的乘客,这些乘客就是变量值。
具体来说,在程序设计中,变量(Variable)是指一个包含部分已知或未知数值或信息(即变量值)之存储地址,以及相对应之符号识别字(即变量名)。通常使用变量名称引用存储值,将名称和内容分开可让被使用的名称独立于所表示的精确值。
Python变量名称能在运行期间绑定一个值,且该变量的值可能在程序运行期间改变。
上述程序代码中,x作为一个变量,可能随时改变,它可以像12、1、2这样的不变的数一样参与运算,参与运算的值以当时运算时的绑定的值为准,上述程序代码中,x绑定了值为12。
与变量对应的是常量。常量的值固定不变,在计算机程序运行时,不会被程序修改。上述程序中12、1、2属于常量。
数据类型
Python3 中有六个标准的数据类型,如下所示。
可变否一栏,不是指变量值能不能修改,而是指存储变量值的内存地址会不会变化,简单来说,可变表示当变量重新赋值后,Python3解释器还是使用其原来的内存空间,而不可变表示,一旦变量重新赋值后,Python3解释器就会重新分配一个新的内存空间存放新的值或者使用该值已经有的内存地址,不会使用变量赋值前指向的值的内存地址,该值如果在后面的程序不再使用。
垃圾回收器(Python的垃圾回收基于引用计数,开发者完成可以不用关心其内部的垃圾回收机制)将把原来的值占用的内存回收。
可变与不可变在普通场景应用中几乎没区别,只是内存分配和使用问题(对程序员不可见),但对于函数参数来说,区别很大:
首先,明确一点:函数参数本质都是函数调用者参数的复制品,函数参数为函数内部局部变量,复制过来的值作为该局部变量的值,函数参数和函数调用传入的参数指向同一内存地址。
其次,不可变数据类型无法修改。即使在函数内部对参数进行了重新赋值,只是改变了参数本身指向的内存地址,这样会导致函数内部的参数和函数调用者传入的参数指向的内存地址不一样,但没有改变函数调用者使用的原有内存地址存放的内容。
最后,可变数据类型可以修改。函数内部修改其参数时,不会使用新的内存地址,而是直接修改内存地址(引用)指向的值,这样会导致函数调用者使用的参数值也被改变。
复数概述
什么是复数
把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。
复数的运算
(1)复数的加法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数,
则它们的和是 (a+bi)+(c+di)=(a+c)+(b+d)i。
两个复数的和依然是复数,它的实部是原来两个复数实部的和,它的虚部是原来两个虚部的和。
(2)复数的减法按照以下规定的法则进行:设z1=a+bi,z2=c+di是任意两个复数,则它们的差是 (a+bi)-(c+di)=(a-c)+(b-d)i。
两个复数的差依然是复数,它的实部是原来两个复数实部的差,它的虚部是原来两个虚部的差。
(3)规定复数的乘法按照以下的法则进行:
设z1=a+bi,z2=c+di(a、b、c、d∈R)是任意两个复数,那么它们的积(a+bi)(c+di)=(ac-bd)+(bc+ad)i。
两个复数的积仍然是一个复数。
(4)复数除法运算满足(c+di)(x+yi)=(a+bi)的复数x+yi(x,y∈R)叫复数a+bi除以复数c+di的商。
运算方法:可以把除法换算成乘法做,在分子分母同时乘上分母的共轭。所谓共轭你可以理解为加减号的变换,互为共轭的两个复数相乘是个实常数。
复数的几何意义
复数z=a+bi(a、b∈R)与有序实数对(a,b)是一一对应关系 这是因为对于任何一个复数z=a+bi(a、b∈R),由复数相等的定义可知,可以由一个有序实数对(a,b)惟一确定。
如z=3+2i可以由有序实数对(3,2)确定,又如z=-2+i可以由有序实数对(-2,1)来确定;又因为有序实数对(a,b)与平面直角坐标系中的点是一一对应的,如有序实数对(3,2)它与平面直角坐标系中的点A,横坐标为3,纵坐标为2,建立了一一对应的关系。
由此可知,复数集与平面直角坐标系中的点集之间可以建立一一对应的关系。
复数编程
>>> x=complex(1,5)
>>> y=complex(5,8)
>>> x+y
(6+13j)
>>> x-y
(-4-3j)
>>> x*y
(-35+33j)
>>> y/x
(1.7307692307692306-0.6538461538461539j)
>>> pow(x,2)
(-24+10j)
>>> y**3
(-835+88j)
>>> x**2
(-24+10j)
>>> x**(1/8)
(1.207825826103332+0.20941498457007715j)