目录
基础语法
标识符
变量
模块
数字类型
整数类型
浮点类型
复数类型
布尔类型
数字类型的相互转换
隐式类型的转换
显示类型的转换
运算符
算术运算符
比较运算符
逻辑运算符
位运算符
位反运算的计算
赋值运算符
运算符的优先级
程序流程控制
分支语句
(1)if结构
(2)if-else结构
(3)if-elif-else结构
循环语句
(1)while语句
(2)for语句
跳转语句
break语句
continue语句
Python中标识符的命名规则如下:
1.区分大小写:Myname与myname是两个不同的标识符。
2.首字符可以是下画线(_)或字母,但不能是数字。
3.除首字符外的其他字符必须是下画线、字母和数字。
4.关键字不能作为标识符。
5.不要使用Python的内置函数作为自己的标识符。(注:中文等亚洲文字也可以作为Python标识符)
在Python中为一个变量赋值的同时就声明了该变量,该变量的数据类型就是赋值数据所属的类型,该变量还可以接收其他类型的数据。
# 声明变量,变量的数据类型根据赋值数据所属的类型推导出来
greeting="HelloWorld"(Python语句结尾一般不加分号)
student_score=0.0
//虽然y已经保存了整数20,但它也可以接收其他类型的数据
y=20
y=True
Python注释时使用#,#位于注释行的开头,#后面有一个空格, 接着是注释的内容。
在Python中一个模块就是一个文件,模块是保存代码的最小单位, 在模块中可以声明变量、函数、属性和类等Python代码元素。
一个模块的元素访问另外一个模块的代码元素的三种方式:
(1)如果想要导入另一个模块所有的内容,直接使用import语句
# m1模块
import m2
y=20
print(m2.x)
# m2模块
x=20.0
import<模块名>:通过这种方式会导入m2模块的所有代码元素,在访问时需要加前缀“m2.”
(2)如果想要导入另一个模块的某一个元素,直接使用from import语句
# m1模块
from m2 import x
y=20
print(x)
# m2模块
x=20.0
from<模块名>import<代码元素>:通过这种方式会导入m2中的x变量,在访问时不需要加前缀“m2.”
(3)如果想要导入另一个模块的某一个元素,但是名称有冲突,使用from import as语句
# m1模块
from m2 import x as x2
x=100
y=20
print(x2)
# m2模块
x=20.0
from<模块名>import<代码元素>as<代码元素别名>:与(2)类似,在当前m1模块的代码元素(x变量)与要导入的m2模块的代码元素(x变量)名称有冲突时,可以给要导入的代码元素(m2中的x)一个别名x2。
Python中的数字类型有4种:整数类型、浮点类型、复数类型和布尔类型。需要注意的是,布尔类型也是数字类型,它事实上是整数类型的一种。
Python中的整数类型为int类,整数类型的范围可以很大,表示很大的整数,只受所在计算机硬件的限制。
>>>28 # 十进制表示方式
28
>>>type(28)
>>>0b11100 # 二进制表示方式,以阿拉伯数字0和英文字母B(或b)作为前缀
28
>>>0o34 # 八进制表示方式,以阿拉伯数字0和英文字母O(或o)作为前缀
28
>>>0x1c # 十六进制表示方式,以阿拉伯数字0和英文字母X(或x)作为前缀
28
浮点类型主要用来存储小数数值,Python的浮点类型为float类。Python只支持双精度浮点类型,而且是与本机相关的。
>>>1.0 # 采用小数表示浮点类型
1.0
>>>0.0
0.0
>>>type(0.0)
>>>3.36e2 # 使用科学计数法表示浮点数据,在科学计数法中会使用E(或e)表示10的指数,如e2表示10^2
336.0
>>>1.56e-2
0.0156
>>>.56e-2
0.0056
整数和浮点数(小数)在数学中被统称为实数。与实数对应的是复数,复数在数学中被表示为:a+bi,其中a被称为实部,b被称为虚部,i 被称为虚数单位。
>>>1+2j # 1+2j表示实部为1,虚部为2的复数
(1+2j)
>>>(1+2j)+(1+2j) # 两个复数相加
(2+4j)
>>>c = 3 + 4j
>>>type(c)
Python中的布尔类型bool,是整数类型int的子类,它只有两个值:True和False。任何类型的数据都可以通过bool()函数转换为布尔值,那些被认为“没有的”“空的”值会被转换为False,反之转换为True。
>>>bool(0) # 整数0被转换为False
False
>>>bool(2) # 其他非零整数被转换为True
True
>>>bool('') # 空字符串被转换为False
False
>>>bool(' ') # 其他非空字符串被转换为True
True
>>>bool([]) # [](空列表)被转换为False
False
>>>bool({}) # {}(空字典)被转换为False
False
在Python的数字类型中,除复数外,其他三种数字类型如整数、浮点和布尔都可以相互转换,分为隐式类型的转换和显式类型的转换。
数字之间可以进行数学计算,在进行数学计算时若数字类型不同, 则会发生隐式类型的转换。
>>>a = 1 + True
>>>a # 布尔类型True被转换为整数类型
2
>>>a = 1.0 + 1
>>>a # 整数1被转换为浮点数
2.0
>>>a = 1.0 + 1 +True # 布尔类型和整数类型均被转换为浮点类型
>>>a
3.0
当我们遇到想要将浮点数转换为整数这样的情况时,就需要用到显示类型的转换。除复数外,三种数字类型如整数、浮点和布尔都有自己的转换函数,分别是int()、float()和bool()函数。
>>>a = (1.0) + 1
>>>a
2.0
>>>int(False)
0
>>>int(True)
1
>>>int(0.6)
0
>>>float(5)
5.0
>>>float(False)
0.0
>>>float(True)
1.0
算术运算符用于组织整数类型和浮点类型的数据,有一元运算符和二元运算符之分。 一元算术运算符有两个:+(正号)和-(负号),例如:+a还是a ,-a是对a的取反运算。
二元算术运算符如下表所示。
>>>a = 1
>>>a
1
>>>-a
-1
>>>1+1
2
>>>2-1
1
>>>2*3
6
>>>3/2
1.5
>>>3%2
1
>>>3//2
1
>>>-3//2
-2
>>>10*2
20
>>>10.2+10
20.2
>>>1.0+True+1
3.0
比较运算符用于比较两个表达式的大小,其结果是布尔类型的数据 ,即True或False。比较运算符可用于任意类型的数据,但参与比较的两种类型的数据要相互兼容,即可以进行隐式转换,例如:整数、浮点和布尔这三种类型是相互兼容的。
>>>a = 1
>>>b = 2
>>>a>b
False
>>>1.0==1 # 浮点数和整数都可以进行比较
True
>>>1.0!=1
False
>>>a='hello'
>>>b='hello'
>>>a==b
True
>>>a='World'
>>>a>b # 比较字符串的大小,即注意比较字符Unicode编码的大小,如果两个字符串的第1个字符不能比较出大小,那么比较第二个字符串,直到比较有了结果才结束比较
True
逻辑运算符用于对布尔型变量进行运算,其结果也是布尔型。
>>>a=1
>>>b=0
>>>def f1(): # 定义一个函数f1(),函数的内容在后面介绍
print('--进入函数f1--')
return True
>>>(a>b) or f1() # 表达式(a>b)为True,结果确定为True,f1()不会被调用
True
>>>(a>>(a>>(a>b) and f1() # 表达式(a>b)为True,结果不确定,f1()函数会被调用
--进入函数f1--
True
位运算是以二进位(bit)为单位进行运算的,操作数和结果都是整数类型的数据。
>>>a = 0b10110010 # 十进制数178
>>>b = 0b01011110 # 十进制数94
>>>a | b # a和b按位进行或运算,只要有一位为1,这一位就为1,否则为0
254
>>>a & b # a与b按位继续宁与运算,只有两位全部为1,这一位才为1,否则为0
18
>>>a ^ b # a与b进行异或运算,只有两位相反时这一位才为1,否则为0
236
>>>~a
-179
>>>a>>2 # 二进制数右移两位
44
>>>c=-20
>>>~c
19 # 位反运算的计算,记住公式~x=-(x+1)
首先要明白二进制在计算机的内存中是以补码的形式存储的。正数的补码=原码=反码,负数的反码=原码的取反(二进制的符号位除外,一般来说在二进制的左边的最高位)负数的补码=反码+1
注意:若已知补码为11111000,如何求其原码呢?
方法1:注意:符号位不变!
先减1,得到11110111,取反(符号位保持不变,其他位置按位取反),得到10001000
方法2:注意:保持符号位不变!
将这个二进制数除了符号位,其余位置取反,得10000111,接着加1,得到10001000
总结:减1后再取反和取反后再加1效果是一样的。
按位取反(二进制的每一位都取反包括符号位和数据位)的计算方法有两种:
方法1:公式法:~x=-(x+1)
比如:~11=-(11+1)=-12
方法2:以~11为例:
(1)计算11的补码
转二进制:01011
计算补码:01011(正数的补码=原码)
(2)按位取反(按位取反是在这里进行的,即补码的形式进行按位取反)得到10100
(3)将其转为原码
取其反码(因为补码为负数):11011,末位加1,得11100
(4)符号位为1是负数,即-12
以~(-11)为例:
(1)计算-11的补码
转二进制:11011
计算补码:10101(负数的补码=原码取反+1)
(2)按位取反(按位取反是在这里进行的,即补码的形式进行按位取反)得到01010
(3)将其转为原码
因为补码为正数,原码就是补码:01010
(4)符号位为0是正数,即10
程序代码中的运算符与数学中的运算符都是有优先级的,并且基本一致,但是有的运算符在数学中并不存在。具体优先级看下面的表格,表格中从上到下优先级依次降低,同一行有相同的优先级。优先级从高到低大体是:算术运算符>位运算符>关系运算符>逻辑运算符>赋值运算符。
>>>1-2*2
-3
>>>a=0b10110010
>>>b=0b01011110
>>>c=0b11
>>>a | b & c # &优先级高于|,先计算b&c,其结果为2,然后计算a|2,最后结果为178
178
Python中没有switch语句,设计理念简单、刚好够用。
score=int(input("请输入一个0~100的整数:"))
if score>=85:
print("您真优秀!")
if score<60:
print("您需要加倍努力!")
if (score>=60) and (score<85):
print("您的成绩还可以,仍需继续努力!")
score=int(input("请输入一个0~100的整数:"))
if score>=60:
if score>=85:
print("您真优秀!")
else:
print("您的成绩还可以,仍需继续努力!")
else:
print("您需要加倍努力!")
score=int(input("请输入一个0~100的整数:"))
if score>=90:
grade='A'
elif score>=80:
grade='B'
elif score>=70:
grade='C'
elif score>=60:
grade='D'
else:
grade='D'
print("Grade="+grade)
Python支持两种循环语句:while和for。
先判断循环条件,若条件为True则执行循环。
i=0
while i*i<1000:
i+=1
print("i="+str(i))
print("i*i="+str(i*i))
Python中while语句还可以带有else子语句,else子语句是在循环体正常结束时才执行的语句,当循环体被中断时不执行,当遇到break、return和有异常发生时都会中断循环。
输入
i=0
while i*i<10:
i+=1
print(str(i)+'*'+str(i)+' =',i*i)# str()函数可以将其他数据类型转换为字符串
else:
print('While Over!')
输出
1*1 = 1
2*2 = 4
3*3 = 9
4*4 = 16
While Over!
如果将上述代码修改成下面的
i=0
while i*i<10:
i+=1
if i==3:
break
print(str(i)+'*'+str(i)+' =',i*i)# str()函数可以将其他数据类型转换为字符串
else:
print('While Over!')
输出
1*1 = 1
2*2 = 4# while循环被中断,不会执行else语句
Python中只有一种for语句,即for-in语句,它可以遍历任意可迭代对象中的元素。(可迭代对象包括字符串、列表、元组、集合和字典等)
for语句的一般结构为:
for 变量 in 可迭代对象:
循环体语句组
else:
语句组
for item in 'Hello': # 迭代字符串
print(item)
numbers=[43,32,55,74] # 迭代整数列表
for item in numbers:
print(item)
for语句中的else子语句和while中的else子语句作用是一样的,在循环体正常结束时才执行else语句,当循环体被中断时不执行,当遇到break、return和有异常发生时都会中断循环。
输入
for item in range(10):
print(item)
else:
print('For Over!')
输出
0
1
2
3
4
5
6
7
8
9
For Over!
如果将上述代码修改成下面的
for item in range(10):
if item==3:
break
print(item)
else:
print('For Over!')
输出
0
1
2
跳转语句能够改变程序的执行顺序,包括break、continue和return。 break和continue用于循环体中,而return用于函数中。这里先介绍break和continue语句,对于return语句,将在后面的内容中介绍。
break语句用于强行退出循环体,不再执行循环体中剩余的语句。
for item in range(10):
if item==3:
break # 跳出循环
print(item)
else:
print('For Over!')
输出
0
1
2
continue语句用于结束本次循环,跳过循环体中尚未执行的语句, 接着进行终止条件的判断,以决定是否继续循环。
for item in range(10):
if item==3:
continue # 当item==3时执行continue语句,终止本次循环,循环体中continue之后的语句不再执行,接着进行下次循环
print(item)
else:
print('For Over!')
输出
0
1
2
4
5
6
7
8
9
For Over!