计算机基础:
1、Python是编程语言
语言:
一种事物与另外一种事物沟通的介质
所以说编程语言是程序员与计算机沟通的介质
什么是编程:
就是程序员用计算机所能理解的表达方式(编程语言)把自己的思维逻辑写下来,编程的结果就是一堆文件
为什么要编程?
让计算机按照人的逻辑执行程序,取代人力
2、完整的计算机系统:
应用程序
操作系统
计算机硬件
3、计算机硬件:(计算机是奴隶)
1、五大组成
控制器
运算器
存储器I/O:内存+外存
输入设备input
输出设备output
存储器有哪些种类,对比各个种类的直接的速度和容量
运行速度排序: 寄存器、 高速缓存、内存、磁盘、磁带
容量排序:磁带、磁盘、内存、高速缓存、寄存器
计算机的三大核心组件,以及它们的功能?
1、cpu
2、内存
3、硬盘
内存:内存条
优点:存取速度快
缺点:断电数据丢失,容量小
外存:磁盘
优点:断电数据也不丢失,可以永久保存数据,容量大
缺点:存取速度慢
2、CPU
控制器+运算器=CPU
功能:控制+运算
工作方式:取指--->分析--->执行
软件的执行都是由CPU执行,强调所有的软件最终都要转换成CPU的指令集去执行
一个二进制位成为一个bit:111
cpu具有向下兼容性
总结重点:
cpu的功能
cpu从内存取数据
x86-64
cpu具有向下兼容性,即64的cpu可以执行32的程序
4、二进制
8bit=1Bytes
1024Bytes=1KB
1024KB=1MB
1024MB=1GB
1024GB=1TB
1024TB=1PB
1GB=1000*1000*1000*8
5、
磁盘:
平均寻道时间:5ms
平均延迟时间:60/7200=0.008=8ms
4ms
500MIPS millon instruction per second
400 0000
6、操作系统
启动流程
加电
BIOS->检测硬件->CMOS
找到启动盘-》读取第一个扇区512B(了解:446引导信息 64分区信息 2结束标志位)
加载bootloader
读取操作系统内核(接管BIOS的任务,控制计算)
ROM->存储BIOS的指令
BIOS:BASIC INPUT OUPUT SYSTEM
一个程序想要从无到有运行起来,CPU 、内存、硬盘各部分是如何工作的?
1、硬盘先存储程序
2、CPU向内存发送指令,内存读取硬盘中存储的程序(硬盘将程序加载至内存)
3、CPU访问内存中读444取所运行程序的指令,根据指令产生的结果,CPU产生控制信号,使得各个部件有条不紊的工作
1、什么是操作系统
操作系统位于计算机硬件与应用软件之间
是一个协调、管理、控制计算机硬件资源与软件资源的控制程序
2、为何要有操作系统?
1、控制硬件
2、把对硬件的复杂的操作封装成优美简单的接口(文件),给用户或者应用程序去使用
注意:一套完整的计算机系统包含三部分
应用程序:qq,暴风影音,快播
操作系统:windows,linux,unix
计算机硬件
强调:
我们以后开发的都是应用程序
应用程序无法直接操作硬件,但凡要操作硬件,都是调用操作系统的接口
编程语言分类
1、机器语言:直接用二进制编写程序,直接操作硬件
优点:执行效率高
缺点:开发效率低
2、汇编语言:用英文标签取代替二进制指令,本质还是在直接操作硬件
优点:相对于机器语言的开发效率要高
缺点:执行相对于机器语言要低
3、高级语言
高级语言就直接用人能理解的语言跟语法风格来编写程序,程序员无需再去考虑复杂的硬件操作
问题是我们用高级语言编写的程序归根结底还是要给计算机去执行,这就涉及到一个翻译的过程
要把人用高级语言编写的程序翻译成计算机所能理解的二进制指令才执行,按照翻译方式的不同,
高级语言又分为两大类
编译型:C
优点:
执行效率比解释型快
缺点:
开发效率不如解释型
解释型:python
优点:
开发效率比编译型高
缺点:
执行效率比编译型慢
执行效率再快也要受限于网速,于是我们现阶段需要优先考虑就是开发效率
1、执行python程序有两种方式
I:交互式
优点:调试程序
缺点:无法永久保存代码
II:命令行的方式
python3 D:\p1.py
优点:可以永久保存代码
2、python执行程序的三个阶段:python3 D:\p1.py
1、先启动python3解释器
2、python3解释器就像一个文本编辑器一样将文件内容D:\p1.py从硬盘读入内存
3、python3解释器解释执行文件代码
强调:只有第三个阶段才识别python的语法
数据类型
1、什么是数据类型
变量值才是我们存储的数据,所以数据类指的就是变量值的不同种类
2、为何数据要分类型?
变量值是用来保存现实世界中的状态的,那么针对不同的状态就应该用不同类型的数据去表示
3、如何用,即数据类型的分类?
一:数字类型
整型int
1、作用:表示人的年龄、各种号码、等级
2、定义
age=18 age=int(18)
print(id(age))
print(type(age))
print(age)
二、浮点型float
1、作用:表示身高、体重、薪资。。。
2、定义
salary=3.1 salary=float(3.1)
print(id(salary))
print(type(salary))
print(salary)
三、字符串类型str
1、作用:表示描述性质的状态,比如人的名字,家庭住址
2、定义:在单引号、双引号、三引号内包含的一串字符
name='isetan' name=str('isetan' )
msg='''
tom
isetan
wcl
'''
print(type(name))
print(type(msg))
注意点:
msg="my name is 'isetan'"
print(msg)
3、如何用
字符串类型只能:+或者*
msg='hello'
name='isetan'
print(msg + name)
name='isetan'
print(name * 10)
msg1='zaello '
msg2='za'
print(msg2 > msg1)
print('a' > 'Z') 查看编码值用ord('a'),将编码值换算为字符chr(65)
四:列表list
1、作用:用来存取放多个值
2、如何定义:在[]内用逗号分隔开多个任意类型的值
l=[1,'a',3.1,[1,3]] l=list([1,'a',3.1,[1,3]])
print(id(l))
print(type(l))
print(l)
x=111
l=[1,2,x,'a']
print(l)
hobbies=['read','run','basketball']
0 1 2
3、如何用:按照索引取值,索引是从0开始的
print(hobbies[2])
print(hobbies)
l=['tom','male',['jialidun',200]]
print(l[2][1])
五:字典dict
1、作用:用来存取放多个值,按照key:value的方式存放的值,取的时候可以通过key而非索引去取值,key对value是有描述性功能的
2、定义方式:在{}内用逗号分隔开多个元素,每一个元素都是key:value的格式,其中value可以是任意类型,key大多数情况都是字符串类型
'name' 'sex' 'age' 'company_info'
user_info=['isetan','male',18,['jialidun','beijing',20]]
print(user_info[1])
print(user_info[0])
print(user_info[3][1])
user_info={
'name':'isetan',
'sex':'male',
'age':18,
'company_info':{'c_name':'jialidun','c_addr':'beijing','members':20}
}
print(id(user_info))
print(type(user_info))
print(user_info)
print(user_info['name'])
print(user_info['company_info']['c_name'])
六:布尔bool
1、作用:用于判断的条件
2、如何定义:True,False
print(10 > 2 and 3 > 14)
print(type(True))
所有的数据类型的值本身就是一种布尔值,即所有的数据类型都可以当作条件去用
在如此多的数据类型中只需要记住:0,None,空,它们三类的布尔值为False
print(bool(0))
print(bool(None))
print(bool(''))
print(bool([]))
print(bool({}))
七、在python3中的input会将用户输入的任何内容都存成字符串类型
name=input("请输入您的姓名:") name='isetan'
pwd=input("请输入您的密码:") pwd='123'
print(name,type(name))
print(pwd,type(pwd))
在python2中的raw_input用法与python3的input是一摸一样的
name=raw_input("请输入您的姓名:") name='isetan'
pwd=raw_input("请输入您的密码:") pwd='123'
python2中的input 要求明确输入值的类型
age=input('age>>>: ') age='18'
print(age,type(age))
age=int(age)
print(age > 11)
八、格式化输出
name='isetan'
age=18
%s其实可以接收任意类型的值
print('my name is %s my age is %s' %(name,age))
print('my name is %s my age is %s' %(name,[1,2]))
%d只能接收int类型的值
print('my age is %d' %age)
九:基本运算符
print(1 + 2)
x=10
y=20
res=x + y
print(res)
/是有零有整
print(10 / 3)
// 地板除,只取整数部分
print(10 // 3)
print(10 // 4)
% :取余数
print(10 % 3)
print(10 ** 2)
pwd='123'
print(pwd != '123')
列表之间比较大小,仅限于相同位置对应的值是同一类型
l1=[1,'a',3]
l2=[1,3]
print(l2 > l1) #True
print(10 > 1.1) #False
重点:
链式赋值:
a=b=c=d=10
交叉赋值:
x,y=y,x
print(x,y)
变量值的解压缩
lst=['isetan','asb','wsb']
x=l[0]
y=l[1]
z=l[2]
x,y,z=lst
print(x,y,z)
l=['isetan','asb','wsb','lsb']
x,y,z,a=l
print(x,y,z,a)
_='lsb'
x,_,z,_=l
print(_)
yj=[11,22,33,44,55,66,77,88,99,100,200,300]
mon1,mon2,mon3,mon4,mon5,mon6,*_=yj
print(mon1)
print(mon2)
mon1,mon2,*_,mon11,mon12=yj
print(mon1)
print(mon2)
print(mon11)
print(mon12)
对于字典来收,解压出来的是key
info={'name':'isetan','age':18,'sex':'male'}
x,y,z=info
print(x,y,z)
逻辑运算
print(not 10 > 3) #True
print(10 > 3 and 3 > 2) #True
print(3 >= 3 and 3 > 2 and 'xxx' != 'isetan' and 3 > 2) #True
print(False or True) #True
print(3 > 3 or 3 > 2 or 'xxx' != 'isetan' or 3 > 2)#False
print(not 3 > 3 or (not 3 > 2 and 'xxx' == 'isetan' or 3 > 2)) #True
流程控制
语法1
if 条件:
代码1
代码2
代码3
...
cls='human'
sex='female'
age=18
if cls == 'human' and sex == 'female' and age > 16 and age < 22:
print('开始表白')
print('end....')
语法2
if 条件:
代码1
代码2
代码3
...
else:
代码1
代码2
代码3
...
cls='human'
sex='female'
age=38
if cls == 'human' and sex == 'female' and age > 16 and age < 22:
print('开始表白')
else:
print('你好')
print('end....')
语法3
if 条件1:
代码1
代码2
代码3
...
elif 条件2:
代码1
代码2
代码3
...
elif 条件3:
代码1
代码2
代码3
...
............
else:
代码1
代码2
代码3
...
'''
如果:成绩>=90,那么:优秀
如果成绩>=80且<90,那么:良好
如果成绩>=70且<80,那么:普通
其他情况:很差
'''
score=input('your score: ') score='73'
score=int(score) score=73
if score >= 90:
print('优秀')
elif score >= 80:
print('良好')
elif score >= 70:
print('普通')
else:
print('很差')
user_from_db='ycf'
pwd_from_db='123'
user_from_inp=input('username>>>: ')
pwd_from_inp=input('password>>>: ')
if user_from_inp == user_from_db and pwd_from_inp == pwd_from_db:
print('login successfull')
else:
print('user or password error')
if的嵌套
cls='human'
sex='female'
age=18
is_success=False
if cls == 'human' and sex == 'female' and age > 16 and age < 22:
print('开始表白...')
if is_success:
print('在一起')
else:
print('我逗你玩呢....')
else:
print('阿姨好')
print('end....')
while语法,while循环又称为条件循环
while 条件:
code1
code2
code3
....
user_db='ycf'
pwd_db='123'
while True:
inp_user=input('username>>: ')
inp_pwd=input('password>>: ')
if inp_user == user_db and inp_pwd == pwd_db:
print('login successfull')
else:
print('user or password error')
2 while+break:break的意思是终止掉当前层的循环,.执行其他代码
while True:
print('1')
print('2')
break
print('3')
user_db='ycf'
pwd_db='123'
while True:
inp_user=input('username>>: ')
inp_pwd=input('password>>: ')
if inp_user == user_db and inp_pwd == pwd_db:
print('login successfull')
break
else:
print('user or password error')
print('其他代码')
3 while+continue:continue的意思是终止掉本次循环,.直接进入下一次循环
ps:记住continue一定不要加到循环体最后一步执行的代码
n=1
while n <= 10:
if n == 8:
n += 1 n=9
continue
print(n)
n+=1 n=11
while True:
if 条件1:
code1
code2
code3
continue 无意义
elif 条件1:
code1
continue 有意义
code2
code3
elif 条件1:
code1
code2
code3
continue 无意义
....
else:
code1
code2
code3
continue 无意义
while循环嵌套
user_db='ycf'
pwd_db='123'
while True:
inp_user=input('username>>: ')
inp_pwd=input('password>>: ')
if inp_user == user_db and inp_pwd == pwd_db:
print('login successfull')
while True:
cmd=input('请输入你要执行的命令: ')
if cmd == 'q':
break
print('%s 功能执行...' %cmd)
break
else:
print('user or password error')
print('end....')
while+tag
user_db='ycf'
pwd_db='123'
tag=True
while tag:
inp_user=input('username>>: ')
inp_pwd=input('password>>: ')
if inp_user == user_db and inp_pwd == pwd_db:
print('login successfull')
while tag:
cmd=input('请输入你要执行的命令: ')
if cmd == 'q':
tag=False
else:
print('%s 功能执行...' %cmd)
else:
print('user or password error')
print('end....')
while+else (***)
n=1
while n < 5:
if n == 3:
break
print(n)
n+=1
else:
print('在整个循环结束后,会进行判断:只有while循环在没有被break结束掉的情况下才会执行else中的代码')
names=['ycf','asb','wsb','lsb','csb']
n=0
while n < len(names):
print(names[n])
n+=1
names=['ycf','asb','wsb','lsb','csb']
info={'name':'ycf','age':18,'sex':'male'}
for k in info: x=''age' #x=''age'过滤条件
print(k,info[k])
for item in names:
print(item)
for i in range(1,10):
print(i)
for i in range(10): 默认的起始位置是0
print(i)
for i in range(1,10,2): 1 3 5 7 9
print(i)
names=['ycf','asb','wsb','lsb','csb']
for i in range(len(names)):
print(i,names[i])
#1、for循环嵌套
for i in range(5):
print('========>第一层: %s<=========' %i)
for j in range(3):
print(' 第二层: %s' %j)
#2 for与break,与while与break组合使用原理一样
for+break
names=['asb','wsb','ycf','lsb','csb']
for n in names:
if n == 'ycf':
break
print(n)
#3:continue 也是跳出本次循环
for+continue
names=['asb','wsb','ycf','lsb','csb']
for n in names:
if n == 'ycf':
continue
print(n)
#4:当for执行结束后在else ,在没有break的前提下
for+else
names=['asb','wsb','ycf','lsb','csb']
for n in names:
if n == 'ycf':
break
print(n)
else:
print('=====>')