1、常用快捷键
- 添加或取消一行注释:ctrl+/(通用)
- ctrl+s 保存
- ctrl+n 新建
- ctrl+f 搜索
- ctrl+r 搜索替换
- ctrl+z 撤销
- ctrl+shift+z 反撤销
- ctrl+a ctrl+c trl+v
- ctrl+d 复制上一行代码到下一行
- tab 补充代码
程序中涉及到的所有的和语法相关的符号,都是英文输入法下对应的符号
print是python内置函数,在控制台打印括号中的内容
引号是字符串的标志
print("Hello world!")
print('Hello Hello Hello')
运行结果:
2、python基础语法
2.1注释
- 注释是程序中说明文字,不会参与程序的编译和执行,对程序和功能没有任何影响。
- 单行注释:在说明性文字前加#
- 多行注释,3'或3"括起来,来设置多行注释,
一般使用3个"
2.2标识符
- 标识符是专门用来给变量、函数、类等命名的。
要求:
python中的标识符要求是由数字、字母和下划线组成,并且数字不能开头
注意:
1.在python3.x,标识符中可以包含非ASCII码字符,如汉字、日语、韩语、拉丁等。
2.开发时不要使用非ASCII码字符。例:
num = 100
_num = 200
__ = 300
- 1num = 400 错误,不能以数字开头
- n - num = 500 错误,减号也不行,只能是数字、字母和下划线
2.3行与缩进
- python中对代码里面的缩进有严格要求。同一级代码前面的缩进(空格/tab)的个数必须一致,否则报错。
- 用空格或tab都行,一般用tab
- 行的规范:要求声明函数和类的前后需要有两个空行。
2.4分段(行)显示
- 一句代码很长,需要多行显示的时候,可以在需要换行的位置加\,表示前后是一行,后面的行无缩进要求,建议对齐
注意:加\时,不能将一个数据,一个变量名给拆开。
num = 28 + 3333333333333333333\
+ 23333
- 如果代码是列表、元组、字典、集合的字面量,可以直接换行,不用加\
2.5一行显示多条语句
- 一般要求一条语句写一行,如果一行写多条语句它们之间需要加 ;例:
print(1);print(2);print(3)
2.6关键字(保留字)
- python中已经定义好有特殊功能和意义的一些标识符,就是python的关键字,命名时不能使用。
import keyword #导入模块
print(keyword.kwlist) #打印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']
2.7print函数和input函数
- print(内容)--在控制台中打印内容,内容必须是python数据
- print(内容1,内容2)--在一行打印多个内容,显示时它们之间用空格隔开
- 默认情况下,一个print中的内容占一行(以换行结束)。一个print中的多个内容用空格隔开
print(内容1,内容2,...,end='换行标志')
print(内容1,内容2,...,seq='分割标志')
例:
_num = 200
print('a','b',_num,end='------>')
print(1)
print(2)
print('a','b',_num,sep='----->')
输出结果:
- input()--从控制台输入一串内容,以回车结束。并将内容以字符串形式返回
注意:
程序执行到input的时候,程序会停下来,直到输入完成位置。
input('提示信息')--先打印提示信息,后执行input。
例:
def f(x,y):
sum = x + y
return(sum)
l=[]
a = int(input("请输入第一个数字:"))
b = int(input("请输入第二个数字:"))
n = 0
while n < 100:
c = f(a,b)
l.append(c)
a,b = b,c
n = n+1
print(l)
输出:
3.常用数据类型
3.1常见数据类型及其字面量(常量)
- python中常用数据类型有:
整型:100,23,-122,333等,所有的整数
浮点型:12.3,45.0,-0.123456 所有的小数
布尔: True,False 首字母需大写
字符串:'任',"意",'字',"符" 由双引号或单引号括起来的内容
列表: [12,'abc',True]
字典: {key1:value1,key2:value2,key3:value3} {'a':120,'b':110,'c':100}
元组: (12,'abc',True)
集合:
函数;等
3.2数字相关类型
- python中和数字相关的类型:整型、浮点型、布尔、复数(虚数5j+1)
1.整型(int):整数对应的类型,包含所有整数。python3中整数对应的类名只有int,
python2中除了int还有long型
python中的整数,可用十进制、二进制、八进制、十六进制来表示
2.浮点型(float):小数对应的类型,包含了所有的小数。支持科学计数法。
3.布尔(bool):只有两个值True和False,都是关键字,首字母大写,分别表示“真”和“假”。
True实质是数字1,False实质是数字0。
4.复数(complex):表示所有的虚数对应的类型,用“数字+j”表示虚部,实部就是普通数字。
print(2e4) # 2*10^4 = 20000
print(3e-2) # 3*10^-2 = 0.03
print(1+True,1+False) # 2 和 1
print((1+2j)+(2-1j)) # 3-1j
3.3type函数
- type(数据)--获取数据的类型
print(type(666)) # int
3.4isinstance函数
- isinstance(数据,类型)--判断指定的数据是否是指定的类型,结果为bool值。
print(isinstance(100,float)) #判断100是否为浮点型,False
print(isinstance(100,int)) #判断100是否为浮点型,True
3.5类型的强制转换
- 目标类型名(需要转换的数据)--将指定的数据转换成目标类型,所有的类型都可以。
- 浮点型转换成整型:直接去掉小数部分
- 整型转换成浮点型:在整数后加.0
- 其他类型转布尔:bool(),所有的数据都能转成bool值。除了0转换成False,其他全为True。
注意:复数不能转换成整型或浮点型,但能转换成布尔型。
b = int(12.5)
print(b) # 12
print(float(b)) # 12.0
print(bool(b)) # True
print(bool(-b)) # True
print(float(True)) # 1.0
print(complex(10)) # 10+0j
print(complex(-10)) # -10+0j
4.进制
4.1十进制
- 基数:0,1,2,3,4,5,6,7,8,9
- 进位:满10进1
- 位权:123 = 110^2 + 210^1 + 3*10^0 第n位的位权为 (10^(n-1))
- 表示方式:所有的数字都是10进制(数字直接写)
20
33
12
4.2二进制
- 基数:0,1
- 进位:满2进1
- 位权:1101 = 12^3 + 12^2 + 02^1 + 12^0 = 13 第n位的位权为 (2^(n-1))从1开始记位
- 表示方式:在二进制数前加前缀----> 0b或0B
0B110 + 0B011 # 1001
0B1 + 0B1 # 10
0B110 - 0B011 # 011
4.3八进制
- 基数:0,1,2,3,4,5,6,7
- 进位:满8进1
- 位权:123 = 18^2 + 28^1 + 3*8^0 第n位的位权为 (8^(n-1))从1开始记位
- 表示方式:在八进制前加前缀----> 0o或0O 大小写都可以
0o12 + 0o26 #0o40
4.4十六进制
-
基数:0,1,2,3,4,5,6,7,8,9,a(10),b(11),c(12),d(13),e(14),f(15)(A-F) 大小写都可以
进位:满16进1 - 位权:123 = 116^2 + 216^1 + 3*16^0 第n位的位权为 (16^(n-1))从1开始记位
- 表示方式:在十六进制前加前缀----> 0x或0X 大小写都可以
print(0x12a) #结果为10进制数
print(0xabc12)
print(0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff)
4.5其他进制和十进制之间的转换
1.其他进制转十进制:每一位数*权值,再求和
2.十进制转其他进制:累除
4.6二进制和八进制、十六进制互转
1.二进制转八进制:每3位2进制转成1位八进制。
八进制转2进制:每1位八进制转成3位二进制
0b | 001 | 100 | 100 | 110 | 010 | 011 | 100 | = | 0o1446234 |
---|---|---|---|---|---|---|---|---|---|
表示 | 1 | 4 | 4 | 6 | 2 | 3 | 4 |
二进制小数--------------->>>>十进制小数
“按权展开求和法”:
例1:将101.111(2)转换成十进制数
1*(2^2) + 0*(2^1) + 1*(2^0) + 1*(2^(-1)) + 1*(2^(-2)) + 1*(2^(-3))=5.875
只要记住个位数是2的0次方,往右一次增加,往左一次减少,写出关系式之后各式相加就是所求
十进制小数-------------->>>>二进制小数
(十进制数的整数位是二进制数的整数位,十进制数的小数位是二进制数的小数位)
“乘二取整法”(顺序排列):
假如我们有小数111.4(10),我们对他进行一下计算:
首先取小数位0.4,对其进行“乘二取整法”
0.42=0.8 取结果的的整数位置上的数是0 | 按 (取整法就是取整数位上的数字)
0.82=1.6 取1 | 顺
0.62=1.2 取1 | 序
0.22=0.4 取0 | 写
0.42=0.8 取0 | 出
0.82=1.6 取1 |
0.62=1.2 取1 |
0.22=0.4 取0 |
来到这了,我们发现出现了循环,因此可以推知小数点后的二进制是
0.01100110……(循环0110)
接下来是整数111
我们这里用“除以2取余法,逆序排列”
所以整数位是1101111
最终结果是整数位和小数位合并1101111.01100110……(2)
当我们对小数0.1(10) 0.2(10) 0.3(10) 0.4(10) 0.5(10) 0.6(10) 0.7(10) 0.8(10) 0.9(10)
发现只有0.5(10)不会出现循环小数,他转换成二进制是0.1(2)
其余的出现循环的小数
2.二进制转十六进制:每4位2进制转成1位十六进制。
十六进制转2进制:每1位十六进制转成4位二进制
0b | 0110 | 0100 | 1100 | 1001 | 1100 | = | 0x64c9c |
---|---|---|---|---|---|---|---|
表示 | 6 | 4 | c | 9 | c |
0x6745 = 0b0110 0111 0100 0101
0xa12 = 0b1010 0001 0010
3.八进制转十六进制:先转为二进制。
4.7进制转换相应的函数--返回值是字符串
- bin(数字)-- 将其他进制的数转为二进制数
- oct(数字)--将其他进制的数转为八进制数
-
hex(数字)--将其他进制的数转为十六进制
所有进制计算时均会自动转换成十进制
print(bin(0x6745)) #0b110011101000101
print(bin(0o1446234)) #0b1100100110010011100
print(oct(0x6745)) #0o63505
print(hex(0o1446234)) #0x64c9c
5.原码、反码和补码
5.1计算机数据的存储
- 以下值均为二进制
- 计算机能直接存储的是数字,并且存的是数字的补码
5.2计算机内存大小单位
位(bit)
1字节 = 8位
1kb = 1024字节
1mb = 1024kb
1GB = 1024mb
1TB = 1024Gb
5.3原码
- 符号位+真值 (用最高位表示符号位,后面的即为数字的二进制)
符号位: 0 ---> 正,1---> 负
真值: 数字对应的二进制值
10(原码) = 0 000 1010
-10(原码)= 1 000 1010
5.4反码
- 正数的反码和原码一样。负数的反码是符号位不变,其他位上的数取反(0变1,1变0)
10(反码) = 0 000 1010
-10(反码)= 1 111 0101
5.5补码:
- 正数的补码和原码一样。负数的补码是它的反码加1。
10(补码) = 0 000 1010
-10(补码)= 1 111 0110
注意:数据存储和运算的时候采用的是补码。看结果看的是原码。
单片机 只有加法和乘法器
案例:
如果计算机存储的是原码:
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-3
2:0010(原)= 0010(补)
-3:1011(原) = 1100(反)= 1101(补码)
0010(补)+ 1101(补码) = 1111(补码)= 1110(反) = 1001 = -1