1. 数据模块

  a. sysi. sys.pathii. sys.argvb. osi. os.system('cmd')ii. os.popen('cmd')iii. os.mkdir('new_dir')c. 导入自己的模块

os和sys的应用

import sys
print('1 ', sys.path) # 输出查找模块路径
print('2 ', type(sys.path)) # 输出类型
print('3', sys.argv) # 输出改文件的相对路径
print('4', type(sys.argv)) # 输入类型

  1. pyc是什么:
    pyc是执行python文件时生成的,python语音需要先编译后解释,pyc主要起到编译的作用。
    执行程序步骤:1. 首先在.py文件同目录下查找是否与改文件同名且后缀为.pyc的文件

    1. 如无则重新编译并生成.pyc文件,如有则检查.pyc与.py文件的最后修改时间是一致
    2. 如果一致则直接解释,不再编译;如果不一致则重新编译并修改.pyc文件
  2. 数据类型:
    int:整型,整数;python 2.x版本有long; python 3.x没有long,都为int
    float:浮点型,带有小数点的数字
    复数:复数包括实数和虚数,一般为x+yj(x为实数部分,yj为虚数部分,虚数数学里面用i表示,python里面用j来表示(j来自工程学里的说话))
    布尔值:
    真和假
    1或0
    字符串: 没创建一个字符串时需要在内存中开辟一块连续的空间,并且一旦需要修改字符串的话需要再次开辟一块空间。
  3. betys数据类型
# str.decode() 编码:用来将数据转换成二进制,
# str.encode() 解码:用来将二进制转换成utf-8str_decode = '百度一下'
print(str_decode.encode('utf-8'))  # str.encode() 默认为UTF-8,可以不加UTF-8,但是建议加上str_encode = b'\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b'
print(str_encode.decode('utf-8'))   # str.decode() 默认与运行系统一直,如果不是uft-8的系统则会保存,故建议加上utf-8

5.list列表的方法

names_str = '晨龙 成龙 程龙 辰龙 陈龙'
print('1  ', names_str.split(' ')[0])names_list = ['晨龙', '成龙', '程龙', '辰龙', '陈龙', '陈龙', '陈龙']
# list查询
print('2  ', names_list[0])
print('3  ', names_list[2])
print('4  ', names_list[-1])
print('5  ', names_list[1:3])    # 切片:[1:3] 顾前不顾后
print('6  ', names_list[-2:])    #
print('7  ', names_list[-2:0])   # 错误
print('8  ', names_list[:3])# list插入
names_list.append('诚隆')     # list.append加在后面
print('9  ', names_list)
names_list.insert(1, '陈隆')  # list.insert插入到list某个位置   注:不能批量插入
print('10 ', names_list)# list修改
names_list[2] = '小强'    # 将某个位置替换
print('11 ', names_list)# list删除
names_list.remove('小强')
print('12 ', names_list)  # 删除某个元素
del names_list[1]   # 删除某个位置的元素
print('13 ', names_list)
print('14 ', names_list.pop())  # 删除最后一个元素或输入位置删除某个位置元素# list查询某个元素位置
print('15 ', names_list.index('晨龙'))    # 获取元素的位置
print('16 ', names_list[names_list.index('陈龙')])
print('17 ', names_list.count('陈龙'))    # 获取元素出现次数
# names_list.clear()  # 清空list
# print('18 ', names_list)
names_list.reverse()    # 反转list
print('19 ', names_list)names_list = ['A晨龙', 'a陈隆', '#!成龙', 'B程龙', 'd辰龙', 'q陈龙', '陈龙', '2陈龙', '3诚隆']
names_list.reverse()     # 反转list
names_list.sort()   # list排序,安装ASCII码顺序排序
print('20 ', names_list)names_2 = ['A', 2, 3, 4]
names_2.extend(names_list)
print('21 ', names_2)

6.str字符串的方法

