Python First Day
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python First Day相关的知识,希望对你有一定的参考价值。
A. python介绍
- 可以减少开发成本,代码开源
- 运行速度慢
B. python和其它语言对比
- C语言 : 编译 -> 机器码 -> 计算机
- 其它高级语言: 编译 -> 字节码 -> 机器码 -> 计算机
C. python种类
- CPython 代码 -> C字节码 -> 机器码 (一行一行)
- PYPY(特殊)代码 -> C字节码 -> 机器码 全部转换完 -> 执行
- 其它Python 代码 -> 其它字节码 -> 机器码
D. python基础
a. 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:
方法一:/usr/bin/python /1.txt
方法二:/usr/bin/python
头部#!/usr/bin/python
chmod 755 1.py
./1.py
- 潜规则
.py 结尾
b. 编码
- 英文 256个-> ascii :a 00000010 由八位组成
- 万国码(至少16位) :a 00000000 00000010 中:10000000 00000000 00000010 最少十六位,没有上限
utf-8,对万国码压缩 :a 00000010 中:10000000 00000000 00000010 最少八位,没有上限
gbk,gb2312 :a 00000010 中: 00100110 00000010
例:
中文:龙
utf-8,需要使用三个字节来表示 24 10000000 00000000 00000010
gbk,gb2312 需要使用二个字节来表示 16 00100110 00000010
- Python编码相关:
文件编码
# -*- coding:utf-8 -*- 声明解释编码
Python解释器编码(py3默认 utf-8)
Python解释器编码(py2默认 ascii)
E. IDE
- pycharm
1.使用
- 添加或者修改文件模板
File->settings->Editor->File and Code Templates->Python Script
添加:
#!/usr/bin/python
# -*- coding:utf-8 -*-
- python版本管理切换
File->settings->Prgject:python->project interpreter
- 已有文件重命名
右击要重命名的文件->refactor->rename
- Python模块安装
File->settings->Prgject:python->project interpreter
- PyChram Tab键补全
file -> Power Save Mode
- PyChram字符集编码设置为UTF-8
File->settings->Editor->Code Style->File Encodings
- PyChram字体设置
File->settings->Editor->Colors & Fonts->Font
- Ctrl+鼠标调整比例
File->settings->Editor->General ->Change font size ....
- 快捷键
alt+ctrl+s # 打开设置界面
tab # 选择要缩进的代码,按键缩进
shift+tab # 选择要缩进的代码,按键增加
ctrl+d # 复制本行粘贴到下一行
ctrl+? #选择要添加注释的行,按键进行#添加或去除
双按shift #全局搜索
ctrl+/ #注释
ctrl+F #查找
ctrl+R #查找替换
F. 注释
#
""" """
G. .pyc文件,字节码文件
- import + 文件名
H. 变量
- 字母
- 数字(不能开头)
- 下划线
- 不能使用python内置关键字
- PS: 下划线分割
n = "name"
v = "name"
#只开辟一个内存空间 ,存在优化机制
n = "name"
v = n
n = "pwd"
#n为pwd ,v 为name
I. 输入,输出
v = input(">>>")
等待用户输入,显示输入内容 ,输出的数字 7 为 "7" 用int()转换
import getpass
v = getpass.getpass(‘>>>‘)
等待用户输入,不显示输入内容
print(v)
J. 条件语句
- 严格的缩进
- 例
if 条件 :
满足执行这
elif 条件:
否则满足执行这
else:
都不满足执行这
- pass 什么都不执行
K. 循环语句
while 条件:
- continue 结束本次循环
- break 结束循环
- exit() 退出脚本
L. 其它
i += 1 相等于 i = i + 1
3%2 等于 1
age = 18 数字
age = ‘18‘ 字符串
name = ‘alex‘
name = "alex"
name = """alex"""
name = "‘alex‘"
name = """
asdfalex
asdfasdf
asdf
"""
M. 运算符
2、比较运算:
3、赋值运算:
4、逻辑运算:
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)
N. Python数据类型
a. 整数 int
- 创建
a = 123
a = int(123)
- 转换
age = "18"
new_age = int(age)
- 验证
print(type(a))
b. 布尔值
- 创建
a = True
b = False
- 转换
v = bool(1) 数字转换只有0为False 其它Ture
a = ""
v = bool(a) 字符串,只有""是False,其他True
待续...
c. 字符串
- 创建
a = "alex"
a = str(‘alex‘)
- 转换
age = 18
new_age = str(age)
- 字符串的拼接
name = ‘alex‘
gender = ‘女‘
new_str = name + gender
- 字符串格式化
# 占位符,%s字符串 %d 数字
# name = ‘我叫李杰,性别:%s,我今年%s岁,我在说谎!‘
# new_str = name %(‘男‘,18,)
- 判断子序列是否在其中
content = "Alex 前几天去泰国玩姑娘,一不小心染上了病,他的内心活动是,真该多来几个"
if "前几天去" in content:
print(‘包含敏感字符‘)
else:
print(content)
- 移除空白
val = " alex "
# new_val = val.strip() # 左右
# new_val = val.lstrip()# 左边
# new_val = val.rstrip() # 右边
- 分割
user_info = "alex|sb123|9"
# v = user_info.split(‘|‘)
# v = user_info.split(‘|‘,1)
# v = user_info.rsplit(‘ ‘,1)
- 长度(字符)
val = "李杰sb"
v = len(val) #等于4
- 索引
val = "李杰sb"
v = val[0] #等于 李
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:])
- 列表
创建:
a = [‘alex‘,‘狗‘,‘eric‘,123]
a = list([‘alex‘,‘狗‘,‘eric‘,123])
in判断
if ‘alex‘ in a:
if ‘al‘ in a[0]:
索引
val = a[0]
长度
val = len(a)
切片
a = [‘alex‘,‘狗‘,‘eric‘,123]
v = a[0::2]
print(v)
追加
a.append(‘xxoo‘)
# 在最后追加
插入
a.insert(0,‘牛‘)
# 在索引前边添加
删除
a.remove(‘eric‘)
# 删除匹配到的第一个
del a[0]
# 按索引删除
替换
a[1] = ‘asd‘
# 按照索引替换
For循环
for item in a:
print(item)
#输出每个元素
- 字典
创建
v = {
‘name‘: ‘alex‘,
‘password‘: ‘123123‘
}
# 字典是无序的
索引
n = v[‘name‘]
增加,无,增加;有,修改
v[‘age‘] = 19
删除
del v[‘name‘]
For循环
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‘] = ‘过啥龙‘
- 文件
创建文件db
#读文件
f1 = open(‘db‘,‘r‘)
date = f1.read()
f1.close()
#格式化
# sys|123456|3
# sy|123456|0
# 转换成
# [{‘pwd‘: ‘123456‘, ‘name‘: ‘sys‘, ‘num‘: ‘3‘}, {‘pwd‘: ‘123456‘, ‘name‘: ‘sy‘, ‘num‘: ‘0‘}]
user_info_list = []
user_str_list = date.split(‘\\n‘)
for item in user_str_list:
temp = item.split(‘|‘)
v = {
‘name‘:temp[0],
‘pwd‘:temp[1],
‘num‘:temp[2]
}
user_info_list.append(v)
# [{‘pwd‘: ‘123456‘, ‘name‘: ‘sys‘, ‘num‘: ‘3‘}, {‘pwd‘: ‘123456‘, ‘name‘: ‘sy‘, ‘num‘: ‘0‘}]
# 转换成
# sys|123456|3
# sy|123456|0
user_str_list = []
for item in user_info_list:
temp = "%s|%s|%s"%(item[‘name‘],item[‘pwd‘],item[‘num‘])
user_str_list.append(temp)
target = "%s\\n%s"%(user_str_list[0],user_str_list[1])
#写文件
f2 = open(‘db‘,‘w‘)
f2.write(target)
f2.close()
--------------------------------------------------------------------------------------------------------------------------------------------------------------
练习1
有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。
即: {‘k1‘: 大于66的所有值, ‘k2‘: 小于66的所有值}
答:
A = [11,22,33,44,55,66,77,88,99]
A1 = []
A2 = []
B = {‘k1‘:A1,‘k2‘:A2}
for item in A:
if item < 66:
A1.append(item)
elif item == 66:
pass
else:
A2.append(item)
print(B)
练习2
功能要求:
- 要求用户输入总资产,例如:2000
- 显示商品列表,让用户根据序号选择商品,加入购物车
- 购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
- 附加:可充值、某商品移除购物车
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
答:
goods = [
{"name": "电脑", "price": 1999},
{"name": "鼠标", "price": 10},
{"name": "游艇", "price": 20},
{"name": "美女", "price": 998},
]
amount = 2000
card = []
print(‘欢迎光临!‘)
while True:
option = input(‘1.购物\\n2.查询购物车\\n3.结账\\n4.查询余额\\n5.充值\\n6.退出\\n请输入:\\n‘)
if option == ‘1‘:
for item in goods:
print(item[‘name‘],item[‘price‘],‘元‘)
type = ‘y‘
while type != ‘q‘:
res = input(‘请输出购买商品:‘)
for item in goods:
if res == item[‘name‘]:
card.append(item)
print(‘已加入购物车‘)
type = input(‘按任意键继续购买,按q返回主页‘)
elif option == ‘2‘:
option_1 = ‘n‘
while option_1 != ‘q‘:
type = input(‘查看购物车请按1,删除商品请按2,按q键返回主页‘)
if type == ‘1‘:
for item in card:
print(item[‘name‘],item[‘price‘],‘元‘)
elif type == ‘2‘:
option_2 = ‘n‘
while option_2 != ‘q‘:
res = input(‘请输入要删除的商品名:‘)
for item in card:
if res == item[‘name‘]:
card.remove(item)
print(‘删除成功‘)
option_2 = input(‘任意键继续删除,按q键返回‘)
elif type == ‘q‘:
option_1 = ‘q‘
else:
print(‘请正确输入‘)
elif option == ‘3‘:
num = 0
for item in card:
money = int(item[‘price‘])
num += money
if amount >= num:
amount -=num
print(‘已结账‘)
card = []
else:
print(‘余额不足‘)
option_1 = input(‘返回主页请按任意键,退出请按q‘)
if option_1 == ‘q‘:
break
else:
continue
elif option == ‘4‘:
amount_1 = str(amount)
print(‘当前余额为:‘ + amount_1)
option_1 = input(‘返回主页请按任意键,退出请按q‘)
if option_1 == ‘q‘:
break
else:
continue
elif option == ‘5‘:
option_2 = ‘n‘
while option_2 != ‘q‘:
money = input(‘请输出充值金额:‘)
if money.isdigit():
pass
else:
print(‘请正确输入!‘)
continue
option_1 = input(‘确认请按y,返回请按任意键!‘)
if option_1 == ‘y‘:
money = int(money)
amount += money
print(‘充值成功‘)
option_2 = input(‘继续充值请按任意键,返回请按q‘)
else:
print(‘充值失败‘)
option_2 = input(‘继续充值请按任意键,返回请按q‘)
continue
elif option == ‘6‘:
break
else:
print(‘请正确输出选项!‘)
continue
print(‘谢谢光临!‘)
练习3
交互式显示省市县三级联动
答:
dic = {
"河北":{
"石家庄" :["鹿泉","藁城","元氏"],
"邯郸" : ["永年","涉县","磁县"]
},
"河南":{
"郑州":["巩义","登封","新密"],
"开封":["金明","鼓楼","通许"]
},
"山西":{
"太原":["古交","清徐","阳曲"],
"大同":["天镇","阳高","广灵"]
}
}
back = ‘n‘
while back != ‘q‘:
i = 0
for item in dic.keys():
i += 1
print("%d.%s"%(i,item))
option = input(‘请输入查询的地区:‘)
if option not in dic.keys():
print(‘请正确输出‘)
back = input(‘退出请按q,按任意键继续‘)
else:
back_1 = ‘n‘
while back_1 != ‘q‘:
i = 0
for item in dic[option].keys():
i += 1
print("%d.%s"%(i,item))
option_1 = input(‘请输入查询的地区:‘)
if option_1 not in dic[option].keys():
print("请正确输出")
back_1 = input("返回请按q,退出请按Q,按任意键继续")
if back_1 == ‘Q‘:
print("谢谢使用")
exit()
else:
pass
else:
back_2 = ‘n‘
while back_2 != ‘q‘:
i = 0
for item in dic[option][option_1]:
i += 1
print("%d.%s"%(i,item))
back_2 = input(‘返回请按q,退出请按Q‘)
if back_2 == ‘Q‘:
print("谢谢使用")
exit()
else:
pass
作业
1. 基于文件存储的用户登录程序(3次登录失败,锁定用户)
答:
db文件为
sys|123456|0
sy|123456|0
f1 = open(‘db‘,‘r‘)
date = f1.read()
f1.close()
user_info_list = []
user_str_list = date.split(‘\\n‘)
for item in user_str_list:
temp = item.split(‘|‘)
v = {
‘name‘:temp[0],
‘pwd‘:temp[1],
‘num‘:temp[2]
}
user_info_list.append(v)
back = ‘n‘
while back != ‘q‘:
user_name = input(‘请输出用户名:‘)
import getpass
user_pwd = getpass.getpass(‘请输出密码:‘)
option = ‘0‘
for item in user_info_list:
if user_name in item[‘name‘]:
option = ‘0‘
user_num = int(item[‘num‘])
if user_num < 3:
if user_pwd == item[‘pwd‘]:
print(‘登录成功!‘)
item[‘num‘] = 0
exit()
else:
item[‘num‘] = user_num + 1
option = ‘1‘
break
else:
print(‘用户被锁!‘)
exit()
else:
option = ‘1‘
if option == ‘1‘:
print(‘用户名密码或错误!‘)
else:
pass
back = input(‘按q退出,任意键继续!‘)
user_str_list = []
for item in user_info_list:
temp = "%s|%s|%s"%(item[‘name‘],item[‘pwd‘],item[‘num‘])
user_str_list.append(temp)
target = "%s\\n%s"%(user_str_list[0],user_str_list[1])
f2 = open(‘db‘,‘w‘)
f2.write(target)
f2.close()
以上是关于Python First Day的主要内容,如果未能解决你的问题,请参考以下文章