本文章内容的python版本默认为python3.x
1、注释
注释包括单行注释,多行注释,中文声明注释
1.1、单行注释
注释内容从#号到换行为止结束
语法格式:
# 注释内容
注释格式:
第一种
#请输入你的年龄
age=int(input("请输入你的年龄"))
第二种
age=int(input("请输入你的年龄")) #请输入你的年龄
1.2、多行注释
在python中没有一个单独的多行注释标记,而是将注释内容包含在一对(’’’…’’’’)或者("""…""")
语法格式:
'''
注释内容1
注释内容2
......
'''
或者
"""
注释内容1
注释内容2
......
"""
当然可以利用单行注释实现多行注释,如
#注释内容1
#注释内容2
#....
1.3、中文编码声明注释
在python编写时,如果要指定字符编码,那么就需要在文件开头加上中文编码声明注释,来指定我们所需要的字符编码类型的中文编码,可以避免输出乱码
语法格式:
#-*- coding:编码-*-
或者
# coding=编码
如
# coding=utf-8
值得注意的是,上面代码中的-*-是为了美观才加上的,没有任务特殊作用,故也可写为 # coding:编码
2、代码缩进
python中使用代码缩进来区分代码的层次感,这点与c等一些语言不一样。
缩进可以使用空格键或者tap键,通常一个缩进量默认为为4个空格(可以修改),一个tap键为4个空格,不过,建议使用空格进行缩进。
注意:python中对代码缩进的要求非常严格,同一个级别的代码块的缩进量必须是相同的,否则将出现语法错误(SyntaxError)
3、代码规范
3.1、编写规则
pthon采用的是PEP8的编码规范,PEP是python Enhancement Proposal的缩写,8为版本
使用import进行导入模块时,注意,一次只导入一个模块。
推荐写法:
import os
import request
不推荐写法:
import os , request
不要在行尾添加“;”,也不用将2条命令放在同一行,然后用“;”隔开。python中换行代表中一个语句的结束。
建议每行不超过80个字,如果超过用()连接,不推荐""
如,推荐
print("是多少级看过的力合股份客户广泛空间看过空间看过很快就卡。"
"夫卡的风格看看吃饭大概开发地方")
不推荐
print("是多少级看过的力合股份客户广泛空间看过空间看过很快就卡。\
"夫卡的风格看看吃饭大概开发地方")
特殊情况除外
1.导入模块语句过长
2.注释里的URL
可以使用空行增加代码的可读性,如·在定义方法之间空一行等等。
3.2.命名规范
1、模块名尽量短小,且全部小写,可以使用下划线,如
game_age
2、包名尽量短小,且全部小写,不推荐使用下划线,如
com.book
3、类名采用单词首写字母大即是Pascal风格。如
BorrowBook
4、内部模块采用下划线加Pascal风格命名,如
_BorrowBook
5、函数、类的属性和方法的命令规则和模块类似
6、常量命名时全部大写,使用可以使用下划线
注意:
使用单下划线开头的模块变量或函数是受保护的,在使用import*from语句从模块中不能导入。
使用双下划线开头的实例变量或方法是类私有的。
4、基本的输入与输出
4.1、print()函数
print()基础语法:
print("输出内容")
注意print()语句输出后会自动换行,如果要一次输出多个内容,且不换行,可以用英文的半角逗号进行分开。如
print("a","b")
输出结果为a b
输出时间
如
import datetime # 调用时间模块datetime
d=datetime.datetime.now()
print(d) # 输出当前日期和时间
print(d.strftime('%Y-%m-%d %H:%M:%S')) # 按格式输出当前时间
print(d.strftime('%I:%M %p'))
print()不仅仅可以输出内容到屏幕还可以输出到指定文件
如
fp = open(r'F:\my.txt','a+') # 打开文件,如果没有该文件将自动创建文件
print("hello world",file=fp) # 输出到文件中
fp.close() # 关闭文件
4.2、input()函数
作用:input()在python中可以用来接收用户键盘输入的内容
如:
b = input("输入字符:")
print(b+"的ASCII码为",ord(b))
输出结果为:
输入字符:b # b为我们输入的字符
b的ASCII码为 98
例子:根据输入的年份计算年龄
import datetime # 调入时间模块datetime
imyear = input("请输入你的出生年份") # 输入四位数的出生年份
nowyear = datetime.datetime.now().year # 获取当前的年份
age = int(nowyear) - int(imyear) # 计算年龄
print("你的年龄为"+str(age))
注意判断一个变量的类型可以使用type()函数
例子:查单个字符的ACSII码器
b = 12
while b>0:
a = input("请输入字符:")
print(a + "的ASCII码为", +ord(a))
5、保留字与标识符
5.1、保留字
保留字就是被赋予特定意义的一些单词,这些单词不能被当作变量、函数、类、模块和其他对象的名称来使用(否则会报invalid syntax错误),python中保留字是区分大小写的,
python中的保留字,这边全部列出
and | as | assert | break | class |
continue | def | del | elif | except |
finally | for | from | False | global |
if | import | in | is | lambda |
nonlocal | or | pass | raise | return |
try | True | while | with | yield |
当然如果我们忘记了也不用紧,可以通过2行代码查看保留字
import keyword
print(keyword.kwlist)
5.2、标识符
简单说标识符就是一个名字,用来识别变量、函数、类、模块和其他对象的名称。
命名规则
1、由字母、下划线和数字组成,并且第一个字母不能是数字。目前python中只允许使用ISO-Latin字符集中的字符A-Z和a~z.
2、不能使用Python中的保留字
例如,合法标识符
USSSS
name
name123
name_age
不合法标识符
4name # 不能以数字开头
if # 不能以保留字当作标识符
$name # 不能使用特殊字符 空格、$、@、%等
3、区分字母大小写
4、以下划线开头的标识符具有特殊意义,要避免使用类似的标识符
以单下划线开头的标识符表示不能直接访问的类的属性,也不能太过from xxx import *导入
以双下划线开头的标识符表示类的私有成员
以双下划线开头和结尾的标识符是python中专用的标识,如__int__()表示构造函数
5、尽量避免使用汉字作为标识符,尽管这是被允许的。
6、变量
6.1、变量的命名规则与语法格式
变量的命名规则
1、变量名必须是一个有效的标识符
2、变量名不能使用python中的保留字
3、慎用小写字母 l 和大写字母O
4、应该选择有意义的单词作为变量名
语法格式
变量名 = value #变量赋值
如
name = 12 # 创建变量name并赋值为12,类型为int
name = "John" # 创建变量name并赋值为John,类型为str
注意,python中允许多个变量指向同一个值,但是他们对于的内存地址是否相同呢同,我们可以是内置函数id()来查看
例如
a = 2014
b = 2014
print("a的地址为",+id(a))
print("b的地址为",+id(b))
输出
a的地址为 2316677533424
b的地址为 2316677533424
7、基本数据类型
7.1、数字类型
1、整数
整数包括,十进制、八进制、十六进制
十进制不能以0开头
八进制在python3.x中必须以0o或0O开头,python2.x可以以0开头
十六进制必须以0x或0X开头
2、浮点数
浮点数表现形式,如2.7e2(科学计数法),1.1414
值得注意的是在使用浮点数进行计算时,可能会出现小数位数不确定的情况,如
a = 0.2
b = 0.1
c= a + b
print(c)
我们觉得输出0.3,但是实际输出0.30000000000000004,
所有语言都有这个问题,可以忽略对于的小数位
3、复数
在python中复数与数学中的复数在形式上完全一样
7.2、字符串类型
在python中字符串属于不可变序列
通常用单引号,双引号,三引号括起来。其中三引号内的字符序列可以分布在连续的多行中,而单引号,双引号内的字符序列必须在一行中。
注意如果需要表示复杂的字符串时可以进行引号的嵌套
如;
print(''''___' "_"***''')
输出
'___' "_"***
python中的字符串还支持转义字符
常见的转义字符如下表
\ | 续行符 |
\n | 换行符 |
\r | 回车符 |
\0 | 空 |
\t | 水平制表,用于横向跳到下一制表位 |
\ " | 双引号 |
\ ’ | 单引号 |
\ | 一个反斜杠 |
\f | 换页 |
\0dd | 八进制数,dd表示字符,如\012代表换行 |
\xhh | 十六进制,hh表示字符,如\x0a代表换行 |
注意在字符串定界符引号的前面加上R或r,将无视转义字符的存在。
如
print(r"hello\nworld")
print("hello\nworld")
输出
hello\nworld
hello
world
7.3、布尔类型
标识符True和False为布尔类型
True表示1,False表示0
注意布尔类型可以进行运算但是不建议进行运算
在python中所有对象都可以进行真假测试,只有以下几种情况为假其他都为真。
1、False或None
2、数值中的零,包括0、0.0、序数0
3、空序列,包括字符串,空元组、空列表、空字典
4、自定义对象的实例,对象的__bool__方法返回False或者__len__方法返回0.
7.4、数据类型转换
python是动态类型语言(也就是弱类型语言),不需要先声明变量类型,但在对变量进行操作时可能用到类型转换。
常用的类型转换函数
函数 | 作用 |
int(x) | 将x转为整型 |
float(x) | 将x转为浮点型 |
complex(real[,imag]) | 创建一个复数 |
str(x) | 将x转为字符串 |
repr(x) | 将x转为表达式字符型 |
eval(str) | 计算在字符串中的有效的python表达式,并返回一个对象 |
chr(x) | 将整数x转为字符 |
ord(x) | 将一个字符返回其所对应的整数值 |
hex(x) | 将一个整数转化为一个16进制字符串 |
oct(x) | 将一个整数转化为一个8进制字符串 |
8、运算符
8.1、算术运算符
加(+)、减(-)、乘(*)、除(/)、取余数(%)、取整除(//)、幂(**)
注意
1、在%中如果除数(第二个操作数)是负数,那么得到的结果也是负数
2、使用/或//时,除数不能为0,不然会出现错误
3、在python2.x中/符号计算的结果为整数,而在python3.x中为浮点数,如
3/2,在python2.x中为1,在在python3.x中为1.5
8.2、赋值运算符
常见的赋值运算符有=、+=、-=、*=、/=、%=、**=、//=等
在使用时,就是把=号右边的值赋值给左边的变量,也可以进行某些运算后再赋值给左边的变量。
如x-=y,就是等于x=x-y,
例子如下
x = 1
y = 2
x -= y
print(x)
输出x=-1
8.3、比较(关系运算符)
对表达式或者变量的结果进行大小、真假等比较,如果比较结果为真返回True,否则为False
比较运算符有:
>、 < 、==、!=、>=、<=
如果要判断一个变量是否在一个范围内可以使用 “ 值1<变量a<值2 ”
8.4、逻辑运算符
主要包括 and(逻辑与) or(逻辑或) not(逻辑非)
and和or 的结合方向是从左到右
not的不一样是从右到左
8.5、位运算符
位运算符是对二进制进行计算的,所以需要把要执行的数据转化为二进制数,然后再进行位操作。
python中位运算符有位与(&)、位或(|)、位异或(^)、位取反(~)、位左移(<<)、位右移(>>),
位运算符名称 | 算法 |
位与(&) | 2个二进制数的对位都为1时才为1,否则为0 ,若2个操作数精度不同,则结果的精度与精度高的操作数相同 |
位或 | 2个二进制数的对位都为0时才为0,否则为1,若2个操作数精度不同,则结果的精度与精度高的操作数相同 |
位异或(^) | 2个二进制数的对位相同时才为0,否则为1 ,若2个操作数精度不同,则结果的精度与精度高的操作数相同 |
位取反(~) | 操作数中的1改为0,0改为1 |
位左移(<<) | 将一个二进制操作数左移指定的位数,左边(高位段)溢出的位丢低,右边(低位段)的空位用0补充,位左移运算相当于乘以2的n次幂 |
右移(>>) | 将一个二进制操作数右移指定的位数,右边(低位段)溢出的位用丢低,而在左边(高位段)的空位补充时,如果最高位为0,则在左侧补0,否则补1。位右移运算相当于除以2的n次幂 |
注意:
由于移位运算符运算速度很快,所有在程序中遇到表达式乘以或除以2的n次幂时可以用移位运算符来代替
8.6、运算符的优先级
python中运算符的运算规则是,优先级高的先执行,低的后执行,同一级的按从左往右进行操作。当然如果有括号,括号内的运算最先执行。在编写程序时尽量使用括号()来限定运算次序,以免运算次序出错
运算符的优先级(从高到低)
类型 |
** |
~、+、- |
*、/、%、// |
+、- |
<<、>> |
^ |
位或 |
<、<=、>>、=!、=、==(比较运算符) |
9、流程控制语句
9.1、选择语句
1、最简单的if语句
语法结构如下:
if 表达式:
语句块
注意在python中,当表达式的值为非零或者非空的字符串时。if语句也认为是条件成立(为真值)
2、if…else语句
语法结构如下:
if 表达式:
语句块1
else:
语句块2
技巧:
if…else语句可以使用条件语句进行简化,如
a = 1
if a > 0:
b =a
else:
b = -a
print(b)
可以简化为(就是使用条件表达式)
a = 1
b = a if a > 0 else -a
print(b)
3、if…elif…else语句
语法结构
if 表达式1:
语句块1
elif 表达式2:
语句块2
elif 表达式3:
语句块3
...
else:
语句块n
注意:if与elif都需要进行判断真假,而else不需要判断;else和elif都需要与if一起使用,不能单独使用
4、if语句的嵌套
if选择语句可以有多种嵌套方式,根据需要灵活运用。
如
if 表达式1:
if 表达式2:
语句块1
else:
语句块2
9.2、循环语句
循环体就是一组被重复执行的语句。
1、whie循环
while循环结构
while 条件表达式:
循环体
值得注意的是Python不支持do〜while语法、while(无限循环)和break组合起来替换 do ~ while
如
n = 0
while True: #无限循环...
print n
n += 1
if n == 10:
break #结束循环
2、for循环
for循环结构
for 迭代变量 in 对象:
循环体
如:
print("技术1+2+3+...+100结果为:")
result = 0
for i in range(101):
result += i
print(result)
对range()这个函数进行简单的说明
range(start,end,step)
start为计数的起始值,可以省略,省略就从0开始
end为计数的结束值,但是不包括该值,如range(5),会输出0,1,2,3,4,不可省略
step为计数的步长,就是2个参数之间的间隔,可以省略,省略就默认为1
小技巧
在python3.x中,如果让print语句输出的内容在一行上可以使用下面这个语句
print(result,end=' 分隔符 ')
for语句不仅可以循环数值,还可以逐个遍历字符串。
当然可以进行循环嵌套
9.3、跳转语句和pass空语句
1.break语句
break语句通常会结合if语句使用,在某种条件下跳出循环。如果是嵌套循环,那么break语句将跳出最内层的循环
如while语句中使用break语句
while 条件表达式1:
执行代码
if 条件表达式2:
break
for语句中使用break语句
for 迭代变量 in 变量
if 条件表达式:
break
2.continue语句
break语句通常会结合if语句使用,在某种条件下跳出当次循环,进行下一次循环。如果是嵌套循环,那么break语句将跳出最内层的当次循环
如while语句中使用break语句
while 条件表达式1:
执行代码
if 条件表达式2:
continue
for语句中使用break语句
for 迭代变量 in 变量
if 条件表达式:
continue
3、pass空语句
不做任何事,一般起到占位作用,为得是方便以后进行处理
for 迭代变量 in 变量
if 条件表达式:
语句块
else:
pass
10、数字运算类内置函数
函数名 | 作用 |
abs(x) | 求绝对值,参数可以是整数,也可以是复数,复数就输出复数的模 |
oct(x) | 将一个数字转为8进制字符串 |
hex(x) | 将一个数字转为16进制字符串 |
chr(x) | 返回整数x对应的ASCII的字符 |
ord(x) | 返回x对应的ASCII的值 |
complex([real[,image]]) | 创建一个复数 |
divmod(a,b) | 分别取商和余数,整数和浮点数都可以 |
float(x) | 将x转化为浮点数,如果没有参数返回0.0 |
int([x[,base]]) | 将x转化为int型,base为进制 |
long([x[,base]]) | 将x转化为long型,base为进制 |
pow(x,y[,z]) | 返回x的y次幂 |
range(strat,stop[,step]) | 产生一个序列,默认从零开始 |
round(x[,n]) | 四舍五如=入 |
sum(iterable[,start]) | 对集合求和 |
bin(x) | 将整数x转化为二进制字符串 |
bool([x]) | 将x转化为布尔类型 |