str = '  my test one Tw o'
print(str.count('o'))   # 某个字符在str里出现次数
print(str.capitalize())     # 首字母为大写
print(str.center(20, '#'))  # 补全
print(str.endswith(' '))    # 以某字符串结尾
print(str.startswith('m'))  # 以某字符串开头
print(str.encode())     # 编码,转成二进制
print('my \t test one Two '.expandtabs(tabsize=10))     # \t之前占有tabsize个字符
print(str.replace('o', 'AA', 1))    # 将字符串的o替换成AA,count=1代表替换个数,不填则全部
print(str.rfind('t'))   # 找右边第一个字符所在位置
print(str.find('t'))    # 找左边第一个字符所在位置
print(str.rindex('o'))  # 查到最右边字符在字符串的位置
print(str.index('o'))   # 查到最左边字符在字符串的位置
print(str.rjust(20, '+'))   # 字符串占20个字符,不够补+号,默认为空格
print(str.ljust(20, '-'))   # 字符串占20个字符,不够补+号,默认为空格
print(str.rpartition('o'))  # 右边第一个符合字符串的分段成元组
print(str.partition('o'))   # 左边第一个符合字符串的分段成元组
print(str.rsplit('t', 1))   # 从右边开始切片,变成list
print(str.rsplit('t'))      # 从右边开始切片,变成list
print(str.split('m'))       # 从左边开始切片,变成list
print('omy test one Tw o'.rstrip('o'))      # 删除最右边第一个同等的字符串
print('omy test one Tw o'.strip('o'))       # 删除首尾第一个同等的字符串
print('omy,test one Tw o'.title())  # 字符串的首字母大写
str1 = str.maketrans('abcdt', '12245')
print(str.translate(str1))  # 将制定字符串替换
print(str.upper())  # 全部大写
print(str.lower())  # 全部小写
print(str.isupper())    # 首字符大写,返回bool
print(str.islower())    # 首字符小写,返回bool
print(str.isdigit())    # 纯数字
print('omy,test one T\nw o'.splitlines())   # 根据行转成list
print('omy,test one Tw o what'.strip('at'))   # 删除结尾符合条件的字符串
print(str.swapcase())   # x小写变大写,大写变小写
print('omy,test one Tw o what'.join(['1', 'A', 'b', 'c']))   # 用于将序列中的元素以指定的字符连接生成一个新的字符串
print(str.zfill(20))  # 回指定长度的字符串,原字符串右对齐,前面填充0

7.dict字典的方法

person = {'name': 'joy','age': 18,'job': 'tester','salary': 100000
}
print('字典的方法'.center(30, '-'))
person['en_name'] =  'QA'   # 如果键有值则更新键的值,没有值则新建键和值
person['name'] = 'Kate'
print(person)person_cp = person.copy()  # 复制dict
print(person.clear())   # 删除字典,返回None
person_cp.pop('name')   # 删除键的值,需要输入键
print(person_cp)
person_cp.popitem()   # 随机删除键的值,无传参
print(person_cp)
print(person_cp.keys())     # 获取dict的键
print(person_cp.get('age'))     # 获取某个键的值,如果无则返回None
print(person_cp['age'])     # 获取某个键的值,如果无则报错,故一般用dict.get()方法
print(person_cp.values())   # 返回字典的值
print(dict.fromkeys('a', 1))    # 返回新的字典的键和值
print(dict.fromkeys(['a', 'b', 111], 1))    # 返回新的字典的键和值
c = dict.fromkeys(['a', 'b', 111], [1, {'name': 'joy'}, 888])   # 返回新的字典的键和值
print(c)
c['a'][1]['name'] = 'wendy'     # 与浅copy一致
print(c)
print(person_cp.items())  # 返回字典dict的(key,value)元组对的列表
print(person_cp)
new_person = {'age': 88,'company': 'Mopon',1: 'test',4: 12
}
person_cp.update(new_person)    # 2个合并,如果键相同,则更新到字典person_cp中,如果键不同则新建
print(person_cp)
person_cp.setdefault('height', 172)     # 在dict中查找键,未找到则新建,找到了键值不变
person_cp.setdefault('age', 72)
print(person_cp)print('循环'.center(30, '-'))
# 循环
for i in person_cp:         # 效率更高,速度快print(i, person_cp[i])for k, v in person_cp.items():  # 占用内存,速度慢print(k, v)

8.练习购物车

