正文
零基础学Python--------第2章 Python语言基础
小程序:扫一扫查出行
【扫一扫了解最新限行尾号】
复制小程序
【扫一扫了解最新限行尾号】
复制小程序
第2章 Python语言基础2.1 Python语法特点2.11注释
2.11注释
在Python中,通常包括3种类型的注释,分别是单行注释、多行注释和中文编码声明注释。
1.单行注释
在Python中,使用“#”作为单行注释的符号。从符号“#”开始知道换行为止,“#”后面所有的内容都作为注释的内容,并被Python编译器忽略。
语法如下:
# 注释内容
单行注释可以放在要注释代码的前一行,也可以放在要注释代码的右侧。例如,下面的两种注释形式都是正确的。
第一种形式:
# 要求输入身高,单位为m(米),如1.70
height=float(input("请输入您的身高:"))
第二种形式:
height=float(input("请输入您的身高:")) # 要求输入身高,单位为m(米),如1.70
上面两种形式的运行结果是相同的。
说明:在添加注释时,一定要有意义,既注释能充分解释代码的功能及用途。
注意:注释可以出现在代码的任意位置,但是不能分隔关键字和标识符。例如,下面的代码注释是错误的:
height=float(# 要求输入身高 input("请输入您的身高:"))
多学两招:注释除了可以解释代码的功能及用途,也可以用于临时注释掉不想执行的代码。<Alt+3>,将选中的代码注释掉;<Alt+4>,取消注释掉的代码。
2.多行注释
在Python中,并没有一个单独的多行注释标记,而是将包含在一对三引号('''……''')或者("""……""")之间,并且不属于任何语句的内容都是可视为注释,这样的代码将被解释器忽略。由于这样的代码可以分为多行编写,所以也称为多行注释。
语法格式如下:
'''
注释内容1注释内容2'''
或者
"""注释内容1注释内容2"""
多行注释通常用来为Python文件、模块、类或者函数等添加版权、功能等信息。
注意:在Python中,三引号('''……''')或者("""……""")是字符串定界符。如果三引号作为语句的一部分出现时,就不是注释,而是字符串,这一点要注意区分。
三引号内的内容为多行注释:
'''
@功能:根据身高、体重计算BMI指数
@author:牧牛人
@create:2019-02-09
'''
三引号内的内容为字符串:
print('''根据身高、体重计算BMI指数''')
3.中文编码声明注释
在Python中,还提供了一种特殊的中文编码声明注释,该注释的出现主要是为了解决Python2.x中不支持直接写中文的问题。虽然在Python3.x中,该问题已经不存在了。但是为了规范页面的编码,同时方便其他程序员及时了解文件所用的编码,建议在文件开始加上中文编码声明注释。
语法格式如下:
# -*- coding:编码 -*-
或者
# coding=编码
在上面的语法中,编码为文件所使用的字符编码类型,如果采用UTF-8编码,则设置为utf-8:如果采用GBK编码,则设置为gbk或者cp936。
例如,制定编码为UTF-8,可以使用下面的中文编码声明注释:
# -*- coding:utf-8 -*-
说明:在上面的代码中,“-*-”没有特殊的作用,只是为了美观才加上的。
下面的代码也是正确的中文编码声明注释:
# coding=utf-8
2.1.2代码缩进
Python不像其他程序设计语言(如Java或者C语言)采用大括号“{}”分隔代码块,而是采用代码缩进和冒号“:”区分代码之间的层次。
说明:缩进可以使用空格或者<Tab>键实现。其中,使用空格时,通常情况下采用4个空格作为一个缩进量,而使用Tab键时,则采用一个Tab键作为一个缩进量。通常情况下建议采用空格进行缩进。
在Python中,对于类定义、函数定义、流程控制语句、异常处理语句等,行尾的冒号和下一行的缩进便是一个代码块的开始,而缩进结束,则表示一个代码块的结束。
例如,下面代码中的缩进为正确的缩进:
height=float(input("请输入您的身高:")) # 输入身高
weight=float(input("请输入您的体重:")) # 输入体重
bmi=weight/(height*height) # 计算BMI指数# 判断身材是否合理
if bmi<18.5:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("正常范围,注意保持(-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("体重过重 ~@_@~")
if bmi>=29.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("肥胖^@_@^")
Python对代码的缩进要求非常严格,同一个级别的代码块的缩进量必须相同。如果不采用合理的代码缩进,将抛出SyntaxError异常。
2.1.3编码规范
1.编写规则
Python中采用的PEP 8作为编码规范,其中PEP是Python Enhancemnt Proposal (Python增强建议书)的缩写,而“PEP 8”中的“8”表示版本号。PEP 8是Python代码的样式指南。下面给出PEP8编码规范中的一些应该严格遵守的条目。
每个import语句只导入一个模块,尽量避免一次导入多个模块。
推荐写法
import os
import sys
不推荐写法
import os,sys
不要在行尾添加分号“;”,也不要用分号将两条命令放在同一行。
height=float(input("请输入您的身高:"));
weight=float(input("请输入您的体重:"));
建议每行不超过80个字符,如果超过,建议使用小括号“()”将多行内容隐式的连接起来,而不推荐使用反斜杠“\”进行连接。例如,如果一个字符串文本不能在一行上完全显示,那么可以使用小括号“()”将其分行显示,代码如下:
s=("我一直认为我是一只蜗牛。我一直在爬,也行还没有爬到金字塔的顶端。""但是只要你在爬,就足以给自己留下令生命感动的日子。")
以下通过反斜杠“\”进行连接的做法是不推荐使用的:
s=("我一直认为我是一只蜗牛。我一直在爬,也行还没有爬到金字塔的顶端。\但是只要你在爬,就足以给自己留下令生命感动的日子。")
不过以下两种情况除外:
- 导入模块的语句过长。
- 注释里的URL。
- 使用必要的空行可以增加代码的可读性。一般在顶级定义(如函数或者类的定义)之间空两行,而方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
- 通常情况下,运算符两侧、函数参数之间、“,”两侧建议使用空格进行分隔。
- 应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。
- 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显示判断还是必要的。
说明:在编写Python程序时,建议严格遵循PEP 8编码规范。完整的Python编码规范请参考PEP 8。
2.命名规范
命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。本节将介绍Python中常用的一些命名规范。
- 模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母。例如,game_main、bmiexponent。
- 包名尽量短小,并且全部使用小写字母,不推荐使用下划线。例如,com.mingrisoft.book,而com_mingrisoft就是不推荐的。
- 类名采用单词首字母大写形式(即Pascal风格)。例如,定义一个借书类,可以命名为BorrowBook。
- 模块内部的类采用下划线“_”+Pascal风格的类名组成。例如,在BorrowBook类中的内部类,可以使用_BorrowBook命名。
- 函数、类的属性和方法的命名规则同模块类似,也是全部使用小写字母,多个字母间用下划线“_”分隔。
- 常量命名时全部使用大写字母,可以使用下划线。
- 使用单下划线“_”开头的模块变量或者函数是受保护的,在使用from ××× import * 语句从模块中导入时这些变量或者函数不能被导入。
- 使用双下划线“_”开头的实例变量或方法是类私有的。
2.2保留字与标识符2.2.1保留字
保留字是Python语言中一些已经被赋予特定意义的单词。开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名臣过来使用。
Python中的保留字
andasassertbreakclasscontinuedefdelelifelseexceptfinallyforfromFalseglobalifimportinislambadnonlocalnotNoneorpassraisereturntryTruewhilewithyield
注意:Python中所有保留字是区分字母大小写的。
多学两招:Python中的保留字可以在IDLE中输入以下两行代码查看。
import keyword
keyword.kwlist
常见错误:如果在开发程序时 ,使用Python中的保留字作为模块、类、函数或者变量等的名称,则会提示“invalid syntax”的错误信息。例如:
if = "我是一名设计师"
print(if)
2.2.2标识符
标识符可以简单地理解为一个名字,比如每个人都有自己的名字,它主要用来标识变量、函数、类、模块和其他对象的名称。
Python语言标识符命名规则如下:
有字母、下划线“_”和数字组成。第一个字符不能是数字,目前Python中只允许使用ISO-Latin字符集中的字符A~Z和a~z。
不能使用Python的保留字
例如,下面是合法的标识符:
USERID
name
mode12
user_age
下面是非法的标识符:
4word#以数字开头
try #Python中的保留字
$money #不能使用特殊字符$
注意:Python的标识符中不能包含空格、@、%和$等特殊字符。
区分字母大小写
在Python中,标识符中的字母是严格区分大小写的,两个同样的单词,如果大小写格式不一样,所代表的意义完全不同的。
Python中以下划线开头的标识符有特殊的意义,一般应该避免使用相似的标识符。
- 以单下划线开头的标识符(如_width)便是不能直接访问的类属性。另外,也不能通过“from xxx import * ”导入。
- 以双下划线开头的标识符(如_add)表示类的私有成员。
- 以双下划线开头和结尾的是Python里专用的标识,如__init__()表示构造函数。
说明:在Python语言中允许使用汉字作为标识符,如“我的名字="牧牛人"”,在程序运行时并不会出现错误,但是尽量不要使用汉字作为标识符。
2.3.1理解Python中的变量
在Python中,变量严格意义上应该称为“名字”,也可以理解为标签。
……
2.3.2变量的定义与使用
在Python中,不需要先声明变量名及其类型,直接赋值即可创建各种类型的变量。但是变量的命名并不是任意的,应遵循以下几条规则:
- 变量名必须是一个有效的标识符。
- 变量名不能使用Python中的保留字。
- 慎用小写字母I和大写字母O。
- 应选择有意义的单词作为比变量名。
为变量赋值可以通过等号(=)来实现。语法格式为:
变量名 = value
例如,创建一个整型变量,并为其赋值为1024,可以使用下面的语句:
number = 1024 #创建变量number并赋值为1024,该变量为数值型
如果直接为变量赋值一个字符串值,那么该变量即为字符串类型。例如下面的语句:
nickname = "碧海苍梧" #字符串类型的变量
另外,Python是一种动态类型的语言,也就是说,变量的类型可以随时变化。例如,在IDLE中,创建变量nickname,并赋值为字符串“碧海苍梧”,然后输出该变量的类型,可以看到该变量为字符串类型。也可以将该变量赋值为数值1024,并输出该变量的类型。可以看到该变量为整型。执行过程如下:
>>> nickname = "碧海苍梧" #字符串类型的变量
>>> print(type(nickname))
<class 'str'>
>>> nickname = 1024 #整型的变量
>>> print(type(nicename))
<class 'int'>
说明:在Python语言中,使用内置函数type()可以返回变量类型。
在Python中,允许多个变量指向同一个值。例如:将两个变量都赋值为数字2048,再分别应用内置函数id()获取变量的内存地址,将得到相同的结果。执行过程如下:
>>> no = number = 2048
>>> id(no)
49364880
>>> id(number)
49364880
说明:在Python语言中,使用内置函数type()可以返回变量所指的内纯地址。
注意:常量就是程序运行过程中,值不能改变的量,不如现实生活中的居民身份证号码、数学运算中的π值等。在Python中,并没有提供定义常量的保留字。不过在PEP 8规范中规定了常量由大写字母和下划线组成,但是在实际项目中,常量首次赋值后,还是可以被其他代母修改的。
2.4基本数据类型
在内存中存储的数据可以有多种类型。例如:一个人的姓名可以用字符型存储,年龄可以使用数值型存储,婚姻状况可以使用布尔型存储。这里的字符型、数值型、布尔型都是Python语言中提供的基本数据类型。下面将详细介绍基本数据类型。
2.4.1数字类型
在生活中,经常使用数字记录比赛得分、公司的销售数据和网站的访问量等信息。在Python语言中,提供了数字类型用于保存这行数值,并且它们是不可以改变的数据类型。如果修改数字类型变量的值,那么会先把该值存放到内存中,然后修改变量让其指向新的内存地址。
在Python语言中,数字类型主要包括整数、浮点数和负数。
1.整数
整数用表示整数数值,即没有小数部分的数值。在Python语言中,整数包括正整数、负整数和0,并且它的位数是任意的……
整数类型包括十进制整数、八进制整数、十六进制整数和二进制整数。
(1)十进制整数:例如,
465168765
99999999999999999999999999999999999999999999999
-2019
0
注意:不能以0作为十进制数的开头(0除外)
(2)八进制整数:由0~7组成,进位规则为“缝八进一”,并且以0o/0O开头的数,如0o123(转换成十进制数为83)、-0o123(转换成十进制数为-83)。
(3)十六进制整数:由0~9,A~F组成,进位规则为“逢十六进一”,并且以0x/0X开头的数,如0x25(转换成十进制数为37)、0Xb01e(转换成十进制数为45086)。
注意:十六进制数必须以0X或0x开头。
(4)二进制整数:由0和1两个数组成,进位规则是“逢二进一”,如101(转换成十制数后为5)、1010(转换成十制数后为10)。
2.浮点数
浮点数由整数部分和小叔部分组成,主要用于处理包括小数的数。
3.复数
Python中的复数与数学中的复数的形式完全一致,都是由于实部和虚部组成,并且使用 j 和 J 表示虚部。当表示一个复数时,可以将其实部和虚部相加,例如,一个复数,实部为3.14,虚部为12.5j,则这个复数为3.14+12.5j。
2.4.2字符串类型
字符串就是连续的字符序列,可以是计算机所能表示的一切字符的集合。在Python中,字符串属于不可变序列,通常使用单引号“' '”、双引号“" "”或者三引号“''' '''或者"" ""”括起来。这三种引号形式在语义上没有差别,只是形式上有些差别。其中单引号和双引号中的字符序列必须在一行上,而三引号内的字符序列可以分布在联系的多行上。
注意:字符串开始和结尾使用的引号形式必须一致。另外当需要表示复杂的字符串时,还可以嵌套使用引号。
Python中的字符串还支持转义字符。所谓转义字符是指使用反斜杠“\”对一些特殊字符进行转义。
常用的转义字符及其说明
转义字符 说明
\续航符
\n 换行符
\0 空
\t 水平制表符,用于横向跳到下一个制表位
\" 双引号
\' 单引号
\\ 一个反斜杠
\f 换页
\0dd八进制数,dd代表字符,如\012代表换行
\xhh十六进制数,hh代表字符,如\x0a代表换行
注意:在字符串定界符引前的前面加上字母r(或R),那么该字符串讲原样输出,其中的转义字符将不进行转义。例如:输出字符串“"失望之酒\x0a机会之杯"”将输出转义字符换行,而输出字符串“r"失望之酒\x0a机会之杯"”,则原样输出。
>>> print("失望之酒\x0a机会之杯")
失望之酒
机会之杯
>>> print(r"失望之酒\xOa机会之杯")
失望之酒\xOa机会之杯
>>>
2.4.3布尔类型
布尔类型主要用来表示真值或假值。在Python中,标识符True和False被解释为布尔值。另外Python中的布尔值可以转化为数值,True表示1,False表示0。
说明:Python中的布尔类型的值可以进行数值运算,例如,“False+1”的结果为1。但是不建议对布尔类型的值进行数值运算。
在Python中,所有的对象都可以进行真值测试。其中,只有下面列出的几种情况得到的值为假,其他对象在if或者while语句中都变现为真。
- False或None。
- 数值中的零,包括0、0.0、虚数0。
- 空序列,包括字符串、空元组、空列表、空字典。
- 自定义对象的实例,该对象的__bool__方法返回False或者__len__方法返回0。
2.4.4数据类型转换
Python是动态类型的语言(也称为弱类型语言),不需要像Java或者C语言一样在使用变量前声明变量的类型。虽然Python不需要先声明变量的类型,但有时仍然需要用到类型转换。
常用类型转换函数及其作用
函数作用
int(x)将x转换成整数类型
float(x)将x转换成浮点数类型
complex(real [,imag]) 创建一个复数
str(x) 将x转换为字符串
repr(x) 将x转换为表达式字符串
eval(str) 计算在字符串中的有效Python表达式,并返回一个对象
chr(x) 将整数x转换为一个字符
ord(x) 将一个字符x转换为它对应的整数值
hex(x) 将一个整数x转换为一个十六进制字符串
oct(x) 将一个整数x转换为一个八进制的字符串
实例:模拟超市抹零结账行为
在IDLE中创建一个名称为erase_zero.py的文件,然后在该文件中,首先将各个商品金额累加,计算出商品总金额,并转换为字符串输出,然后再应用int()函数将浮点型的变量转换为整型,从而实现抹零,并转换为字符串输出。关键代码如下:
money_all = 12.36 + 23.51 + 45.32 + 54.14 + 65.21 # 累加总计金额
money_all_str = str(money_all) # 转换为字符串
print("商品总金额为:" + money_all_str)
money_real = int(money_all) # 进行抹零处理
money_real_str = str(money_real) # 转换为字符串
print("实收金额为:" + money_real_str)
常见错误:在进行数据类型转换时,如果把一个非数字字符串转换为整型,将产生错误。
2.5运算符
算术运算符是处理四则运算的符号,在数字的处理中应用得最多。
常用的算术运算符
运算符说明
+加
-减
*乘
/除
% 求余,即返回除法的余数
// 取整数,即返回商的整数部分
** 幂,即返回x的y次方
说明:在算术运算符中使用%求余,如果余数(第二个操作数)是负数,那么取得的结果也是一个负值。
注意:使用除法(/或//)运算符求余运算符时,余数不能为0,否则将会出现异常。
实例:计算学生成绩的分数差及平均分
某学员3门课程成绩如下:
课程分数
Python 95
English92
C语言89
编程实现
- Python课程和C语言课程的分数之差。
- 3门课程的平均分。
python = 95 # 定义变量,存储Python课程的分数
english = 92 # 定义变量,存储English课程的分数
c = 89 # 定义变量,存储C语言课程的分数
sub = python - c # 计算Python课程和C语言课程的分数差
avg = (python + english + c)/3 # 计算平均成绩
print("Python课程和C语言课程的分数只差:" + str(sub) + " 分\n")
print("3门课程的平均分:" +str(avg) + "分")
或
python = 95 # 定义变量,存储Python课程的分数
english = 92 # 定义变量,存储English课程的分数
c = 89 # 定义变量,存储C语言课程的分数
sub = python - c # 计算Python课程和C语言课程的分数差
avg = (python + english + c)/3 # 计算平均成绩
print("Python课程和C语言课程的分数只差:" ,str(sub) ," 分")
print("3门课程的平均分:" ,avg,"分")
2.5.2赋值运算符
赋值运算符主要用来为变量等赋值。使用时,可以直接把基本赋值运算符“=”右边的赋值给左边的变量,也可以进行某些运算后再赋值给左边的变量。在Python中常用的赋值运算符如下:
常用的赋值运算符
运算符 | 说明 | 举例 | 展开形式 |
= | 简单的赋值运算 | x=y | x=y |
+= | 加赋值 | x+=y | x=x+y |
-= | 减赋值 | x-=y | x=x-y |
*= | 乘赋值 | x*=y | x=x*y |
/= | 除赋值 | x/=y | x=x/y |
%= | 取余数赋值 | x%=y | x=x%y |
**= | 幂赋值 | x**=y | x=x**y |
//= | 取整除赋值 | x//=y | x=x//y |
注意:混淆=和==是编程中最常见的错误之一。很多语言(不只是Python)都使用了这两个符号。
2.5.3比较(关系)运算符
比较运算符,也称关系运算符,用于对变量或表达式的结果进行大小、真假等比较,如果比较结果为真,则返回Ture,如果为假,则返回False。比较运算符通常用在条件语句中作为判断的依据。Python中的比较运算符如下:
Python的比较运算符
运算符 | 作用 | 举例 | 结果 |
> | 大于 | 'a'>'b' | False |
< | 小于 | 99<1000 | True |
== | 等于 | 'c'=='c' | True |
!= | 不或等于 | 'y'!='t' | True |
>= | 大于或等于 | 1000>99 | True |
<= | 小于或等于 | 12<=56.5 | False |
多学两招:在Python中,当需要判断一个变量是否介于两个值之间时,可以采用“值1<变量<值2”的形式,例如“0<a<100”。
实例:使用比较运算符比较大小关系
在IDLE中创建一个名称为comparison_operator.py的文件,然后在该文件中,定义3个变量,并分别使用Python中的各种比较运算符对它们的大小关系进行比较,代码如下:
python = 95 # 定义变量,存储Python课程的分数
english = 92 # 定义变量,存储English课程的分数
c = 89 # 定义变量,存储C语言课程的分数
# 输出3个变量的值
print("python = " + str(python) + " english = " +str(english) + "c = " +str(c) + "\n")
print("python < english的结果:" + str(python < english)) # 小于操作
print("python > english的结果:" + str(python > english)) # 小于操作
print("python == english的结果:" + str(python == english)) # 小于操作
print("python != english的结果:" + str(python != english)) # 小于操作
print("python <= english的结果:" + str(python <= english)) # 小于操作
print("python >= c的结果:" + str(python >= c)) # 小于操作
运行结果如下:
python = 95 english = 92c = 89python < english的结果:False
python > english的结果:True
python == english的结果:False
python != english的结果:True
python <= english的结果:False
python >= c的结果:True
>>>
2.5.4逻辑运算符
某手机店在每周二上午10点至11点和每周的下午14点至15点,对小米8系列手机进行折扣让利活动,那么想参加则折扣活动的顾客,就要在时间上满足两个条件:周二10:00 a.m.~11:00 a.m.,周五2:00 p.m.~ 3:00 p.m.。这里用到了逻辑运算符来进行逻辑运算。
逻辑运算符
运算符 | 含义 | 用法 | 结合方向 |
and | 逻辑与 | op1 and op2 | 从左到右 |
or | 逻辑或 | op1 or op2 | 从左到右 |
not | 逻辑非 | not op | 从右到左 |
使用逻辑运算符进行逻辑运算时,其运算结果如下:
表达式1 | 表达式2 | 表达式1 and 表达式2 | 表达式1 or 表达式2 | not 表达式1 |
True | True | True | True | False |
True | False | False | True | False |
False | False | False | False | True |
False | True | False | True | True |
实例:参加手机店的打折活动
在IDLE中创建一个名称为sale.py的文件,然后在该文件中,使用大麻实现开始描述的场景,代码如下:
print("\n手机店正在打折,活动进行中……") # 输出提示信息
strWeek = input("请输入中文星期(如星期一):") # 输入星期,例如,星期一
intTime = int(input("请输入时间中的小时(范围:0~23):")) # 输入时间
# 判断是否满足活动参与条件(使用了if条件语句)
if (strWeek == "星期二" and (intTime >=10 and intTime <= 11)) or (strWeek == "星期五" and (intTime >= 14 and intTime <=15)):
print("恭喜您,获得了折扣活动参与资格,快快选购吧!") # 输出提示信息
else:
print("对不起,你来晚了一步,期待下次活动……") # 输出提示信息
代码注解:
(1)第2行代码中,input()函数用于结接收用户输入的字符序列。
(2)第3行代码中,由于input()函数返回的结果为字符串类型,所以需要进行类型转换。
(3)第5行和第7行代码使用了if……else条件判断语句,该语句主要用来判断程序是否满足某种条件。该语句将在第3章进行详细讲解,这里只需要了解即可。
2.5.5位运算符
位运算符是把数字看作二进制数来进行计算的,因此,需要先将要执行运算的数据转换为二进制,然后才能进行执行运算。Python中的位运算符有位与(&)、位或(|)、位异或(^)、取反(~)、左移位(<<)和右移位(>>)运算符。
说明:整型数据在内存中以二进制的形式表示,如7的32位二进制形式如下:
00000000 00000000 00000000 00000111
其中,左边最高位是符号位,最高位时0表示正数,若为1则表示负数。负数采用补码表示,如-7的32位二进制形式如下:
11111111 11111111 11111111 11111001
1.“位与”运算
“位与”运算符为“&”,“位与”运算的运算法则是:两个操作数据的二进制表示,只有对应数位都是1时,结果位数才是1,否则为0.如果两个操作数的精度不同,则结果的精度与精度高的操作数相同。
……
2.“位或”运算
……
3.“位异或”运算
……
4.“位取反”运算
……
在Python中使用print()函数输出的运算结果,代码如下:
print("12&8 = "+str(12&8)) # 位与计算整数的结果
print("4|8 = "+str(4|8)) # 位或计算整数的结果
print("31^22 = "+str(31^22)) # 位异或计算整数的结果
print("~123 = "+str(~123)) # 位取反计算整数的结果
5.左位移运算符<<
……
6.有位移运算符>>
……
2.5.6运算符的优先级
所谓运算符的优先级,是指在应用中哪一个运算符先计算,哪一个后计算,与数学的四则运算应遵循的“先乘除,后加减”是一个道理。
Python的运算符的运算规则是:优先高级的运算先执行,优先级低的运算后执行,同一优先级的操作按照从左到右的顺序进行。也可以像四则运算那样使用小括号,括号内的运算最先执行。下表按照从高到低的顺序列出了运算符的优先级。同一行中的运算符具有相同优先级,此时它们的结合方向决定求值顺序。
运算符的优先级
运算符 | 说明 |
** | 幂 |
~、+、- | 取反、正号和负号 |
*、/、%、// | 算术运算符 |
+、- | 算术运算符 |
<<、>> | 位运算符中的左移和右移 |
& | 位运算符中的位与 |
^ | 位运算符中的位异或 |
| | 位运算符中的位或 |
<、<=、>、>=、!=、== | 比较运算符 |
多学两招:在编写程序时尽量使用括号“()”来限定运算次序,避免运算次序发生错误。
2.6基本输入和输出
基本输入和输出是指我们平时从键盘上输入字符,然后在屏幕上显示。
从第一个Python程序开始,我们一直在使用print()函数向屏幕上输出一些字符,这就是Python的基本输出函数。除了print()还提供了一个用于进行标准输入的input()函数,用于接收用户从键盘上的输入内容。
2.6.1使用input()函数输入
在Python中,使用内置函数input()可以接收用户的键盘输入。input()函数的基本用法如下:
variable = input("提示文字")
其中,variable位保存输入结果的变量,双引号内的文字用于提示要输入的内容。例如,想要接收用户输入的内容,并保存到变量tip中,可以使用下面的代码:
tip = input("请输入文字:")
在Python 3.x中,无论输入的是数字还是字符都将被作为字符串读取。如果想要接收数值,需要把接收到的字符串进行类型转换。例如,想要接收整型的数字并保存到变量age中,可以使用下面的代码:
age = int(input("请输入数字:"))
说明:在Python 2.x中,input()函数接收内容时,数值直接输入即可……
实例:根据身高、体重计算BMI指数(改进版)
下面将其修稿为使用input()函数输入,修改后的代码如下:
height=float(input("请输入您的身高:")) # 输入身高,单位:米
weight=float(input("请输入您的体重:")) # 输入体重,单位:千克
bmi=weight/(height*height) # 用于计算BMI指数,公式:BMI=体重/身高的平方
print("您的BMI指数位:"+str(bmi)) # 输出BMI指数
# 判断身材是否合理
if bmi<18.5:
print("您的BMI指数为:"+str(bmi)) # 输出BMI指数
print("体重过轻 ~@_@~")
if bmi>=18.5 and bmi<24.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("正常范围,注意保持(-_-)")
if bmi>=24.9 and bmi<29.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("体重过重 ~@_@~")
if bmi>=29.9:
print("您的BMI指数为:"+str(bmi)) #输出BMI指数
print("肥胖^@_@^")
2.6.2使用print()函数输出
默认的情况下,……
……输出内容可以是数字和字符串(字符串需要使用引号括起来),……
多学两招:在Python中,默认情况下,一条print()语句输出后会自动换行,如果想要一次输入多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。