![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=1739503216-u4o5y3J2pNLPg40WfcXaXcAxBAmjlbxY-0-f007636343b30eb188632ff0f25d64dd)
如果需要注释某行代码,可以在代码前面加上“#”,例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P15_3190.jpg?sign=1739503216-m3BdST9pLf07jwkXm2XUh3AMjYKbJiqR-0-ceff155030d796bc09bd66ab03cd6cd1)
1.3.1 数字
在Python中,解释器表现得就像一个简单的计算器:可以向其输入一些表达式,它会给出返回值。表达式语法很直白:运算符+,-,*和/与其他语言一样(例如Pascal或C);括号(())用于分组。例如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20111.jpg?sign=1739503216-rbUKYinh9rG9bXWzb6iA2MD480ODAtxc-0-49e4cdfc45082517d3a11329e9536bcd)
整数(例如,2,4,20)的类型是int,带有小数部分的数字(例如,5.0,1.6)的类型是float。除法“/”返回的永远是一个浮点数。如要使用floor除法并且得到整数结果(丢掉任何小数部分),可以使用“//”运算符;要计算余数可以使用“%”运算符,如:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_3197.jpg?sign=1739503216-NHvFJLMigYYAzoDyZYWUfHjw3Lr7L0wx-0-ab459b081d590ebb1cdd1224b06a1e39)
通过Python,还可以使用**运算符计算幂乘方:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20112.jpg?sign=1739503216-nDUca0MKLCRBZFJ2Vzao3u8dK6mbwoVK-0-f9a3e4e4433a31b8c6dcce8ae8706cd2)
等号('=')用于给变量赋值。赋值之后,在下一个提示符之前不会有任何结果显示:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20114.jpg?sign=1739503216-pezOgSSRqcVsn9NQFffSVfMsDt6FiihF-0-520176d216f91a4c1ac947d3dbee693e)
变量在使用前必须“定义”(赋值),否则会出错:
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P16_20116.jpg?sign=1739503216-T3mEF58Oi75Oc0ywM2SdygKiX5L1Pc4o-0-0c7df398a1e5961bbaa1ddce0aa5b23b)
浮点数有完整的支持。在整数和浮点数的混合运算中,整数会被转换为浮点数,如:
>>> 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=1739503216-Z1L1ZK6ZZhlwkj7WM841OvHg1NdRCRvg-0-15a76b4bc62c4221fc247f0299e063ca)
运行程序,输出如下:
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=1739503216-kGa0kg0rrwmsRs1pRukbtNKsCFK4zcBF-0-8c5599ee448a9f02f126389273543e16)
运行程序,输出如下:
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=1739503216-3FBf4XUde2PM1HcfnQ8so42s5z1SVjCZ-0-7cc7105e969a29be7092bea5ad219119)
以上实例中,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=1739503216-0XKZgOIwhb8uPyY0LIDabNQjprkJjfsB-0-5ac6d6a80fc1a7a7007769be114825ed)
解释器提出,文件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=1739503216-QmpvOsWrQAv5W0QGA890Op97ZtWRquhh-0-565bb75d8a122f6f95b0bec755c74375)
【例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=1739503216-hFrNnsBRoDHHgXMX3GLr3NcOk4RtmHbJ-0-7cbc8f4618bff3e0124fb5fba085c04e)
【例1-2】 Python的比较运算。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P21_20805.jpg?sign=1739503216-w8lDB3i6PnXzXrgNTX4bYed19scvxasB-0-01f086aab4b67d38f02568f9f7a9cff8)
运行程序,输出如下:
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=1739503216-KUYcZ2y7HqqFXGKAzeRuXs6hWDvApHPv-0-03d202a794c2a834ce3b6323aab7c132)
【例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=1739503216-eJTiwH1xnvHJ5XI9xO2LWUvMfLBHZjNW-0-cffc51263b5add0fe352677bbb0f234e)
【例1-4】 Python的位运算。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P23_20145.jpg?sign=1739503216-03VM439bYEOfwLd0NhBeSc0GgnWxpYsF-0-daf77ab7849338a92c0935a71f2eebb6)
运行程序,输出如下:
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=1739503216-2eoq8i62whTYkQTQPjoF9pofmzWdjlUQ-0-2c6a10c11460e8202fdbd6ead3458eef)
【例1-5】 Python的逻辑运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P23_20147.jpg?sign=1739503216-bi2Mlj73dy0O8ixbQIWPgl47ZCDCTzdm-0-e822872dbaf6ad158761ca882e694e92)
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P24_10020.jpg?sign=1739503216-Pa3A0V5HjNWXCdpf2yGpfCefDcm060wr-0-c6104436b21bf9b4a7bc380e46b49261)
运行程序,输出如下:
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=1739503216-IQq9PjrDXRIofTp0EJvpCfey6A8nBDaE-0-462af2cdaa017e0b25f7bb1c0fee4462)
【例1-6】 Python的成员运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P24_10052.jpg?sign=1739503216-RGnBWPKmv6TmuC7wFL6W36EFCeJtuSGK-0-5dd761fe27713285b7627cf1f2c61623)
运行程序,输出如下:
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=1739503216-ONjaskXI8nlF4dpYeCZOh9FkkYGe5bIM-0-57d6531495c756684c437246babcf179)
【例1-7】 身份运算实例。
![](https://epubservercos.yuewen.com/04B710/31397758304943406/epubprivate/OEBPS/Images/Figure-P25_10086.jpg?sign=1739503216-udGb6rq3IQtcGOEgyQlS2FjfQVWjwcRz-0-1fd44f55aca738ad70e87dc03549a92d)
运行程序,输出如下:
1-a和b有相同的标识 2-a和b有相同的标识 3-a和b没有相同的标识 4-a和b没有相同的标识
提示:is与==的区别主要表现在,is用于判断两个变量引用对象是否为同一个,==用于判断引用变量的值是否相等。