零基础学Python--------第2章 Python语言基础

时间:2022-02-14 23:01:08

第2章  Python语言基础

2.1 Python语法特点

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。
  1. 使用必要的空行可以增加代码的可读性。一般在*定义(如函数或者类的定义)之间空两行,而方法定义之间空一行。另外,在用于分隔某些功能的位置也可以空一行。
  2. 通常情况下,运算符两侧、函数参数之间、“,”两侧建议使用空格进行分隔。
  3. 应该避免在循环中使用“+”和“+=”运算符累加字符串。这是因为字符串是不可变的,这样做会创建不必要的临时对象。推荐将每个子字符串加入列表,然后在循环结束后使用join()方法连接列表。
  4. 适当使用异常处理结构提高程序容错性,但不能过多依赖异常处理结构,适当的显示判断还是必要的。

说明:在编写Python程序时,建议严格遵循PEP 8编码规范。完整的Python编码规范请参考PEP 8。

2.命名规范

命名规范在编写代码中起到很重要的作用,虽然不遵循命名规范,程序也可以运行,但是使用命名规范可以更加直观地了解代码所代表的含义。本节将介绍Python中常用的一些命名规范。

  1. 模块名尽量短小,并且全部使用小写字母,可以使用下划线分隔多个字母。例如,game_main、bmiexponent。
  2. 包名尽量短小,并且全部使用小写字母,不推荐使用下划线。例如,com.mingrisoft.book,而com_mingrisoft就是不推荐的。
  3. 类名采用单词首字母大写形式(即Pascal风格)。例如,定义一个借书类,可以命名为BorrowBook。
  4. 模块内部的类采用下划线“_”+Pascal风格的类名组成。例如,在BorrowBook类中的内部类,可以使用_BorrowBook命名。
  5. 函数、类的属性和方法的命名规则同模块类似,也是全部使用小写字母,多个字母间用下划线“_”分隔。
  6. 常量命名时全部使用大写字母,可以使用下划线。
  7. 使用单下划线“_”开头的模块变量或者函数是受保护的,在使用from ××× import * 语句从模块中导入时这些变量或者函数不能被导入。
  8. 使用双下划线“_”开头的实例变量或方法是类私有的。

2.2保留字与标识符

2.2.1保留字

保留字是Python语言中一些已经被赋予特定意义的单词。开发程序时,不可以把这些保留字作为变量、函数、类、模块和其他对象的名臣过来使用。

Python中的保留字

and  as  assert  break  class  continue  def  del  elif  else  except  finally  for  from  False  global  if  import  in  is  lambad  nonlocal  not  None  or  pass  raise  return  try  True  while  with  yield

注意: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

English     92

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 = 89

python < 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()语句输出后会自动换行,如果想要一次输入多个内容,而且不换行,可以将要输出的内容使用英文半角的逗号分隔。