参考博客:http://www.cnblogs.com/wupeiqi/articles/5433893.html1. Python介绍
- 程序员减少开发成本
2. Python和其他语言对比
- C: 机器码
- 其他高级语言: 字节码 -> 机器码
3. Python种类
- CPython : 代码 -> C字节码 -> 机器码 (一行一行)
- pypy: 代码 -> C字节码 -> 机器码 全部转换完 -> 执行
- 其他Python:代码 -> 其他字节码 -> 机器码
4. Python基础
Python规则
1. 安装: python解释器
2. 写程序
C:\Python35\python.exe D:\1.txt
# a. 打开文件,读取文件内容
# b. 词法分析,语法分析
# c. 字节
- 解释器
windows:
C:\Python35\python.exe D:\1.txt
C:\Python35\python.exe
Linux:
C:\Python35\python.exe D:\1.txt
C:\Python35\python.exe
头部#!/usr/bin/python
chmod 755 1.py
./1.py
- 潜规则
.py 结尾
- 编码
最开始:英文256-> ascii :a 00000010 s 00000100 dfasd98123hksinqjkashdakls
万国码(至少16位) :a 00000000 00000010 中 10000000 00000000 00000010 文,日文。lljasdfasdfsfda
utf-8,对万国码压缩 :a 00000010
gbk,gb2312 :a,中 10000000 00000000 00000010 文,日文。lljasdfasdfsfda
中文:龙
utf-8,需要使用三个字节来表示 24 10000000 00000000 00000010
gbk, 需要使用二个字节来表示 16 00100110 00000010
Python编码相关:
- 文件编码
- Python解释器编码(py3 utf-8) # -*- coding:utf-8 -*-
PS: Python解释器编码(ascii)
5. IDE
pycharm
- 使用
1. new project
2. new 创建文件夹
3. new 创建py文件
4. 在py文件中右键, run xx.py
- 文件编码
- 文件模板
- 改变大小
6. 注释
#
""" """
7. .pyc文件,字节码
8. 变量
- 字母
- 数字(不能开头)
- 下划线
- 不能使用python内置关键字
PS: 下划线分割
9. 输入,输出
v = input(">>>")
import getpass
v = getpass.getpass('>>>')
print(v)
10. 条件语句
if 条件:
成功走这里
else:
失败走着
应用:
import getpass
name = input("请输入姓名:")
pwd = getpass.getpass('请输入密码:')
if name == 'alex' and pwd == 'sb':
print('欢迎登陆')
else:
print('滚蛋')
if 条件:
...
elif 条件:
...
else:
...
应用:
username = input('>>>')
if username == 'alex':
print('普通管理')
elif username == 'oldboy':
print('超级管理')
elif username == '郭少龙':
print('人')
elif username == '刘一':
print('装逼犯')
else:
print('再见...')
print('end')
11. 循环语句
while 条件:
continue # 立即开始下次循环
break # 跳出所有循环
12. 练习:
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、用户登陆(三次机会重试)
13. 上述内容总结
a. input getpass.getpass
b.
if 条件:
...
elif 条件:
...
else:
pass
c.
while 循环:
break 跳出所有循环
continue 结束本次循环
d. 编码
- 文件编码
- 解释器编码
# -*- coding:utf-8 -*-
e. 字符串编码
- ascii
- unicode 至少2个字节 = 10位
- utf-8 压缩版,中文3个字节
- gbk gb2312中文2个字节
f. pycharm
- project
- .py
- 编码 coding
- 模板 template
- 鼠标滚动 mouse
g. 快捷键
- #
- """ """
- Ctrl + ?
h. print("asdf")
i. 变量
字母
数字(不能开头)
下划线
不能是关键字
_
其他:
i = 0
i += 1 # i = i + 1
3%2
age = 18
name = 'alex'
name = "alex"
name = """alex"""
name = "'alex'"
name = """
asdfalex
asdfasdf
asdf
"""
5. 运算符
注意:
a.
i += 1
b.
if 1 == 1 or 1 > 2 and 1 == 4:
print('正确')
else:
print('错误')
c.
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
if "前几天去" in content:
print('包含敏感字符')
else:
print(content)
6. Python数据类型
a. 整数 int
- 创建
a = 123
a = int(123)
- 转换
age = "18"
new_age = int(age)
b. 布尔值
- 创建
a = True
b = False
- 转换
- 数字转换,只有0是False,其他True
- 字符串, 只有""是False,其他True
- 待续...
c. 字符串
- 创建
a = "alex"
a = str('alex')
- 转换
age = 19
new_age = str(age)
- 字符串的拼接
name = 'alex'
gender = '女'
new_str = name + gender
print(new_str)
- 字符串格式化
# 占位符,
# name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!'
# new_str = name %('男',19,)
# print(new_str)
name = '我叫李杰,性别:%s,我今年%s岁,我在说谎!' %('男',19,)
print(name)
- 判断子序列是否在其中
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
if "前几天去" in content:
print('包含敏感字符')
else:
print(content)
- 移除空白
val = " alex "
print(val)
# new_val = val.strip() # 左右
# new_val = val.lstrip()# 左边
# new_val = val.rstrip() # 右边
# print(new_val)
- 分割
user_info = "alex sb123 9"
# v = user_info.split('|')
# v = user_info.split('|',1)
# v = user_info.rsplit(' ',1)
# print(v)
- 长度(字符)
val = "李杰sb"
v = len(val)
print(v)
- 索引
val = "李杰sb"
v = val[0]
print(v)
val = input('>>>')
i = 0
while i < len(val):
print(val[i])
i += 1
- 切片
name = '我叫李杰,性别我今年岁,我在说谎!'
print(name[0])
print(name[0:2])
print(name[5:9])
print(name[5:])
print(name[5:-2])
print(name[-2:])
d. 列表
创建:
a = ['alex','狗','eric',123]
a = list(['alex','狗','eric',123])
in判断:
if 'al' in a:
pass
if 'al' in a[0]:
pass
索引:
val = a[0]
长度:
val = len(a)
切片:
a = ['alex','狗','eric',123]
v = a[0::2]
print(v)
追加:
a = ['alex','狗','eric',123]
a.append('xxoo')
print(a)
插入:
a = ['alex','狗','eric',123]
a.insert(0,'牛')
print(a)
删除:
a = ['alex','eric','狗','eric',123]
# a.remove('eric')
del a[0]
print(a)
更新:
a = ['alex','eric','狗','eric',123]
a[1] = '阿斯顿发送到'
print(a)
For循环:
a = ['alex','eric','狗','eric',123]
for item in a:
print(item)
# break
# continue
e. 字典操作
- 创建
v = {
'name': 'alex',
'password': '123123'
}
# 常用操作
# 索引获取值
# n = v['name']
# print(n)
# 增加,无,增加;有,修改
# v['age'] = 19
# print(v)
# 删除
# del v['name']
# print(v)
# 循环
# for item in v.keys():
# print(item)
# for item in v.values():
# print(item)
# for key,val in v.items():
# print(key,val)
print(len(user_dict))
PS: 相互嵌套
user_dict = {
'k1': 'v1',
'k2': {'kk1':'vv1','kk2':'vv2'},
'k3': 123,
'k4': ['alex','eric',['a','b','c'],'李杰',{'k11':'vv1'}],
}
user_dict['k4'][2].append('123')
user_dict['k4'][4]['n'] = '过啥龙'
应用:
user_list = [
{'name':'alex','pwd':'123123','times':1},
{'name':'eric','pwd':'123123','times':1},
{'name':'tony','pwd':'123123','times':1},
]
user = input('用户名:')
pwd = input('密码:')
for item in user_list:
if user == item['name'] and pwd == item['pwd']:
print('登录成功')
break
示例:
db
alex|123123|3
eric|123123|3
login.py
#!/usr/bin/python
# -*- coding:utf-8 -*-
# 1. 打开并读取文件内容
f1 = open('db','r')
data = f1.read()
f1.close()
# 2. 格式化,列表中嵌套字典
print(data)
user_info_list = []
user_str_list = data.split('\n')
for item in user_str_list:
temp = item.split('|')
v = {
'name': temp[0],
'pwd': temp[1],
'times': temp[2]
}
user_info_list.append(v)
user_info_list[1]['times'] = 3
print(user_info_list)
# 3. 列表中嵌套的字典
#
# 4. 重新写入文件
target = """alex|123123|3\neric|123123|3"""
f2 = open('db','w')
f2.write(target)
f2.close()
作业:
1. 基于文件存储的用户登录程序(3次登录失败,锁定用户)
先补充示例
2. 练习题:
a. 元素分类
有如下值集合 v1 = [11,22,33,44,55,66,77,88,99,90],
将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
v2 = {'k1': [],'k2':[] }
b. 功能要求:
v = 2000
要求用户输入总资产,例如:2000
显示商品列表,让用户根据序号选择商品,加入购物车
购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
num = input('>>>') # 1
num = int(num)
goods[num]['price']
c. 用户交互,显示省市县三级联动的选择
dic = {
"河北": {
"石家庄": ["鹿泉", "藁城", "元氏"],
"邯郸": ["永年", "涉县", "磁县"],
}
"河南": {
...
}
"山西": {
...
}
}
for v in dic.keys():
print(v)
inp = input('>>>')
dic[inp]