####一、编程与编程语言
python是一门编程语言,搞明白三点:
1、编程目的?
计算机的发展就是为了解放人力,机器是死的,所以人必须找到一种能够被机器识别的表达式从而把自己的思想按照这个表达方式传递给机器,完成机器可以自发的工作。
2、什么是编程语言?
上面所说的表达方式指的就是编程语言。
英文 python
单词 关键字(if while for and or)
语法 语法
作文 编程
3、什么是编程?
按照某种编程语言的语法风格写程序,程序在未执行前就是一对普通文件
####二、编程语言的分类
程序员 计算机
1、机器语言:站在计算机的校对说计算机能听懂的话,直接用二进制编程,直接操作硬件。
优点:执行效率快
缺点:学习难度大,开发效率低。
2、汇编语言:站在计算机的角度说计算机能听懂的话,用一些英文标签来代替一串特定的意义的二进制,还是直接操作硬件。
优点:执行效率快,不如机器语言快。
缺点:学习难度大,开发效率低,比机器语言降一个难度。
3、高级语言:站在人的角度说人话,机器无法理解,所以需要翻译。
编译型(c):相当于百度翻译,翻译一次,拿着该翻译的结果去执行。
优点:执行效率高。
缺点:开发效率低。
解释型(python):相等于同声传译,一边解释一边执行。
优点:开发效率高。
缺点:执行效率低。
排序:
执行效率:从高到低
开发效率:从低到高
学习难度:从难到易
执行效率不是影响,开发效率才是王道
####三、写程序的俩种方式:
交互式环境:
即时调试
文件的方式
python3 C:\test.py
####四、变量:
#####1、什么是变量:
变量一定是指变化的反映某种状态的
#####2、如何定义变量?
name='mile'
password='mile123' #1
password='mile@123' #2
#执行到现在,password的值是mile@123
#####3、变量名的命名规则?
1、变量名只能是字母、数字或者下划线的任意组合
2、变量名的第一个字符不能是数字
#####4、定义变量的方式:
驼峰式:
AgeOfOldboy=23
下划线:
age_of_oldboy=24
####五、常量
AGE_OF_OLDBOY=23
ps:python没有常量,通常用全大写表示常量。
####六、执行过程(重点!!!)
python3 c:\test.py
1、先启动python3.exe
2、把c:\test.py从硬盘读入到内存
3、解释执行文件内容(自动识别python语法)
####七、引用计数+垃圾回收机制
x=‘aaa’ #'aaa’这个值的引用计数为1
y=x #'aaa’这个值的引用计数为2
x=1
y=2
ps:每次调用x这个变量,都会在内存中划去一个区域,把值放到里面,如果:x和y的值相同,会把后来指定的值的变量指向之前的区域
####八、产生一个变量的三要素(重点!!!)
name=‘mile’
#####1、变量的值:用来表示状态;用变量名取变量值
print(name)
#####2、变量的类型:表示不同的状态应该用不同的类型的值去表示(数字:年龄,字符串:名字)
print(type(name))
#####3、变量值的id号:
print(id()name)
*ps:注意,这里如果变量的值比较短,那么值进入内存后,不会重新划分新的内存id*、、
#####4、变量之间比较,
判断变量的值是否相等:==
判断变量的id是否相等:is
id相同,意味着type和value必定相同
value相同type肯定相同,但是id可能不同
这里充分说明即使a的值和b的值相同,他们的id也是不同的,充分说明每赋值一次,都会在内存中划分一个区域,把新的值放进去
####九、程序与用户交互
user=input(‘请输入账号:’) #把用户输入的内容默认存为字符串类型
####十、数据类型
######1、整型(int):
#状态:等级,身份证号,年龄
level=10 #level=int(10)
print(level,type(level),id(level))
######2、浮点型(float):
#状态:薪资,身高(有零头的)
salary=200.3 #salary=float(200.3)
print(salary,type(salary),id(salary))
######3、字符串(str):用引号(单引号,双引号,三引号,python中这三种引号表示一个意思)定义的一对字符状态,描述的内容,如名字,性别
gender='male' #gender=str(male)
print(type(gender))
info="my name is egon i'm teacher"
#ps:注意这里双引号里面嵌套单引号。
msg='''
xxx
yyy
zzz
'''
print(msg)
#三引号的意思是全部引用,里面全是msg的值,三引号可以引用多行值。
x=1
y=2.3
res=x/y
print(res)
#ps:字符(数字)之间做运算,+—*/
a='hello'
b='world'
res=a+b
print(res)
ride=a*10
print(ride)
#ps:但是字符只能跟字符串之间进行+;字符可以*数字
#####4、列表(list):在[]内,用逗号隔开,存放多个任意类型的元素状态
#状态:有序存放多个值
#先之前的变量表示下:
info='''
name:xxx
age:18
sex:male
'''
print(info) #注意这里输出的是全部内容,不能单行打印
info=[xxx,18,male,['能','education']]
print(info[0])
print(info[1])
print(info[4][0]) #注意,这里使用的列表,但是打印出来无法得知是name,还是age,里面可以嵌套多个列
练习1:列表嵌套、取值
#存放多个学生的信息:姓名、年龄、爱好
student_info=[['x',18,['paly']],['xx',20,['paly,'sleep','eat']]]
students_info[0][2][0] #取出第一个学生的爱好
#####5、字典类型(dict):定义花括号{}内,用逗号分隔key:value,value可以是任意类型,但是key必须为不可变类型状态
练习2:dict和list的嵌套、取值
#状态:存放多个值
info1={
'name':'xxx',
'age':18,
'sex':'male'
'company':['能','enducaton']
}
####dict和list嵌套####
print(info1)
print(info1['company'])
students=[
{'name':'alex','age':18,'hobbies':['play','sleep']},
{'name':'egon','age':18,'hobbies':['read','sleep']},
{'name':'egon','age':18,'hobbies':{'1':'read','2':'sleep'}}
]
#最外层为列表,然后一层为dice,然后再一层为dice
print(students)
print(students[2])
print(students[2]['hobbies'])
print(students[2]['hobbies']['1'])
#ps:注意这里不好理解,可以一层一层的取值。
#如:
lis=['name','123','sex',['company','300']]
dic={'name':'lqx',
'password':['123','12344567'],
'lis':lis,
'company':{'neng':'123','user':['user',lis[2]]}
}
print(
dic['lis'][3], #注意这里取的是变量lis中的值。
dic['password'][1],
dic['company'],
dic['company']['neng'],
dic['company']['user'][1]
)
#####6、布尔型(bool):True False
#状态:成立,不成立,用来做逻辑运算->判断
print(type(True))
age=28
print(age>38)
#ps:成立为真,即True 不成立为假,即为False
####十一、可变类型与不可变类型
#####1、可变类型:在id不变的情况下,value可以变,则称为可变类型,如列表,字典
#####2、不可变类型:value一旦改变,id也改变,则称为不可变类型(id变了意味着创建了新的内存空间)
1、如图,list和dict里面的值变了,但是list-id和dict-id是没有发生变化的,这个就说明是不可变类型
2、id变为不可变类型;字典和列表中的值为可变类型;
3、字典和列表打印值的时候,每取一层加一个【】
####十二、格式化输出
name=input('name:')
age=input('age:')
print('my name is %s my age is %s' %(name,age))
print('name: %s age: %s' %(name,age))
print('name:[%s] age:{%s}' %(name,age))
#ps:注意,%s为占位符,任何输入都会转换为str类型的,%d也为占位符,但是输入只能是数字类型
#####字符串输出%s
%s
%10s——右对齐,占位符10位
%-10s——左对齐,占位符10位
%.2s——截取2位字符串
%10.2s——10位占位符,截取两位字符串
1 >>> print('%s' % 'hello world') # 字符串输出
2 hello world
3 >>> print('%20s' % 'hello world') # 右对齐,取20位,不够则补位
4 hello world
5 >>> print('%-20s' % 'hello world') # 左对齐,取20位,不够则补位
6 hello world
7 >>> print('%.2s' % 'hello world') # 取2位
8 he
9 >>> print('%10.2s' % 'hello world') # 右对齐,取2位
10 he
11 >>> print('%-10.2s' % 'hello world') # 左对齐,取2位
12 he
#####练习1
name=input('name:')
age=input('age:') #这里输入的是一个str类型
age=int(age) #需要在下面转换为int类型
sex=input('sex:')
msg='''
-------------info of %s----------
name: %s
age: %d #只能接受int类型的字符
sex: %s
--------------end---------------
''' %(name,name,age,sex)
print(msg,type(msg),type(age))
#####格式化输出小练习:
#####练习:用户输入姓名、年龄、工作、爱好 ,然后打印成以下格式
#------------ info of Egon -----------
#Name : Egon
#Age : 22
#Sex : male
#Job : Teacher
#------------- end -----------------
name=input('name:')
age=input('age:')
age=int(age)
sex=input('sex:')
job=input('job:')
info1='''
------------info of %s -------------
name: %s
age: %d
sex: %s
job: %s
-------------end------------------
''' %(name,name,age,sex,job)
print(info1)
####十二、基本运算符
#####1、算法:
print(10%3) #取余
print(10**2) #幂运算
print(10/3) #除
print(10//3) #取整
#另外还有+-* 3种运算符
#####2、比较,为真返回Ture,为假返回False
print(10 > 3)
print(10 < 3)
print(10 == 3)
print(10 != 3)
#ps:注意,is比较的是id,==比较的是值
#####3、赋值
a=2
b=a #结果:b的值为2
#####4、链式赋值
a=b=c=2 #a/b/c全部赋值为2,并且id相同
print(id(a),id(b),id(c))
#####5、交叉赋值(把m的值换为n的值,把n的值换为m的值)
m=1
n=2
temp=m
m=n
n=temp
print(m,n)
#ps:上面的办法比较复杂,一般使用下面的方式就可以实现
m,n=n,m
print(m,n)
#####6、解压(列表里的值解压)
注意,这里只能解压列表的值
l=[1,2,3,4]
a,b,c,d=l #注意这里必须一一对应,不然会报错(ValueError: too many values to unpack (expected 3))
print(a,b,c,d)
a=l[0]
_=l[1] #_在这里也代表一个变量
_=l[2]
d=l[3]
a,_,_,d=l #_在这里也代表一个变量
print(a,d)
a,*_,d=l #*_在这里代表多个变量,或者没有变量
print(a)
print(d)
#####7、赋值运算符
level=1
level+=1 #level=level+1
level-=1 #level=level-1
print(level)
#####8、逻辑and or not
age=18
is_pretty=True
height=170
weight=80
print(age >= 18 and is_pretty == True and height > 160 and weight > 30 and weight < 90)
print(1 > 2 or 1 > 3 or 3 > 1 or 4 < 3)
print(not 4 > 2)