![Python科学与工程数据分析实战](https://wfqqreader-1252317822.image.myqcloud.com/cover/69/52842069/b_52842069.jpg)
1.3 基本命令
Python是一种非常简单的语言,最简单的语句就是print,使用print语句可以打印出一系列结果。另外,Python要求严格的代码缩进,以Tab键或者4个空格进行缩进,代码按照结构严格缩进,例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P15_20108.jpg?sign=1739273317-w3YXYyvvpV6U08zXS0b6QxgLzXlWMAXG-0-fce938174a3e46ff7810117042c4a8bf)
如果需要注释某行代码,可以在代码前面加上“#”,例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P15_3190.jpg?sign=1739273317-Za6cRDouQXFN0EXJkVKTxdhPvaIrpJJz-0-917c59c514140e6f06dbd542c0ed21c5)
1.3.1 数字
在Python中,解释器表现得就像一个简单的计算器:可以向其输入一些表达式,它会给出返回值。表达式语法很直白:运算符+,-,*和/与其他语言一样(例如Pascal或C);括号(())用于分组。例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20111.jpg?sign=1739273317-gDojIswn0xgSs6piH4yXRFHB5a2nOLfJ-0-9ca296b8430e903634a364e59794a5da)
整数(例如,2,4,20)的类型是int,带有小数部分的数字(例如,5.0,1.6)的类型是float。除法“/”返回的永远是一个浮点数。如要使用floor除法并且得到整数结果(丢掉任何小数部分),可以使用“//”运算符;要计算余数可以使用“%”运算符,如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_3197.jpg?sign=1739273317-mNDXEmVvl82HNbo8fREXmnGR1lLZ4nZ8-0-793ec78c8e4bf852fe5583d7e3aa5f13)
通过Python,还可以使用**运算符计算幂乘方:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20112.jpg?sign=1739273317-4K2fJSW3TjcBmzbrYXaMwrj5bvPxFoSc-0-59e31627152449a7b76e4c9bfed57976)
等号('=')用于给变量赋值。赋值之后,在下一个提示符之前不会有任何结果显示:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20114.jpg?sign=1739273317-5vuxpBmf8nkzwc2mT8A0U0LRVbrzbeOD-0-7b1cee866d69146cff8cd3a28d5aa322)
变量在使用前必须“定义”(赋值),否则会出错:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20116.jpg?sign=1739273317-utpJuZQZDxzfXVs2bMKSXirI2x2X6lIw-0-627d2340f33ac27a73dc16cda10065d7)
浮点数有完整的支持。在整数和浮点数的混合运算中,整数会被转换为浮点数,如:
>>> 3*3.78/1.5 7.56 >>> 7.0/2 3.5
交互模式中,将最近一个表达式的值赋给变量_。这样我们就可以把它当作一个桌面计算器,用于连续计算,例如:
>>> t=13.5/100 >>> price=98.5 >>> price*t 13.297500000000001 >>> price+_ 111.7975 >>> round(_,2) 111.8
此变量对于用户是只读的。不要尝试给它赋值,它只会创建一个独立的同名局部变量,并屏蔽系统内置变量的效果。除了int和float,Python还支持其他数字类型,例如decimal和fraction。Python还支持复数,使用后缀j或J表示虚数部分(例如,3+5j)。
1.3.2 变量
下面来尝试在hello_world.py中执行以下语句:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P17_20122.jpg?sign=1739273317-GbY01M58Ysj89BWF2Pe4bhTCRu6lG9HD-0-638f50d40dd2b671f28820f1efec686b)
运行程序,输出如下:
Hello Python!!
此处添加了一个名为message的变量。每个变量都存储了一个值——与变量相关联的信息。在此,存储的值为文本“Hello Python!!”。
下面进一步扩展这个程序:修改hello_world.py,使其再打印一条消息。为此,在hello_world.py中添加一个空行,再添加下面两行代码:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P17_20125.jpg?sign=1739273317-MZDZbiWxrvqwadU00XSy8xT13RAbyXBi-0-4db9f403991cb3416bdb3f1018eac0dd)
运行程序,输出如下:
Hello World!! Hello Python Crash Course World!!
在程序中我们可随时修改变量的值,而Python将始终记录变量的最新值。
1.变量的命名和使用
在Python中使用变量时,需要遵守一些规则和指南。违反这些规则将引发错误,而指南旨在使编写的代码更容易阅读和理解。变量有关的规则有:
· 变量名只能包含字母、数字和下画线。变量名可以字母或下画线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
· 变量名不能包含空格,但可使用下画线来分隔其中的单词。例如,变量名gr_message可行,但变量名gr message会引发错误。
· 不要将Python关键字和函数名作为变量名,即不要使用Python保留用于特殊用途的单词作为变量名,如print。
· 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
· 慎用小写字母l和大写字母O,因为它们可能被人错看成数字1和0。
要创建良好的变量名,需要经过一定的实践,在程序复杂而有趣时尤其如此。随着编写的程序越来越多,并开始阅读别人编写的代码,我们将越来越善于创建有意义的变量名。
技巧:就目前而言,应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但小写字母更易于他人阅读,避免使用大写字母是个不错的主意。
2.变量赋值
1)单个变量赋值
Python中的变量赋值不需要类型声明。每个变量在内存中创建,都包括变量的标识、名称和数据这些信息。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。等号(=)用来给变量赋值。等号运算符左边是一个变量名,等号运算符右边是存储在变量中的值。例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P18_20746.jpg?sign=1739273317-159gTaugmZPPhZj26FMoiGQrX75sLNwU-0-6b5a5bd60256274c42b130536cb26352)
以上实例中,100,1000.0和"John"分别赋值给counter,miles,name变量。运行程序,输出如下:
100 1000.0 John
2)多个变量赋值
Python允许同时为多个变量赋值。例如:
a=b=c=1
以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。也可以为多个对象指定多个变量。例如:
a,b,c=1,2,"j ohn"
以上实例,两个整型对象1和2分配给变量a和b,字符串对象"john"分配给变量c。
3.使用变量时避免命名错误
程序员一般都会犯错,而且大多数程序员每天都会犯错。虽然优秀的程序员也会犯错,但他们知道如何高效地消除错误。下面来看一种大家可能经常会犯的错误,并学习如何消除它。
我们将有意编写一些引发错误的代码。输入以下代码,包括拼写不正确的单词message:
message="Hello Python Crash Courser eader!" print(mesage)
程序存在错误时,Python解释器将竭尽所能地帮助找出问题所在。程序无法成功地运行时,解释器会提供一个Traceback。Traceback是一条记录,指出了解释器尝试运行代码时,在什么地方陷入了困境。下面是不小心拼写了变量名时,Python解释器提供的Traceback:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P19_20755.jpg?sign=1739273317-2YaPWT1PBDEVL2GB0TDbd4AKqpiwNaP2-0-54f3e9d19e06812a24a4e01f64f58d1f)
解释器提出,文件hello_world.py的第2行存在错误;它列出了这行代码,旨在帮助我们快速找出错误;它还提出了这是什么样的错误。在此,解释器发现了一个名称错误,并指出打印的变量message未定义:Python无法识别提供的变量名。名称错误通常意味着两种情况:要么是使用变量前忘记给它赋值了,要么是输入变量名里拼写不正确。
在这个实例中,第2行的变量名message中遗漏了字母s。Python解释器不会对代码做拼写检查,但要求变量名的拼写一致。如果在代码的另一个地方也将message错误地拼写成mesage,结果将如何呢?
mesage="Hello Python Crash Courser eader!" print(mesage)
在这种情况下,程序将成功地运行:
Hello Pyt hon Crash Cour sereader!
计算机一丝不苟,但不关心拼写是否正确。因此,创建变量名和编写代码时,我们无须考虑英语中的拼写和语法规则。
1.3.3 运算符
运算符是可以操纵操作数的结构。如一个表达式:10+20=30。这里,10和20称为操作数,+则被称为运算符。
Python语言支持以下类型的运算符:
· 算术运算符
· 比较(关系)运算符
· 赋值运算符
· 位运算符
· 逻辑运算符
· 成员运算符
· 身份运算符
下面来看看Python的所有运算符。
1.算术运算符
假设变量a的值是10,变量b的值是21,则表1-1列出了算术运算符规则。
表1-1 算术运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T19_20776.jpg?sign=1739273317-nOODrvkJjOfOPjO9qSCsK94rtU1vT9cg-0-6d030f5f9d7069fbfa817e56446f17e4)
【例1-1】 Python的算术运算。
a=21 b=10 c=0 c=a+ b print("1-c的值为:",c) c=a-b print("2-c的值为:",c) c=a*b print("3-c的值为:",c) c=a/b print("4- c的值为:",c) c=a% b print("5-c的值为:",c) #修改变量a、b、c a=2 b=3 c=a**b print("6-c的值为:",c) a=10 b=5 c=a//b print("7-c的值为:",c)
运行程序,输出如下:
1-c的值为:31 2-c的值为:11 3-c的值为:210 4-c的值为:2.1 5-c的值为:1 6-c的值为:8 7-c的值为:2
2.比较(关系)运算符
表1-2是假设变量a为8,变量b为17的比较效果。
表1-2 比较运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T20_20777.jpg?sign=1739273317-crEoeYAaOmbzvPg58ghu3XwivmsOhCWf-0-05f57dbd119bda18039c8cd2748215a6)
【例1-2】 Python的比较运算。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P21_20805.jpg?sign=1739273317-Fw4F3pRoy3fbOznDejGle5S4iDS5YwlW-0-f43c771d5b93f1290c4761422c07d592)
运行程序,输出如下:
5-a小于或等于b 6-b大于或等于a
3.赋值运算符
表1-3是假设变量a为8,变量b为17的赋值效果。
表1-3 赋值运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T21_20779.jpg?sign=1739273317-pFY3Y3vM46QV2ChsJFb9A1ykJIIPc4vX-0-e63e1aca37abf9ace292c0b2f9d1d523)
【例1-3】 Python的赋值运算操作。
a=8 b=17 c=0 c=a+ b print("1-c的值为:",c) c+=a print("2-c的值为:",c) c*= a print("3-c的值为:",c) c/=a print("4-c的值为:",c) c=2 c%=a print("5-c的值为:",c) c**=a print("6-c的值为:",c) c//=a print("7-c的值为:",c)
运行程序,输出如下:
输出结果为: 1-c的值为:25 2-c的值为:33 3-c的值为:264 4-c的值为:33.0 5-c的值为:2 6-c的值为:256 7-c的值为:32
4.位运算符
位运算符是把数字看作二进制数来进行计算的。Python中的位运算法则如下:
表1-4中变量a为60,b为13的二进制格式如下:
a=0011 1100 b=0000 1101 ----------------- a&b=0000 1100 a|b=0011 1101 a^b=0011 0001 ~a = 1100 0011
表1-4 位运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T22_20781.jpg?sign=1739273317-9n5bRFDEkh0sSv0vCk6Se9MbbR4l2YBh-0-555aeec3163fbdba17f3b6415824c165)
【例1-4】 Python的位运算。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P23_20145.jpg?sign=1739273317-I68oOFvbWLcpqihSunU8tYW8gi0FcTxj-0-0e0ffe39d1f71964d80f243b241b6b50)
运行程序,输出如下:
1-c的值为:12 2-c的值为:61 3-c的值为:49 4-c的值为:-61 5-c的值为:240 6-c的值为:15
5.逻辑运算符
Python语言支持逻辑运算符,表1-5为假设变量a为8,b为16进行运算的结果。
表1-5 逻辑运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T23_20806.jpg?sign=1739273317-AvR3qr18M1GCLjQhpp4g9yogoX0gsHst-0-26380a2a1a82101379bc3efbaeaff886)
【例1-5】 Python的逻辑运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P23_20147.jpg?sign=1739273317-X2VTxC0qH2ScUzBWb9xV0dpQ4JEwcSFi-0-67c8c2c2d573f726cc0fb4afeb2b366d)
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P24_10020.jpg?sign=1739273317-GwzQgseLw6S2x3WAyiw0DxhEUyugQvX1-0-ed0bc7dec414c45874b6c07f5bd8eb31)
运行程序,输出如下:
1-c的值为:12 2-c的值为:61 3-c的值为:49 4-c的值为:-61 5-c的值为:240 6-c的值为:15
6.成员运算符
除了以上运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串、列表或元组,如表1-6所列。
表1-6 成员运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T24_20784.jpg?sign=1739273317-9jfmbZXvAPBUorW5Kj1oxJe5ENhnmom8-0-c7b5440ed548fe12f32e376414200fc9)
【例1-6】 Python的成员运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P24_10052.jpg?sign=1739273317-MEt6SxnMWGabIAuI3SmmMUTl3D4cjfR0-0-b3bd9dedf362be8b0083162868d1133a)
运行程序,输出如下:
1-变量a不在给定的列表list中 2-变量b不在给定的列表list中 3-变量a在给定的列表list中
7.身份运算符
身份运算符用于比较两个对象的存储单元,如表1-7所列。
表1-7 身份运算符规则
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-T25_20785.jpg?sign=1739273317-Q9EQoywjxE5RUUQn1JC0ugyuFbIAhN9Q-0-02248e4744eaeddb61228e46f2cdd8be)
【例1-7】 身份运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P25_10086.jpg?sign=1739273317-Nak5s47mZTkBpo0w9kmIbkJJGoQilmwJ-0-a4f4ad29f3f8745578e299e0b9678cb2)
运行程序,输出如下:
1-a和b有相同的标识 2-a和b有相同的标识 3-a和b没有相同的标识 4-a和b没有相同的标识
提示:is与==的区别主要表现在,is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。