"""
1 输入工资,打印商品信息
2 选择商品编号,购买商品
3 如钱不够则提示,
4 任何时候都可以退出,退出时打印购买商品和余额
"""goods_info = [('移动电源', 99),('冰淇淋', 8),('电影票大话西游', 48),('新鲜盒装羊肉', 68),('空调', 1099),('床上四件套', 108),('三段奶粉', 320),('iPhone X', 6888)
]
shopping_cart = []salary = input('请输入存款:')if salary.isdigit():salary = int(salary)init_money = salaryfor index, item in enumerate(goods_info):print(index, item)while True:goods_no = input('请选择购买商品编号:')if goods_no.isdigit():goods_no = int(goods_no)if goods_no < len(goods_info) and goods_no >= 0:goods_price = goods_info[goods_no][1]if goods_price <= salary:salary -= goods_priceshopping_cart.append(goods_info[goods_no])print('剩余%s元,已购买了商品有:%s ' % (salary, shopping_cart))else:print('金额不足,购买失败,还有 %s 元' % salary)else:print('输入商品编号未找到,请重新输入!')elif goods_no == 'q' or goods_no == 'Q':if salary != init_money:print('余额为 %s 元, 购买的商品有: %s' % (salary, shopping_cart))else:print('出来逛逛,不买东西!!!')exit()else:print('输入的商品编号有误,请重新输入!')
else:print('输入存款有误!')

9.优化购物车

"""
购物车程序:
1、启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表
2、允许用户根据商品编号购买商品
3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
4、可随时退出,退出时,打印已购买商品和余额  ok
5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
6、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
7、允许查询之前的消费记录
"""f_buy = open('buy_info', 'a+', encoding='UTF-8')
f_buy.seek(0)goods = [('pc', 2888),('mac pro', 8888),('book', 46),('ticket', 190)
]shopping = []
username = 'admin'
password = 'admin11'_username = input('登录名:')
_password = input('密  码:')if username == _username and password == _password:print("登录成功!!!")# print(type(len(f_buy.readlines())))if len(f_buy.readlines()) > 0:  # 判断buy_info文件有数据f_buy.seek(0)   # 将光标移动0位置for x in f_buy.readlines(): # 逐行读数据# print(x.strip())if username == x.split(';')[0]:     # 判断是否已经登录的登录名salary = int(x.split(';')[1])   # 获取金额,转成intbuy_goods = x.split(';')[2]     # 获取之前购买的商品信息balance = salarychoice_list = input('C/c:查询历史订单,Q/q:退出,否则继续:')if choice_list == 'c' or choice_list == 'C':print('余额为:\033[1;31;0m {balance} \033[0m,已购买了\033[1;31;0m {buy_goods} \033[0m'.format(balance=salary, buy_goods=buy_goods))elif choice_list == 'q' or choice_list == 'Q':exit()else:   # 如果在buy_info没有找到用户则需要输入工资salary = input('工  资:')if salary.isdigit():salary = int(salary)balance = salaryelse:print('输入工资错误!!!')while True:for index, item in enumerate(goods):    # 获取商品信息及编号print(index, item)user_choice = input('选择购买商品编号>>> ')if user_choice.isdigit():   # 判断输入是否为intuser_choice = int(user_choice)if user_choice < len(goods) and user_choice >= 0:   # 判断输入的编号是否存在商品p_item = goods[user_choice]if p_item[1] <= salary:     # 判断是否能够购买salary = salary - p_item[1]# print('your balance is %d ' % salary)shopping.append(p_item)print('购买清单: \033[1;31;0m %s \033[0m' % shopping)else:print('余额不足,你的余额为:\033[1;31;0m %d \033[0m' % salary)else:print('输入商品编号不存在!!!')elif user_choice == 'q':if salary == balance:print('本次什么也没买!!!')else:print('余额为:\033[1;31;0m %d \033[0m, 购买了商品有:\033[1;31;0m %s \033[0m' % (salary, shopping))f_buy.write(username)f_buy.write(';')f_buy.write(str(salary))f_buy.write(';')f_buy.write(str(shopping))# f_buy.write('\n')exit()else:print('输入错误!!!')else:print('工资输入错误!!!')

