1. Python简介
- Python优势
- 减少开发成本
- Linux原装Python,其他语言没有;
- 丰富的类库支持
- Python在速度上可能稍显逊色
- Python和其他语言对比
- C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作
- 高级语言: 代码编译得到 字节码 ,经由虚拟机/解释器,转换成机器码后在处理器上执行
- Python由C开发而来
- Python解释器
- CPython : 代码 -> C字节码(.pyc文件)-> 机器码 -> 逐行执行
- PyPy:
- PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),可以显著提高Python代码的执行速度。
- 代码 -> C字节码 -> 机器码 全部转换完 -> 执行
- 其他Python:代码 -> 对应语言的字节码 -> 机器码
- 疑问:Python解释器将代码编译为对应的字节码,那将字节码转换成机器码是用什么?虚拟机?
2. Python基础
1. 基本步骤
- 安装: python解释器
- 写程序
- 执行
- 打开文件,读取文件内容
- 词法分析,语法分析
- 转换为字节码
2. 解释器
- .py文件头部#!/usr/bin/python
-文件编码,声明py文件的字符编码 - 解释器编码
- 2.x:ASCII
- 3.x:utf-8
- 潜规则:后缀名为.py
- .pyc文件,字节码
3. 编码
- ASCII码:只有英文字母和特殊字符。1个字节。
- Unicode:万国码,支持大部分语言,但较占内存。英文2个字节,中文3个字节。
- UTF-8:对Unicode的压缩,可扩展。英文1字节,中文3字节。为大多数开源软件使用。
- gbk/gb2312:仅中文,2个字节。
4. IDE-pycharm
- 使用
- new project
- new Directory
- new Python file
- 在py文件中右键, run xx.py
- 文件编码:defaultsettign -> encoding
- 文件模板:template
- 鼠标滑轮改变大小:mouse
5. 注释
#
""" """
6. 变量
- 字母
- 数字(不能开头)
- 下划线
- 不能使用python内置关键字
- 下划线分割
7. 输入,输出
v = input(">>>")
import getpass
v = getpass.getpass('>>>')
print(v)
8. 条件语句
if 条件:
成功走这里
else:
失败走这里
if 条件:
...
elif 条件:
...
else:
...
9. 循环语句
while 条件:
continue # 立即开始下次循环
break # 跳出所有循环
10. 练习:
1、使用while循环输入 1 2 3 4 5 6 8 9 10
2、求1-100的所有数的和
3、输出 1-100 内的所有奇数
4、输出 1-100 内的所有偶数
5、求1-2+3-4+5 ... 99的所有数的和
6、用户登陆(三次机会重试)
3. 运算符
i += 1
-
and 和 or,按顺序判断
if 1 == 1 or 1 > 2 and 1 == 4: print('正确') else: print('错误')
if "sth" in content:
4. Python数据类型
1. 整数 int
- 创建
a = 123
a = int(123) - 转换
age = "18"
new_age = int(age)
2.布尔值
- 创建
a = True
b = False - 转换
- 数字转换,只有0是False,其他True
- 字符串, 只有""是False,其他True
- 待续...
3.字符串
创建
a = "as"
a = str('alex')转换
a= str(num)字符串的拼接,两个字符串变量用+拼接。
-
字符串格式化
- 占位符,%s--%('a', 'b')
-
判断子序列是否在其中
if "sth" in content: print('不显示') else: print(content)
移除空白
val = " abc "
val.strip() # 左右
val.lstrip()# 左边
val.rstrip() # 右边-
分割
user_info = "alex bill 9 abc" v1 = user_info.split(' ') #全部分割 v2 = user_info.split(' ',1) #从右边起分割1个 v3 = user_info.rsplit(' ',2) #从左边起分割2个
长度(字符)len(val)
索引 val[0]
print(v)-
切片
print(name[0]) print(name[0:2]) print(name[5:9]) print(name[5:]) print(name[5:-2]) print(name[-2:])
4. 列表
a = ['jack','rose',1984,'alex','bill','christ']
b = list(['zhao','qian','sun'])
#in判断
if 'jack' in a[1]:
print("ok")
else:
print('not ok')
#长度
print(len(a))
#索引
print(a[2])
#切片
v1 = a[:5:2] #起:终:步长
v2 = a[::-2] #从最后开始,步长为2
v3 = a[-3:] #从最后开始,倒数3个
v4 = a[4:-2] #错误写法,显示为空
print(v2)
#追加
a.append('dick')#只能追加一个元素
print(a)
#插入
a.insert(3,'frank')
print(a)
#delete
a.remove('frank')
print(a)
del a[4]
print(a)
#update
a = ['jack', 'rose', 1984, 'alex', 'christ', 'dick']
print(a)
a[0] = 'amy'
print(a)
#for-loop
b = ['zhao','qian','sun']
for any in b: #得到列表中的每个元素
print(any)
5. 字典操作
创建
v = {
'k1': 'v1',
'k2': 'v2'
}索引获取值 n = v['k1']
增加,无,增加;有,修改 v['k3'] = 'v3'
删除 del v['k1']
-
循环
for item in v.keys(): print(item) for item in v.values(): print(item) for key,val in v.items(): print(key,val)
-
相互嵌套
user_list = [ {'name':'alex','pwd':'123','times':1}, {'name':'bill','pwd':'456','times':2}, {'name':'chris','pwd':'789','times':2}, ] for item in user_list: print(item) user = input('pls input the name:') pwd = input('pls input the pwd:') for contents in user_list: # contents 是字典 if user == contents['name'] and pwd == contents['pwd']: print('now you login') break #加else,break放这里循环至直到打印出正确的值,不加else,则只显示正确结果 # else: # print('failure')