一.PyCharm的一些常用快捷键
ctrl+/ ——添加或者取消一行注释,任何语言通用
ctrl+s——保存
crtl+c——复制
crtl+v——粘贴
crtl+x——剪贴
crtl+n——跳转到类
crtl+f——搜索
crtl+r——搜索+替换
crtl+z——撤销
crtl+shift+z ——反撤销
crtl+a——全选
ctrl+tab——在窗口间进行切换
ctrl+shift+f10——运行编辑器配置
shift+鼠标——选中指定范围
tab——补全代码
二.Python的基础语法
- 注释:是程序中专门用来注释说明的文字,不会参与程序的编译和执行。对程序的功能没有任何影响。
- 单行注释:在说明型文字前面加#。
- 多行注释:使用三个单引号(''')或者三个双引号(""")括起来,来设置多行注释。但是一般使用三个双引号。
- 注意事项:程序中涉及到所有与语法相关的符号,都是在英文输入法下对应的符号。
- 标识符:标识符就是专门用来命名的。给变量命名、函数命名、类命名等。要求:python中的标识符要求是由数字、字母、下划线组成,并且数字不能开头。注意,在python3.x,标识符中可以包含非ASCII码字符(非ASCII码包含中文、日文、韩文、拉丁等)。但是在实际开发的时候不要用。
num = 100
_jj = 88
# 1nn = 99 # SyntaxError: invalid syntax
圣者遗物 = 3800
# n-m = 998 # SyntaxError: can't assign to operator
- 行与缩进:python中对代码缩进有严格要求。同一级代码前面的缩进(空格/tab)的个数必须一致。行的规范:要求声明函数和类的前后需要有两个空行。
-
分段(行)显示:一句代码很长,需要多行来显示的时候,可以在需要换行的位置加
注意:加\的时候不能将一个数据,一个变量名给拆开
num = 10000 + 88888 +7891329 +\
319826391 + 998
如果代码是列表、元组、字典、集合的字面量,可以直接换行,不用加\
list1 = [12,
23,
'ddf',
'dyf']
-
一行显示多条语句:一行显示一条语句的时候,后面不用加分号;但是如果希望在一行显示多条语句,那么多条语句之间必须加分号。
print('ddf');print('dyf')
-
关键字(保留字):python中已经定义好的有特殊功能或者特殊意义的一些标识符,就是python的关键字。
命名的时候不能使用关键字。
关键字有:
'False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class',
'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for',
'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal',
'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield'
import keyword #导入keyword模块
print(keyword.kwlist) #打印python中所有的关键字
#and = 100 #SyntaxError: invalid syntax
- print函数和input函数
-
print函数
(掌握)
print(内容)- 在控制台中打印内容(内容必须是python数据)。
print(内容1,内容2,...,内容n) - 在一行打印n个内容,在控制台显示的时候n个内容之间用空格隔开。
默认情况下,一个print中的内容占一行(以换行结束)。一个print中的多个内容用空格隔开。
(了解)
print(内容,内容2,...,内容n,end='换行标志')
print(内容,内容2,...,内容n,sep='分割标志')
print('打印1') #打印1
print(100) #100
print('ddf','dyf',998) #ddf dyf 998
print('打印1',end='==')
print(100) #打印1==100
print('ddf','dyf',998,sep='@') #ddf@dyf@998
print('ddf','dyf',998,sep='') #ddfdyf998
-
input函数
input()-从控制台输入一串内容,以回车结束,并且将内容返回(以字符串的形式返回)
input('提示信息')
注意:程序执行到input的时候,程序会停下来,直到输入完成为止。
print(input('请输入:'))
三.Python常用数据类型
- python中常用的数据类型有:整型(int)、浮点型(float)、布尔(bool)、复数(complex)、字符串、列表、字典、元组、集合、函数等...
-
常见数据类型的字面量(常量)
整型:100,23,-998 —— 所有的整数,包括正负。
浮点型:9.9,45.0,-0.31415 —— 所有的小数,包括正负。
布尔:True,False —— 只有两个值。
字符串:'abc',"ddf",'uwqyeiqh_+_+' —— 用双引号或者单引号括起来的内容。
列表:[12,'ddf',True]。
元组:(23,'dyf',9.998)。
字典:{'ab':120,18:'agb'}。 - 数字相关类型
- python中和数字相关的类型:整型、浮点型、布尔、复数(虚数)
- 整型(int):整数对应的类型,包含所有的整数。python3.x中整数对应的类型只有一个:int。
python2.x中整数对应的类型有:int和long。
python中的整数,除了可以用十进制表示,还可以用二进制、八进制和十六进制进行表示。 - 浮点型(float):小数对应的类型,包含了所有小数。
支持科学计数法。
print(2e4) # 20000.0
- 布尔(bool):只有True和False,其中True表示真,False表示假。True实质就是数字1,False实质是数字0。
True和False都是关键字。
print(1+True,1+False) #2 1
- 复数(complex):表示所有的虚数对应的类型。
数字后面加j,来表示复数的虚部。实部就是普通是数字。
- 整型(int):整数对应的类型,包含所有的整数。python3.x中整数对应的类型只有一个:int。
print((10+1j)+(20-9j)) #(30-8j)
print(9j,10j) #9j 10j
-
type函数
type(数据) ——获取数据相应的类型
print(type(8j)),print(type(12.999))
#<class 'complex'>
#<class 'float'>
-
isinstance函数
isinstance(数据,类型) ——判断指定的数据是否是指定的类型,结果是布尔值。
isinstance(100,float) #判断100是不是float型
print(isinstance(100,float)) #False
print(isinstance(100,int)) #True
-
类型的强制转换
类型名(数据) - 将指定数据转换成指定类型
整型转换成浮点型:在整数的后面加.0 float()
浮点型转换成整型:只保留小数点前面的整数部分 int()
其他类型转换成布尔:0会转换成False,其他的转换成True bool()
复数不能转成整型或者浮点型,可以转换成布尔(不管什么数据都可以转换成布尔)
print(int(12.8)) #12
print(int(True)) #1
print(float(998)) #998.0
print(float(False)) #0.0
print(bool(0),bool(3e8)) #False True
print(bool(0.00)) #False
print(complex(998),complex(True),complex(-0.8)) #(998+0j) (1+0j) (-0.8+0j)
print(bool(10+8j)) #True
#print(int(7+9j))#can't convert complex to int
四.进制
- 加法从低位开始相加
- 十进制
a.基数:0,1,2,3,4,5,6,7,8,9
b.进位:逢10进1
c.位权:123=100+20+3=1*10^2+2*10^1+3*10^0 (10^n)
d.表示:所有的数字都是10进制数(数字直接写)
- 二进制
a.基数:0,1
b.进位:逢2进1
1+1=10
110+011=1001
101+110=1011
100-011=011
c.位权:1101(2)=1*2^0+0*2^1+1*2^2+1*2^3=13 (2^n)
d.表示:在二进制数前加前缀:0b或者0B
- 八进制
a.基数:0,1,2,3,4,5,6,7
b.进位:逢8进1
c.位权:123(8)=3*8^0+2*8^1+1*8^2=83 (8^n)
d.表示:在八进制数前加前缀:0o或者0O
- 十六进制
a.基数:0,1,2,3,4,5,6,7,8,9,A(10),B(11),C(12),D(13),E(14),F(15)
字母大小写都可以
b.进位:逢16进1
c.位权:123(16)=3*16^0+2*16^1+1*16^2=291 (16^n)
d.表示:在十六进制数前加前缀:0x或者0X
- 其他进制和十进制之间的转换
a.其他进制转十进制:每一位上的数*权值,然后再求和
110(2)=0*2^0+1*2^1+1*2^2=6
110(8)=0*8^0+1*8^1+1*8^2=72
110(16)=0*16^0+1*16^1+1*16^2=272
b.将十进制转换成其他进制
100=1100100(2)
100=144(8)
100=64(16)
- 二进制和八进制、十六进制的相互转换
a.二进制转八进制:每3位的二进制转换成1位的八进制
1100100110010011100(2)=1446234(8)
八进制转二进制:每1位八进制转换成3位二进制
6745(8)=110 111 100 101
b.二进制转十六进制:每4位的二进制转换成1位的十六进制
1100100110010011100(2)=64c9c(16)
十六进制转二进制:每1位的十六进制转换成4位的二进制
6745(16)=0110 0111 0100 0101(2)
a12(16)=1010 0001 0010(2)
- 进制转换相应的函数 - 返回值是字符串
bin(数字) - 将数字转换成2进制
print(bin(100),bin(0xff),bin(0o76))#0b1100100 0b11111111 0b111110
oct(数字) - 将数字转换成8进制
print(oct(100),oct(0x1af),oct(0b110001101))#0o144 0o657 0o615
hex(数字) - 将数字转换成16进制
print(hex(0b11111111),hex(100),hex(0o67))#0xff 0x64 0x37
所有进制最后会自动转换成10进制
num = 0xff
print(num) #255
print(0b111+0b110) #13
五.原码、反码和补码
计算机数据的存储
计算机能够直接存储的是二进制数字,并且存的是数字的补码。计算机内存大小单位
位(bit)
1字节 = 8位
1KB = 1024字节
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB原码:符号位+真值 (用最高位表示符号位,后面的其他位表示数字的二进制)
符号位:0 -> 正数,1 -> 负数
真值:数字对应的二进制值
10(原码)=0 0001010
-10(原码)=1 000101反码:
正数的反码和原码一样。负数的反码是符号位不变,其他位上的数取反(0变成1,1变成0)
10(反码)=0 0001010
-10(反码)=1 1110101补码:
正数的补码和原码一样。负数的补码就是反码加1
10(补码)=0 0001010
-10(补码)=1 1110110
注意:数据存储和运算的时候采用的是补码。看结果看的是原码。
计算机只有加法器或者乘法器。
以3+2为例来了解计算机计算
3:0011
2:0010
3+2=0101=5
原码:
3-2=3+(-2)=1101=-5
3:0011
-2:1010
补码:
3(补)=0011
-2(补)=1101(反)=1110(补)
0011(补)+1110(补)=0001(补)=0001(原)=1#最高位符号数进位则舍弃
2:0010(原)=0010(补)
-3:1011(原)=1100(反)=1101(补)
2-3=1111(补)=1110(反)=1001(原)=-1