Python自动化第二周之数据模块相关推荐

  1. Python学习第二周总结

    Python学习第二周总结 ​ 第二周主要学了python中几种常见的数据结构,分别是列表.元组.字符串.集合.字典重点就是怎么创建和使用这些数据结构,操作方法更是一定要掌握的. 一.列表 1.1 定 ...

  2. Python课程第二周笔记及作业练习

    Python第二周 第二周笔记 作业 练习 第二周笔记 机器语言:代码直接执行,与CPU型号有关: 汇编语言:有助记符,汇编器,与CPU型号有关: 高级语言:接近自然语言,编译器或解释器,与CPU型号 ...

  3. 写给深圳首期Python自动化开发周未班的信

    你是否做了正确的决定? 深圳首期周未班的同学们大家好,我是Alex, 老男孩教育的联合创始人,Python项目的发起人,51CTO学院连续2届最受学员喜爱的讲师,中国最早一批使用Python的程序员, ...

  4. Python学习的第十三天:第二周总结

    文章目录 Python学习的第十三天 random 列表 列表的初步了解 列表的构建 列表的相关运算 列表的操作方法 元组 元组的初步了解 元组的构建 元组的相关运算 元组的应用场景 字符串 字符串的 ...

  5. python编程学习——第二周

    第二周 python学习笔记和做的一些习题 (python编程快速上手--让繁琐工作自动化) 第四章节 列表 列表数据类型 "列表"是一个值,它包含多个字构成的序列. 列表中的值成 ...

  6. python第二周day3

    python第二周day3(9.24) 1.day7字典作业更改版 # 定义一个列表,在列表中保存6个学生的信息(学生信息中包括: 姓名.年龄.成绩(单科).电话.性别(男.女.不明) ) stude ...

  7. python第二周day2

    python第二周day2(9.23) 1.day6列表作业更改版 import random # 随机操作 # random.randint(0, 100) # **1.创建一个列表,列表中有10个 ...

  8. python第二周day5

    python第二周day5(9.27) 1.day9字符串作业更改版 # *1.1输入一个字符串,打印所有奇数位上的字符(下标是1,3,5,7-位上的字符) # 例如: 输入**'abcd1234 ' ...

  9. 第二周 Day 3—— Python容器

    第二周 Day 3 -- 容器 一.列表相关操作 1. 列表推导式 序列变幻成列表 nums = [10, 245, 89, 45] list2 = [x*100 for x in nums] pri ...

最新文章

  1. Hinton胶囊理论代码开源,上线即受热捧
  2. pytorch 激活函数
  3. Vue.js先入个门看看
  4. java编码技巧_编码小技巧 让java编程更便捷
  5. Android笔记 动画之tween(补间)动画demo
  6. php 生产环境 测试环境 同步,开发 RoR PHP Project,测试环境、生产环境部署相关问题...
  7. Java主线程等待所有子线程执行完毕再执行解决办法集
  8. Java 会被新兴语言取代吗?
  9. 【loadrunner】测试手机app性能
  10. java如何解除文件锁定状态_Eclipse操作SVN时中断锁定,文件的解锁方法
  11. MyBatis与JPA的区别是什么
  12. 女人50万年的进化(暴经典)
  13. 模型包装,答辩吹牛方法论!
  14. MySQL入门学习之——实战XtraBackup
  15. Ajax实现图片上传并预览
  16. CSS3之渐变(线性渐变,径向渐变)
  17. redhat 中使用更改yumy源为centos的163源
  18. john 探测(爆破)弱口令(包含linux机器,aix小机)/linux上的shadow文件破解,亲测可用
  19. 用threading+turtle画哆啦A梦,同时播放背景音乐
  20. jQueryAjax学习笔记

热门文章

  1. 2.1数据类型、变量和常量
  2. Involution论文解读:从卷积变换出的神经网络新算子
  3. 一款Github工具包-快速下载网页上的视频
  4. 【模电实验】【超值1 + 1】【验证性实验——比例、求和运算电路实验】【验证性实验——各种非正弦信号发生器实验】
  5. 使用vue+vant搭建商城
  6. CDLinux制作U盘启动器,并设置电脑以U盘启动(一次失败经历的学习笔记)
  7. 视频聊天网站的研究、发展以及趋势时间
  8. 解决/lib/ld-linux.so.2: bad ELF interpreter: No such file or directory报错
  9. 俄罗斯方块【六种模式】【c语言】【史上最强】
  10. 让大数据告诉你,网红“小龙虾”究竟有多火