python notes:
【内存与进制】
内存单位:
1bit
8bit == 1zj zj -> 字节
1024zj == 1k
1024k == 1M
1024M == 1G
1024G == 1T
进制:二进制、八进制、十进制、十六进制:
二进制:逢二进一
0 1
1 + 1 = 2
八进制:逢八进一
1 2 3 4 5 6 7
1 + 7 = 10
十进制:逢十进一
1 2 3 4 5 6 7 8 9
1 + 9 = 10
十六进制:逢十六进一
1 2 3 4 5 6 7 8 9 a b c d e f
1 + f = 10
进制转换:
进制转换类型:
十进制转二进制
二进制转十进制
八进制转二进制
二进制转 八进制
十六进制转二进制
二进制转十六进制
进制转换方法:
十进制转二进制:
公式:倒除法余数逆序
例如:9
9 ÷ 2 = 4……1
4 ÷ 2 = 2……0
2 ÷ 2 = 1……0
1 ÷ 2 = 0……1
结果:余数倒序即为十进制9的二进制:1001
二进制转十进制:
公式:当前数字(0/1)乘于2的位数次方再相加
例如:1001
1001 -> 1x2^3 + 0x2^2 + 0x2^1 + 1X2^0 =9
8 + 1 = 9
结果:和即为二进制1001的十进制:9
八进制转二进制:
公式:【一转三位】(八进制的一位相当于二进制的三位,计算时按十进制转换,不足三位高位补0)
例如:75(八进制)
7(十进制) = 111(二进制)
5(十进制) = 101(二进制)
结果:和即为八进制75的二进制:111101
二进制转八进制:
公式:【三位一取】从低位获取,每三位得到一个八进制数字,组合即得结果,高位不足则补0
例如:111101
111(二进制) = 7(十进制)
101(二进制) = 5(十进制)
结果:从高位组合 1111101 的二进制:75
十六进制转二进制:
公式:【一转四位】(十六进制的一位相当于二进制的四位,计算时按十进制转换,不足四位高位补0)
例如:75(十六进制)
7(十进制) = 0111(二进制) 不足高位补0
5(十进制) = 0101(二进制) 不足高位补0
结果:从高位组合 75 (十六进制)的二进制:1110101
二进制转十六进制:
公式:【四位一取】从低位获取,每四位得到一个十六进制数字,组合即得结果,高位不足则补0
例如:1110101
0111(二进制) = 7(十进制)
0101(二进制) = 5(十进制)
结果:从高位组合 1110101 的二进制:75
进制转换表:
十进制 二进制 八进制 十六进制
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 5
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 a
11 1011 13 b
12 1100 14 c
13 1101 15 d
14 1110 16 e
15 1111 17 f
16 10000 20 10
17 10001 21 11
18 10010 22 12
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
储存数据:
内存中数据是以二进制的形式储存
1、计算机先开辟空间,再储存数据,计算机开辟的最小空间是字节。
2、在数据储存中用最高位表示符号位,0表示正数,1表示负数。
编程:
注释:
单行注释用:#进行注释
多行注释用:''' ''' 或 """ """ 进行注释,引号内的内容即被注释掉了,单双引号没有区别.
输入:print("hello world !")
注意是print而不是printf,需要与C语言里的printf区分.
可以多个字符串,可以用逗号分隔.例如: print("hello world !","李斌",100)
输出:input()
input即为读取键盘输入变量,可阻塞等待键盘输入.
例如: name = input()
print ("name")
数据类型:计算机储存和处理的数据可以是各种类型,比如:文字、数字、音频、视频等等。所欲需要不同的数据类型变量.
查看数据地址:print(id(变量名))
1、Number数字
整数
浮点型
复数
2、String(字符串)
"shuck is a good man "
'shuck is a good man '
一串字符
3、Boolean(布尔型)
表示真假的值
4、none(空值)
5、list(列表)
6、tuple(元组)
7、dict(字典)
8、set(集合)
标识符:一串字符串,但是字符串未必是标识符。
作用:给变量函数命名.
规则:
1.只能有字母、数字、下划线组成.
2.不能是python的关键字
3.开头不能是数字
4.区分大小写
5.见名知意,写的需要一眼就能看出来什么意思
6.特殊字符串不要用,例如:print input
7.在python 3 中非ASCII标识符也被允许,但是一般不要用
python所有关键字:
'False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', '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'
变量:
概述
1.程序可操作存储区的内容
2.程序运行期间能改变的数据
3.每个人变量都有不同的类型
作用:将不同类型的数据储存到内存中去
定义变量:
变量名 = 数据值
注意:变量在使用前需要先定义,否则会出错。
删除变量:
del 变量名
注意:删除后的变量无法引用
常量:程序运行中不能改变的数据.
1、Number数字
分类:
1.整数
python可以处理任意大小的整数,还包含复数
定义num1 = 10
num2 = num3 = num4 = 10
2.浮点数
浮点数有整数部分和小数部分组成
但在计算时可能有四舍五入的误差产生
3.复数
复数组成包括实数部分和虚数部分
4.数学函数
abs 求绝对值 例如:abs(-2) 求出-2的绝对值
max 求最大值 例如:max(1,2,3,4,5,6) 求出1,2,3,4,5,6中的最大值
min 求最小值 例如:min(1,2,3,4,5,6) 求出1,2,3,4,5,6中的最小值
pow 求次方 例如:pow(2,4) 表示2的4次方
round 四舍五入 例如:round(3.1415926,4) 表示将3.1415926进行四舍五入,并保留四位有效数字,其中 4可以省略
若省略则表示进行四舍五入到整数,计算结果为 3
5.数学模块
import math 导入数学模块 使用数学模块必须先导入数学模块
math.ceil(18.1) 向上取整 结果:19
math.floor(18.1) 向下取整 结果:18
math.modf(18.1) 得到浮点数的小数部分和整数部分 结果:(0.10000000000000142, 18.0)
math.sqrt(5) 开方被开方数不能为负数 结果:2.23606797749979
6.随机数
import random 导入随机数模块 使用随机数函数必须先导入随机数模块
random.choice([12,3,4,5,6,]) 从指定数字中随机输出一个数
randrange([start],[stop],[step]) 在一定范围内随机数出一个数,这个随机数开始于start,结束于stop但不包括stop,每个数字间隔为step若无start默认从0开始若无step指定的基数为1
random.random 在[0,1)之间随机生成一个数
random.uniform(a,b) 在a,b之间随机产一个浮点数
random.shffile(arr) arr = [ , , , , ] 对arr这个数组(序列)随机排序
random.randint(start,stop) 在start-stop之间随机产生一个整数,且包含start和stop
7.三角函数
import math
asin() 反正弦弧度值
atan() 反正切弧度值
acos() 反余弦弧度值
cos() 弧度的余弦值
sin() 弧度的正弦值
tan() 弧度的正切值
cot() 弧度的余切值
radians() 角度转弧度
8.数据类型转换
int(x) 将x转换成一个整数
float(x) 将一个数转换成一个浮点数
运算符与表达式:由变量、常量运算符组成的表达式
阅读表达式:
1.表达式的功能
2.阅读表达式的值
算数运算符与算数运算表达式:
1.算数运算符:
+ - * / % ** //
加 减 乘 除 求余 求幂 取整
功能:进行符号对应算数符号算数运算,不会修改变量的值
值 :相应算数运算的结果
例如:
num1 = 2
num2 = 5
print(num1+num2)
print(num1-num2)
print(num1*num2)
print(num1/num2)
print(num1%num2)
print(num1**num2)
print(num1//num2)
结果:
num1+num2= 7
num1-num2= -3
num1*num2= 10
num1/num2= 0.4
num1%um2= 2
num1**num2= 32
num1//num2= 0
2.赋值运算符和赋值运算表达式:
赋值运算符: =
赋值运算表达式:
格式:变量 = 表达式
功能:计算右侧表达式的值并赋值给=左侧的变量
值 : 赋值结束后变量的值
3.复合运算符:
+= -= *= /= %= **= //=
a +=b -> a=a+b
a -=b -> a=a-b
a *=b -> a=a*b
a /=b -> a=a/b
a %=b -> a=a%b
a **=b -> a=a**b
a //=b -> a=a//b
4.位运算符:
& 按位与运算符:参与运算的两个值,如果两个相应位都为1,这该位结果为1,否则为0 注意:需要用进制进行判断
例如: 7 & 5 换成二进制 111 & 101
111
101
------
101 换成十进制为5 所以7 & 5=5
| 按位或运算符:参与运算的两个值有一个为1,结果为1,否则结果为0
例如: 5|7=7
^ 按位异或运算符:参与运算的两个值相同时结果为1,否则为0
例如: 5^7=5
~ 按位取反运算符:对数据的二进制位进行取反操作,即把1变为0,把0变为1
例如: ~5
<< 左移运算符: 运算数的各二进制全部左移若干位,由<<右侧的数字决定移动的位数
例如: 0000000000000010十进制中的 2
2<<2=8 ->0000000000000010 << 0000000000001000
>> 右移运算符:运算数的各二进制全部右移若干位,由<<右侧的数字决定移动的位数
5.关系运算符与关系运算表达式:
1、if 语句表达式:
使用格式:if~表达式:
~~~~语句 (~表示空格)
if 语句的逻辑:
当程序运行到 if 语句时,首先进行计算表达式的值是否为真,若为真则执行语句
若为假则跳过语句
表达式为假的情况:0 0.0 ''(空字符串) None False
表达式为真的情况:除了上述情况外都为真
2、if else 语句
格式:
if 表达式:
语句1
else:
语句2
逻辑:当程序运行到 if else语句时,判断表达式的值,若为真执行语句1,若为假执行语句2
关系运算符与关系运算表达式:
关系运算符分类: == != > < >= <=
等于 不等于 大于 小于 大于等于 小于等于
格式:表达式1 关系运算符 表达式2
功能:计算表达式1和表达式2的值
值 :如果关系成立,则整个关系运算表达式的值为真
若关系不成立,则整个关系运算表达式的值为假
逻辑运算符:逻辑与、逻辑或、逻辑非
逻辑与:
格式:表达式1 and 表达式2
功能:首先计算表达式1的值,若为真则计算表达式2的值
若表达式1的值为真,表达式2的值为真,则为真
若表达式1的值为真,表达式2的值为假,则为假
若表达式1的值为假,表达式2的值为真,则为假
若表达式1的值为假,表达式2的值为假,则为假
例如:a=1
b=2
if a and b:
print("a,b都为真")
else:
print(" a,b至少一个为假")
逻辑或:
格式:表达式1 or 表达式2
功能:首先计算表达式1的值,若为真则不再计算表达式2的值,直接判断为真
若表达式1的值为假,表达式2的值为假,则为假
若表达式1的值为假,表达式2的值为真,则为真
若表达式1的值为真,表达式2的值为假,则为真
若表达式1的值为真,表达式2的值为真,则为真
例如:
a=1
b=2
if a or b:
print("a,b至少一个为为真")
else:
print(" a,b都为假")
逻辑非:
格式:not 表达式
值 :如果表达式的值为真则逻辑非运算的值为假
如果表达式的值为假则逻辑非运算的值为真
总结:颠倒黑白
例如:
a=1
if not a:
print("a为假")
else:
print("a为真")
成员运算符:
格式:x in seq x not in seq
in:如果在指定的序列中,则返回真
not in:如果不在序列中,则返回假
身份运算符:
格式:obj1 is obj2 obj1 is not obj2
is 判断两个标识符身份表示同一个对象,引用相同返回为真,否则为假
is not 判断两个标识符引用是否为不同对象,不同返回真,否则返回假
运算符的优先级:
** 指数
~ + - 按位取反和医院加减号即正负号
* / % //
+ - 加减号法
<< >>
&
| ^
< > <= >=
== !=
= *= /= %= //= += -= **=
is is not
in not in
字符串:
以单引号或双引号括起来的任意文本,但是引号本身是一种表现形式,不属于字符串的一部分
注意:如果字符串本身带双引号,则外侧不能再用双引号,应用单引号括起来
如果字符串本身带单引号,则外部用双引号括起来
例如:"hello world!"
'hello world'
'hello "world"'
"hello 'world'"
创建字符串:
str1 = 'hello'
str2 = "world"
字符串的拼接:
str3 = str1 + str2
重复字符串:str1 * 3 相当于输出三次str1
通过索引获取字符串中的字符,索引从0开始:
str1 = hello
print(str1[1])
判断字符串中是否存在某些内容:
格式: in not in
例如:str1 = 'hello'
print('ll'in str1)
格式化输出:
%s 格式化字符串
%d 格式化整数
%f 格式化浮点数,可以指定小数后的精度
例如:name = str(input("请输入你的姓名:"))
age = int(input("请输入你的年龄:"))
height = float(input("请输入你的身高:"))
print("%s is %d years old , he is %.2fcm height."%(name,age,height))
注意:%.2d %.2f表示需要的精度
转义字符:
反斜杠 \
单引号 ‘
双引号 “
换行 #\n
多行换行 ''' '''
例如:若要打印#\n 可用print("hello world \\n")
String的内置函数:
1.eval:
原型:eval(*args,**kwargs)
功能:将字符串当成有效的表达式来求值,并返回计算结果
参数:只能是数字的转换,字母的字符串不能进行转换
例如: num1 = "123"
num2 = eval(num2)
print(num1)
print(type(num2))
运行结果:123 <class 'int'>
2.len:
原型:len(string)
功能:返回字符串的长度
参数:
例如:print(len("libin is a good man"))
结果:19
3. lower:
原型:字符串.lower()
功能:将字符串中的大写变成小写,但不改变字符串本身
例如:str1="libin is a good man!"
sht2=str1.lower()
print(str1)
print(sht2)
结果:LiBin is a good man!
libin is a good man!
4.upper:
原型:字符串.upper
功能:将字符串中的小写字母转成大写字母
例如:str1="libin is a good man!"
sht2=str1.lower()
print(str1)
print(sht2)
结果:LiBin is a good man!
libin is a good man!
5.swapcase()
原型:字符串.swapcase()
功能:将字符串中的大写字母变成小写字母,小写字母变成大写字母
例如:str1 = "LiBin is a good man!"
str2 = str1.swapcase()
print(str1)
print(str2)
结果:LiBin is a good man!
lIbIN IS A GOOD MAN!
6.capitalize()
原型:字符串.capitalize()
功能:将字符串中一个字母转成大写,其余字母转成小写
例如:str1 = "libin IS a good man"
str2 = str1.captalize()
print(str1)
print(str2)
结果:libin IS a good man Libin is a good man
7.title()
原型:字符串.title
功能:得到标题化的字符串,每个单词的首字符大写其余的小写
例如:str1 = "libin is a good man"
str2 = str1.title()
print(str1,str2)
结果:libin is a good man Libin Is A Good Man
8.center(width,"filchar")
原型:字符串.center(width,"filchar")
功能:返回指定宽度的width的居中字符串,filchar为填充物
例如:str1 = "good"
str2 = str1.center(20,"$")
print("*"+str2+"*") #*是为了定位用的,实际中不需要写出
结果:*$$$$$$$$good$$$$$$$$*
9.zfill(width)
原型:字符串.zfill(width)
功能:将字符串右对齐,左侧填充0
例如:str1 = "hello"
str2 = str1.zfill(20)
print("*"+str2+"*")
结果:*000000000000000hello*
10.count(str,beg=0,end=len(string))
原型:字符串.count(str,beg=0,end=len(string))
功能:返回str在string中出现的次数,如果beg或end指定则返回指定范围为str出现的次数
例如:str1="l"
str2="hello world!"
str3=str2.count(str1) #意为str1在str2中的次数
print(str3)
结果:3
11.ljust(width,fillchar)
原型:字符串.ljust(width,fillchar)
功能:返回一个左对齐的字符串
例如:str1="li bin"
str2=str1.ljust(20,"*")
print(str1)
print(str2)
结果:li bin
li bin**************
12. find(str)
原型:string.find(str)
功能:检测str中是否含有string,如果包含返回开始的索引值,如果不包含返回-1
例如:str1="hello"
str2="hello world"
str3=str2.find(str1)
结果:0 #表示含有hello并且开始于第0个字母
13.index()
原型:string.index(str)
功能:如果string中不含有str程序会进行报错
例如:str1="libin"
str2="hello world"
str3=str2.index(str1)
print(str3)
结果:substring not found
14.rfind()
功能:类似于find,但是是从右边开始查找的
15.rindex()
功能:类似于index,但是从右边开始查找
16. lstrip()
原型:字符串.lstrip()
功能:截取字符串左侧的空格
例如:str1="****hello world"
str2=str1.lstrip(*)可以指定
print(str2)
17. rstrip()
功能:和lstrip功能相同但是清除右侧
18.strip()
功能:和lstrip功能相同删除两端split
19.split()
原型:字符串.split()
功能:根据某些规则切割字符串
例如:str1= "libin is a good man"
str2=str1.split()
print(str2)
结果:['libin', 'is', 'a', 'good', 'man']
原型:
功能:
例如:
结果: