基础语法
1.数据类型
-
string
name.capitalize() # 句首字母大写 name.count('o') # 计数 name.center(50, '-') # 居中 name.endswith('ng') # 结尾 name.startswith('my') # 开头 name.find('Long') name.lower() # 小写 name.swapcase() # 大小写转换 name.title() # 句首字母大写 '+'.join(['1', '2', '3']) # 连接符 name.lstrip() # 去左边空格或回车 name.strip() # 去空格和回车 name.split('n', 1) # 分割提取,后为提取个数-1 name.rsplit('n') # 分割提取 p = str.maketrans('abcdef', '123456') # 替换加密方法 name.translate(p) name.replace('m', 'M', 1) # 替换 # 判断 name.isalnum() # 阿拉伯字符或数字 name.isalpha() # 英文字符 name.isdigit() # 整数 name.isdecimal() # 十进制 name.islower() # 小写 name.isidentifier() # 判读是不是一个合法的标识符 name.isnumeric() name.istitle() name.isprintable() # tty file ,drive file name.isupper() name.expandtabs(tabsize=30) name[name.find("name"):] name.format(name='alex', year=23) name.format_map({'name': 'alex', 'year': 12}) name.ljust(50, '*') name.rjust(50, '-') 'alex lil'.rfind('l') '1+2 +3+4'.splitlines() 'lex li'.zfill(50)
2.for,while,if
3.list,dict,set,tuple
-
list
# 列表切片 names[0:-1:2] # 含首不含尾 names[::2] names[:] range(1,10,2) # 自动数字列表 for i in names: print(i) import copy name2 = copy.deepcopy(names) # 深拷贝 names.append("LeiHaidong") # 追加 names.insert(1, "ChenRonghua") # 插入 names.remove("ChenRonghua") # 删除指定值 del names[1] # 根据索引删除 names.pop(1) # 根据索引删除,返回值 names.index("XieDi") # 获取索引 names.count("ChenRonghua") # 统计某个元素在列表中出现的次数 names.clear() # 清空列表 names.reverse() # 反转列表 names.sort() # 对原列表进行排序 names.extend(names2) # 合并列表,追加到结尾
http://www.runoob.com/python3/python3-list.html
-
dict
info = {'1': 2, '2': 3, '3': 4} info['1'] # 查找,没有则报错 info.get('2') # 查找,没有则返回None info.values() # 取所有值 info.keys() # 取所有key info.items() # 取key和value info.setdefault('1', 1) # 有则不变,无则替换 info['5']=info.pop('1') # 修改键,删除原来键并将值赋给新键 info.update(date) # 合并字典,添加元素 for i in info: # 循环 i为key print(i, info[i])
-
set
# 重复key自动过滤,无序 set1 = set((1, 2, 45, 5, 5, 1)) set2 = {1, 2, 5, 45} # set的关系测试、 set3 = set1 & set2 # 交集 & set1.intersection(set2) # 交集 & set1.union(set2) # 并集 | set1.difference(set2) # 差集 - set1.issubset(set2) # 子集 set1.issuperset(set2) # 父集 set1.symmetric_difference(set2) # 对称差集 ^ set1.isdisjoint(set2) # 无交集 set1.discard(set2) # 删除 set1.add(999) # 添加一项 无insert set1.update([888, 777, 555]) # 添加多项 set1.remove(555) # 删除,不存在报错 set1.pop() # 随机删除并返回该值 set1.discard(888) # 有则删除,不存在不报错
IO操作
with open('text.txt', 'w', encoding="utf-8") as f:
f.write('我王境泽就算饿死
')
# 操作方式
w:以写方式打开,
a:以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+:以读写模式打开
w+:以读写模式打开 (参见 w )
a+:以读写模式打开 (参见 a )
rb:以二进制读模式打开
wb:以二进制写模式打开 (参见 w )
ab:以二进制追加模式打开 (参见 a )
rb+:以二进制读写模式打开 (参见 r+ )
wb+:以二进制读写模式打开 (参见 w+ )
ab+:以二进制读写模式打开 (参见 a+ )
f.read([size]) # size为读取的长度,以byte为单位
f.readline([size]) # 读取一行
f.readlines([size]) # 分行读取,将每一行作为一个元素放进list, size是表示读取内容的总长
f.write(str) # 把str写到文件中,不自动换行
f.writelines(seq) # 把seq的内容全部写到文件中(多行一次性写入)
f.close() # 关闭文件
f.flush() # 实时刷新,把缓冲区的内容写入硬盘
f.fileno() # 返回一个长整型的"文件标签"
f.isatty() # 文件是否是一个终端设备文件(unix系统中的)
f.tell() # 返回文件操作标记的当前位置,以文件的开头为原点
f.next() # 返回下一行数据,并将光标移动到下一行。for … in file就是调用next()函数来实现遍历的。
f.seek(offset,whence) # 将文件操作标记移到指定位置。默认从开头来计算的,一般为正数。whence参数为0表示从头开始计算,1表示以当前位置为原点计算,2表示以文件末尾为原点进行计算
# 需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
f.truncate([size]) # 把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
http://www.runoob.com/python3/python3-inputoutput.html
格式化输出/交互
-
第一种%s
info = ''' -------- info of %s ----- Name:%s Age:%d Job:%s Salary:%s ''' % (name, name, age, job, salary)
-
第二种.format 指定key
info2 = ''' -------- info of {_name} ----- Name:{_name} Age:{_age} Job:{_job} Salary:{_salary} '''.format(_name=name, _age=age, _job=job, _salary=salary)
-
第三种.format 按顺序
info3 = ''' -------- info of {0} ----- Name:{0} Age:{1} Job:{2} Salary:{3} '''.format(name, age, job, salary) print(info3)
函数的参数与调用
test(y=2,x=1) # 关键字调用:与形参顺序无关
test(1,2) # 位置参数调用:必须与形参一一对应
test(3, z=2, y=6) # 关键字调用必须在位置调用之后
-
*args:接受N个位置参数,转换成元组形式
def test1(x, *args): print(x) print(args) test1(1, 2, 3, 4, 5, 6, 7) # 按顺序赋值, 1传给x,其他以元组传给*args test(*[1, 2, 4, 5, 5]) # args=tuple([1,2,3,4,5])
-
**kwargs:接受N个关键字参数,转换成字典的方式
def test4(name, age=18, *args, **kwargs): print(name) print(age) print(args) print(kwargs) test4('alex', age=34, sex='m', hobby='tesla')
进度条输出
import sys,time
for i in range(20):
sys.stdout.write("#")
sys.stdout.flush()
time.sleep(0.1)
作业
作业1:博客
作业2:编写登录接口
输入用户名密码
输入正确后显示欢迎界面
输错三次锁定
作业3:多级菜单
三级菜单
可依次选择进入各子菜单
需要列表、字典知识点
作业4:购物车
用户入口:
1.txt.商品信息存在文件里
2.用户记录保存在文件里
商家入口:
1.txt.添加商品
2.修改商品名称