一、编程与编程语言
1、编程的目的?
计算机的发展就是解放人力,机器是死的,所以人必须找到一种能够被机器识别的表达方式从而把自己的思想按照这个表达方式传递给机器,完成机器可以自发的工作。
2、什么是编程语言?
上面说的表达方式指的就是编程语言(关键字【if while for and or】------>> 语法 -------->> 编程)
3、什么是编程
按照某种编程语言的语言风格写程序,程序在未执行前就是一堆普通文件。
二、编程语言的分类
1、机器语言:
直接用二进制编程,直接操作硬件
优点:执行效率快
缺点:学习难度大,开发效率低
2、汇编语言:
用一些英文标签来代替一串特定的意义的二进制,还是直接操作硬件
优点:执行效率快,不如机器语言
缺点:学习难度大,开发效率低
3、高级语言:
编译型:相当于百度翻译,翻译一次,拿着该翻译的结果去执行(eg:C语言要用gcc编译成一个二进制的可执行文件来运行)。调试麻烦
优点:执行效率高
缺点:开发效率低
解释型:相当于同声传译,一边解释一边执行。调试简单,开发效率高,执行速度慢。(python)
优点:开发效率高
缺点:执行效率低
4、三种语言比较
执行效率:从高到底
开发效率:从低到高
学习难度:从难到易
三、运行python代码的两种方式
1、文件的方式
python /tmp/test.py
2、在python的交互式环境
lvxingguodeMacBook-Pro:~ root# python3Python 3.6.2 (v3.6.2:5fd33b5926, Jul 16 2017, 20:11:06)[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwinType "help", "copyright", "credits" or "license" for more information.>>>>>>>>>>>> print("holle world")holle world>>>
四、变量
什么是变量?
变指的是“变化”,量指的反映某种状态
如何定义变量?
name = 'xglv'password = 'xglv_123'
变量名的命名规则?
#1. 变量名只能是 字母、数字或下划线的任意组合#2. 变量名的第一个字符不能是数字#3. 关键字不能声明为变量名['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
定义的方式:
1、驼峰式
AgeXingguolv = 18
2、下划线
age_xingguolv = 18
常量
python里用全部大小的字母表示一个常量(eg:AGE_XINGGUOLV)但是python并没有规定定义的常量不能更改,知识人们统一预定的一中规范
五、执行过程
python3 /tmp/test.py
1、先启动python3
2、把/tmp/test.py文件从硬盘读到内存
3、解释执行文件内容(识别python语法)
七、引用计数+垃圾回收机制
x = 'aaa' #'aaa'这个值的引用计数为1y = x #'aaa'这个值的引用计数为2pyton会定期启动垃圾回收线程。回收引用计数为零的数据。del x (解除x的绑定,并不是删除x变量的数据,删除数据是python解释器的任务)
八、产出一个变量的三要素
name = 'xglv'#变量值:用来表示状态。用变量名取变量值print(name)#变量值的类型:表示不同的状态应该用不同类型的值去表示(数字、字符串等)print(type(name))#变量值的id号:print(id(name))>>> name1 = 'xglv'>>> name2 = 'xglv'>>> print(name1,type(name1),id(name1))xglv4339570872>>>>>>>>> name2 = 'xglv'>>> print(name2,type(name2),id(name2))xglv 4339570872>>> name1 = 'xingguolv_for 123'>>> name2 = 'xingguolv_for 123'>>>>>> print(name1,type(name1),id(name1))xingguolv_for 123 4339592696>>> print(name2,type(name2),id(name2))xingguolv_for 123 4339592768#此时name1和name2 的id值不一样了,因为python不会对数据量比较小的#值重复开辟内存空间,而使用同一个表示。#注意两个符号#判断值是否相等:== #判断id是否相等:iseg:>>>>>> name1 = 'xingguolv_for 123'>>> name2 = 'xingguolv_for 123'>>>>>> name1 == name2True>>> name1 is name2False>>>
九、程序与用户交互
>>>>>> name = input("please input name: ")please input name: xglv>>> name'xglv'>>> type(name)>>> id(name)4339571096>>>>>>>>> age = input("please input age: ")please input age: 18>>> type(age) >>>#input 默认会把输入的内容都存成字符串类型
注:注释
# 单行注释''' '''' 或 """ """ 都行注释
文件头
#!/usr/bin/evn python3# -*- coding:utf8 -*-
十、数据类型
#!/usr/bin/env python3# -*- coding:utf8 -*-#数据类型"""整型状态:等级,身份证号,年龄"""level = 10 #level = int(10)print(type(level))##"""浮点型状态:薪资,身高,体重"""salary = 3000.3 # salary = float(30000.3)print(type(salary))# """字符串:在引号(单引号、双引号,三引号)里定义的一堆字符状态:描述性的内容:比如名字,性别,国籍"""gender = 'male' #gender = str('male')print(type(gender))# info = "my name is xglv i'm a student;"msg = """lllxxxggg"""print(msg)# lll# xxx# gggx = 1y = 2.1res = x+yprint(res)#3.1#字符串只能和字符串之间之间 + 或 *info1 = 'holle 'info2 = 'word'res = info1 + info2print(res)#holle word#字符串+ * 之间拼接的效率低,因为它会在内存中开辟一块新的内存空间info = '=' * 10print(info)#=========="""列表:在[]内,用逗号分隔开,存放多个任意类型的元素状态:有序存放多个值"""info = ['egon',18,'male',['jinhui','finance',50]] #info = list(['egon',18,'male',['jinhui','finance',50]])print(info[0])#egonprint(info[3][0])#jinhui"""字典类型:定义在花括号内,用逗号分隔key:value,value可以是任意类型,但是key必须是不可变类型状态:存放多个值"""info = { 'name':'egon', 'age':18,'sex':'male', 'company':['jinhui','finance',50]}print(info,type(info),id(info))#{'name': 'egon', 'age': 18, 'sex': 'male', 'company': ['jinhui', 'finance', 50]} 4303182152print(info['name'])#egonprint(info['company'][0])#jinhui"""布尔:Ture,False状态:成立,不成立,用来做逻辑运算 ----> 判断"""print(type(True))# a = 1print(a < 2)#True
注:可变类型与不可变类型
#1、可变类型:在id不变的情况下value可变,则称为可变类型,如列表,字典a = [1,2,3]print(a,id(a))#[1, 2, 3] 4330911304a.append(4)print(a,id(a))#[1, 2, 3, 4] 4330911304#2、不可变类型: value -但改变,id也改变,则称为不可变类型,如整型,浮点型,字符串,布尔值a = 1print(a,id(a))#1 4297636896a = 2print(a,id(a))#1 4297636896
十一、格式化输出
name = input('name>>: ')age = int(input('age>>: '))print("name is [%s] , age is [%s]" %(name,age))# name>>: xglv# age>>: 18# name is [xglv] , age is [18]print("name is [%s] , age is [%d]" %(name,age))# name>>: xglv# age>>: 18# name is [xglv] , age is [18]print("name is %s" %"xglv")#name is xglv# %s 接收的类型既可以接收字符串又可以接收数字,而 %d 只可以接收数字name = input('name>>: ')age = int(input('age>>: '))msg ='''------ info of %s -------- Name : %s age : %s-----------end -----------''' %(name,name,age)print(msg)# ------ info of xglv --------# Name : xglv# age : 18# -----------end -----------
十二、基本运算符
算数运算
以下假设变量:a=10,b=20
比较运算
以下假设变量:a=10,b=20
赋值运算
以下假设变量:a=10,b=20
#赋值a = 1b = 2#链式赋值a = b = 3print(a,b)#3 3#交叉赋值m = 1n = 2m,n = n,mprint(m,n)#2 1m = 1n = 2m,n = n,m+nprint(m,n)#2 3#解压l = [1,2,3,4]a,b,c,d = lprint(a,b,c,d)#1 2 3 4a,_,__,b = lprint(a,b)#1 4a,*_,b = lprint(a,b)#1 4#赋值运算符level = 1level+=1print(level)#2level*=2print(level)#4level/=2print(level)#2.0
逻辑运算
>>> True or Flase and FalseTrue>>> (True or Flase) and FalseFalse#执行顺序是从左到右在判断到结果后就不在执行#not只对紧挨着的条件取反
身份运算
is 比较的是id
== 比较的是值
十三、流程控制之if判断
#if判断age = 19success = Trueis_pretty = Trueif age > 18 and age < 22 and is_pretty: if success: print("表白成功") else: print("去他妈的爱情")else: print("阿姨好")score = input(">>: ")#>=90:优秀#>=80 < 90 :良好#>=60 < 80 :合格#<60:滚犊子if score.isdigit(): score = int(score) # int只能把纯数字的字符串转换成int类型else: print("input is error") exit(1)if score >= 90: print("优秀")elif score >= 80: print("良好")elif score >= 60: print("合格")else: print("滚犊子")#只要条件满足就执行,并不在执行后面的代码 elif也是
十四、流程控制之while循环
#条件循环"""while 条件: 代码1 代码2 代码3"""count = 0while count <= 10: print(count) count+=1#while + breakcount = 0while count <= 10: if count == 7 or count == 9: break print(count) count+=1#while + councount = 0while count <= 10: if count == 7 or count == 9: count+=1 continue print(count) count+=1#嵌套循环count = 0while True: if count > 3: print('too many tries') break name = input("name>>: ") password = input("password>>: ") if name == "xglv" and password == '123': print("login successful") break else: print('user and password err') count+=1count = 0while count < 3: name = input("name>>: ") password = input("password>>: ") if name == "xglv" and password == '123': print("login successful") break else: print('user and password err') count+=1count = 0tag = Truewhile tag: #while Ture: if count > 3: print("too many tries") break name = input("name>>: ") password = input("password>>: ") if name == "xglv" and password == "123": print("login successful") while tag: cmd = input("cmd: ") if cmd == "q": #break tag = False print("run %s" %cmd) #break else: print("user and password is err") count+=1#tag 为标志位法退出循环#while + elsecount = 0while count < 5: print(count) count+=1else: print("当while循环在运行过程中没有被break打断,则执行我")