python课时二
通过上个博客的学习,相信大家已经对Python是什么东西应该有了相对应的了解,这里也包括Python的一些语法(比如Python在写for循环和if判断的时候都是会有缩进的)。这张博客大概会对Python数据类型做一个详细的解释。其中就包括字符串、元组、字典的一些用法。
本节内容
- 列表、元组操作
- 字符串操作
- 字典操作
- 集合操作
- 文件操作
- 字符编码与转码
1. 列表、元组操作
列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作
定义列表
- names=["Leon","CHEN","WU”,"QIAO"]
通过下标访问列表中的元素,下标从0开始计数
- >>> names[0]
- 'Leon'
- >>> names[2]
- 'WU'
- >>> names[-1]
- 'QIAO'
- >>> names[1] #还可以倒着取
- 'CHEN'
切片:取多个元素
- >>> names = ["Leon","CHEN","WU","QIAO"] #去所以0~2的值,这里记住,Python里面的去索引值时顾头不顾尾的
- >>> names[0:2]
- ['Leon', 'CHEN']
- >>> names[0:] #前面为0后面没有值,就是取所有
- ['Leon', 'CHEN', 'WU', 'QIAO']
- >>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
- ['Leon', 'WU']
追加
- >>> names
- ['Leon', 'CHEN', 'WU', 'QIAO']
- >>> names.append("LOVER")
- >>> names
- ['Leon', 'CHEN', 'WU', 'QIAO', 'LOVER']
这里大家的了解一点就是追加是向列表中最后的位置添加一个值
插入
- >>> names
- ['Leon', 'CHEN', 'WU', 'QIAO', 'LOVER']
- >>> names.insert(2,"JACK") #在索引为2的地方插入“JACK”
- >>> names
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'LOVER']
- >>> names.insert(5,"MYLOVER") #在索引为5的点插入“MYLOVER”
- >>> names
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER']
插入方法
- >>> names
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER']
- >>> a = [1,2,3]
- >>> names.extend(a) #在列表后面追加
- >>> names
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
- >>> name_copy = names.copy() #将names 复制一个name_copy
- >>> name_copy
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
- >>> names.count("CHEN") #计算出“CHEN”出现的次数
- 1
- >>> names
- ['Leon', 'CHEN', 'JACK', 'WU', 'QIAO', 'MYLOVER', 'LOVER', 1, 2, 3]
- >>> names.sort() “排序,按照 ASCII码正向排序
- Traceback (most recent call last): #在Python3.X中字符串不能和数字放在一起
- File "<stdin>", line 1, in <module>
- TypeError: unorderable types: int() < str()
- >>> names[-1] = ""
- >>> names[-2] = ""
- >>> names[-3] = ""
- >>> names
- ['CHEN', 'JACK', 'LOVER', 'Leon', 'MYLOVER', 'QIAO', 'WU', '', '', '']
- >>> names.sort()
- >>> names
- ['', '', '', 'CHEN', 'JACK', 'LOVER', 'Leon', 'MYLOVER', 'QIAO', 'WU']
- >>> names.reverse() #反向排序
- >>> names
- ['WU', 'QIAO', 'MYLOVER', 'Leon', 'LOVER', 'JACK', 'CHEN', '', '', '']
- >>> names.index("Leon")
- 3
这里大家需要知道一点copy方法的用处可不止这些,后面会介绍到
这里我们简单介绍下元祖
- names = ("alex","jack","eric")
- names.index()
- names.count()
- #元组只有两种方法,这里就不试了
ps:三元运算
- >>> a = 3
- >>> b = 5
- >>> c = a + b if a > b else a - b #if条件成立执行左边,否则执行右边
- >>> c
- -2
三元运算
2. 字符串相关操作
- name = 'wuzhihu\tliuyao'
- print(name.capitalize()) # 首字母变大写
- print(name.casefold()) #全部变小写
- print(name.center(9,'')) #字符串长度不够的地方用指定的单个字符代替,先右后左
- print(name.count('u')) #统计字符在字符串中出现的次数
- print(name.encode()) #编码转换
- print(name.endswith('h')) #判断字符串已什么结束,返回布尔值
- print(name.expandtabs(5)) #如果字符串中有\t建,则把\t的值设置为50
- print(name.find('u')) #在字符串中找到匹配的字符并返回下标
- msg = 'ni hao {name},我今年{age}'
- print(msg.format(age=22,name=name)) #另一种格式化输出,可以不考虑顺序,还可以直接定义变量
- # print(name.format_map())
- print(name.index('wu')) #字符索引
- m = 'A'
- print(num.isalnum()) #判断字符串是不是全部为阿拉伯数字和字母
- print(num.isalpha()) #判断是否只包含阿拉伯字母
- print(num.isdecimal()) #判断字符串是否只包含十进制数字
- print(num.isdigit()) #判断字符串是否为数字,汉字数字为假
- print(num.isidentifier()) #是不是一个合法的变量名
- print(name.islower()) #判断是否是小写
- print(num.isnumeric()) #判断是否为数字,可判断汉字
- print(num.isprintable()) #可否打印
- print(num.isspace()) #判断是否是空格,空不算,空为False
- print(num.istitle()) #判断是否为标题
- print(num.isupper()) #判断是否全部为大写
- print(num.join('sdf')) #后面的字符串或列表用前面的字符串分割,只能操作一元列表
- print(num.ljust(2,'a')) #从左边数,字符串长度不够用指定的单个字符填充
- print(num.rjust(2,'a')) #从右边数,字符串长度不够用指定的单个字符填充
- print(num.lower()) #将大写变为小写
- print(num.lstrip()) #去除左边空白
- print(num.rstrip()) #去除右边空白
- print(num.rsplit()) #去除右边空白
- from_str = "!@#$%^"
- to_str = "abhziq"
- trans_table = str.maketrans(to_str,from_str)
- print("wuzhihu".translate(trans_table))
- print('wuzhihu'.partition('u')) #按指定字符分割
- print('wuzhihu'.replace('u','bbbbbbbbbbbbbb',1)) #替换字符 ,默认替换全部
- print('wuzhihu'.split('z')) #已指定字符切成列表
相信看过的人都应该发现了端倪,上面的变量对应的一些值为啥都是别人的名字呢,没错,这个并不是我的笔记,而是我同事吴志虎的,况且我做的笔记都这么详细,哪是他这种玩具笔记可以相提并论呢。0.0
3.字典的相关操作
字典一种key - value 的数据类型,使用就像我们上学用的字典,通过笔划、字母来查对应页的详细内容
语法:
- info = {
- 'name1': "LEON",
- 'name2': "CHEN",
- 'name3': "WU",
- }
字典的特性:
- dict是无序的
- key必须是唯一的,so 天生去重
增加、删除、修改、查找
- msg = {
- "name1":"Leon",
- "name2":"jack",
- "name3":"rose",
- "name4":"blue"
- } #创建一个字典
- >>> msg
- {'name3': 'rose', 'name2': 'jack', 'name4': 'blue', 'name1': 'Leon'}
- >>> msg["name5"] = "CHEN" #增加
- >>> msg
- {'name5': 'CHEN', 'name3': 'rose', 'name2': 'jack', 'name4': 'blue', 'name1': '
- eon'}
- >>> msg.pop("name4") #删除方式一
- 'blue'
- >>> msg
- {'name5': 'CHEN', 'name3': 'rose', 'name2': 'jack', 'name1': 'Leon'}
- >>> del msg["name2"] #删除方式二
- >>> msg
- {'name5': 'CHEN', 'name3': 'rose', 'name1': 'Leon'}
- >>> msg.popitem() #随机删除
- ('name5', 'CHEN')
- >>> msg
- {'name3': 'rose', 'name1': 'Leon'}
- >>> "name3" in msg #查看key是否在字典中是返回true,否则FALSE
- True
- >>> msg.get("name3") #获取key对应的value
- 'rose'
- >>> msg["name3"] #获取key 对应的value(方式二)
- 'rose'
- >>> msg["name3"] = "CHEN" #修改key对应的value值
- >>> msg
- >>>{'name3': 'CHEN', 'name1': 'Leon'}
字典的多层嵌套
- msg = {
- "中国":{
- "北京":"海淀",
- "上海":"徐家汇",
- },
- "美国":{
- "纽约":["皇后区","布鲁克林"],
- "洛杉矶":"好莱坞",
- }
- }
ps:知识点补充
- >>> for i,v in enumerate(range(3,10)):
- ... print(i,v)
- ...
- 0 3
- 1 4
- 2 5
- 3 6
- 4 7
- 5 8
- 6 9
- #通过上面的代码我们发现通过enumerate循环的值中分为两个部分i,v其实第一列是索引对应的是i,第二部分对应的是3-10索引的值
通过上面的博文我们得知了字典的一些基本用法,下面我们需要做一个补充
- #values
- >>> info.values()
- dict_values(['LongZe Luola', 'XiaoZe Maliya'])
- #keys
- >>> info.keys()
- dict_keys(['stu1102', 'stu1103'])
- #setdefault
- >>> info.setdefault("stu1106","Leon")
- 'Leon'
- >>> info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
- >>> info.setdefault("stu1102","龙泽萝拉")
- 'LongZe Luola'
- >>> info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
- #update
- >>> info
- {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
- >>> b = {1:2,3:4, "stu1102":"龙泽萝拉"}
- >>> info.update(b)
- >>> info
- {'stu1102': '龙泽萝拉', 1: 2, 3: 4, 'stu1103': 'XiaoZe Maliya', 'stu1106': 'Leon'}
- #items
- info.items()
- dict_items([('stu1102', '龙泽萝拉'), (1, 2), (3, 4), ('stu1103', 'XiaoZe Maliya'), ('stu1106', 'Leon')])
- #通过一个列表生成默认dict,有个没办法解释的坑,少用吧这个
- >>> dict.fromkeys([1,2,3],'testd')
- {1: 'testd', 2: 'testd', 3: 'testd'}
字典的循环:
- #方法1
- for key in info:
- print(key,info[key])
- #方法2
- for k,v in info.items(): #会先把dict转成list,数据里大时莫用
- print(k,v)
话说光看不做假把式,下面有一个联系,博友们也可以看一看
程序:购物车程序
需求:
- 启动程序后,让用户输入工资,然后打印商品列表
- 允许用户根据商品编号购买商品
- 用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
- 可随时退出,退出时,打印已购买商品和余额
- procu_list = [
- ["iphone7",6500],["mackbook",12500],
- ["pen",2],["luleisi",55]
- ]
- shopcart = []
- money = int(input("you're money>>"))
- while True:
- for i,x in enumerate(procu_list):
- print("%s\t%s\t%s"%(i,x[0],x[1]))
- choose = input(">>>").strip()
- if choose.isdigit():
- choose = int(choose)
- if choose < len(procu_list) and choose >= 0:
- product_list = procu_list[choose]
- if money >= product_list[1]:
- money -= product_list[1]
- shopcart.append(product_list)
- print("你购买的是%s花了%s你还剩%s赶紧提好裤子"%(product_list[0],product_list[1],money))
- else:
- lost = product_list[1] - money
- print("你还差%s赶紧把你的老板杀了,你就有钱了..."%(lost))
- continue
- else:
- print("请输入正确的序列")
- elif choose == "exit":
- print(money,shopcart)
- print("alrealding exit...")
- break
购物车答案
4.集合的相关操作
集合是一个无序的,不重复的数据组合,它的主要作用如下:
- 去重,把一个列表变成集合,就自动去重了
- 关系测试,测试两组数据之前的交集、差集、并集等关系
常用操作
- s = set([3,5,9,10]) #创建一个数值集合
- t = set("Hello") #创建一个唯一字符的集合
- a = t | s # t 和 s的并集
- b = t & s # t 和 s的交集
- c = t – s # 求差集(项在t中,但不在s中)
- d = t ^ s # 对称差集(项在t或s中,但不会同时出现在二者中)
- 基本操作:
- t.add('x') # 添加一项
- s.update([10,37,42]) # 在s中添加多项
- 使用remove()可以删除一项:
- t.remove('H')
- len(s)
- set 的长度
- x in s
- 测试 x 是否是 s 的成员
- x not in s
- 测试 x 是否不是 s 的成员
- s.issubset(t)
- s <= t
- 测试是否 s 中的每一个元素都在 t 中
- s.issuperset(t)
- s >= t
- 测试是否 t 中的每一个元素都在 s 中
- s.union(t)
- s | t
- 返回一个新的 set 包含 s 和 t 中的每一个元素
- s.intersection(t)
- s & t
- 返回一个新的 set 包含 s 和 t 中的公共元素
- s.difference(t)
- s - t
- 返回一个新的 set 包含 s 中有但是 t 中没有的元素
- s.symmetric_difference(t)
- s ^ t
- 返回一个新的 set 包含 s 和 t 中不重复的元素
- s.copy()
- 返回 set “s”的一个浅复制
5.文本的相关操作
- Flightless Bird American Mouth - 暮光之城
- I was a quick wet boy
- Diving too deep for coins
- All of your street light eyes
- Wide on my plastic toys
- And when the cops closed the fair
- I cut my long baby hair
- Stole me a dog-eared map
- Called for you everywhere
- Have I found you
- Flightless bird jealous weeping
- Or lost you
- American mouth
- Big pill looming
- Now I'm a fat house cat
- Nursing my sore blunt tongue
- Watching the warm poison rats
- Curl through the wide fence cracks
- Pissing on magazine photos
- Those fishing lures thrown in the cold and clean
- Blood of Christ mountain stream
- Have I found you
- Flightless bird grounded bleeding
- And or lost you
- American mouth
- Big pill stuck going down
- Flightless Bird American Mouth - 暮光之城
歌词文件
基本操作:
文件操作的基本顺序
- 打开文件
- 别写文件
- 关闭文件
文件的三种打开方式:以读的模式打开(r),以写模式打开(w),以追加的模式打开(a)
ps:这里我们得注意一下,文件以读的方式打开就不能写,以写的模式打开就不能读。
实例一:
- f = open("filename","r",encoding="utf-8") #filename是文件名
- date = f.read()
- date = date.replace("oldfile","newfile") #oldfile是需要替换的地方,newfile是替换后的
- f.close()
- f = open("filename","w",encoding="utf-8")
- f.write(date)
- f.close()
另一种读取文件的方式:
- import os
- f = open("filename","r",encoding="utf-8")
- f_new = open(filename","w","encoding="utf-8")
- for line in f:
- #print(line) #这张就可以直接读取文件所有的信息,第二行语句是为了后面替换使用的,于读取问加你无关
- if "oldfile" in f:
- line = line.replace("oldfile","newfile")
- f_new.write(line)
- f.close()
- f_new.close()
- os.remove("filename")
- os.rename("filename","new_filename")
6.字符编码的问题
因为我个人对这方面也不是特别清楚,所以就偷了懒,直接把别人的讲字符编码的博客地址给复制了过来^.^
博客地址:http://www.cnblogs.com/yuanchenqi/articles/5956943.html
这章博客可能做得有点粗糙,不过没有关系,如果有真正想学Python的朋友可以联系我
邮箱地址:yanweijian_tt@163.com
python课时二的更多相关文章
- Python 基础 二
Python 基础 二 今天对昨天学习的Python基础知识进行总结,学而不思则惘,思而不学则殆! 一.先对昨天学习的三大循环的使用情况进行总结: 1.while循环的本质就是让计算机在满足某一条件的 ...
- 初学Python(二)——数组
初学Python(二)——数组 初学Python,主要整理一些学习到的知识点,这次是数组. # -*- coding:utf-8 -*- list = [2.0,3.0,4.0] #计算list长度 ...
- Python学习二:词典基础详解
作者:NiceCui 本文谢绝转载,如需转载需征得作者本人同意,谢谢. 本文链接:http://www.cnblogs.com/NiceCui/p/7862377.html 邮箱:moyi@moyib ...
- 有关python下二维码识别用法及识别率对比分析
最近项目中用到二维码图片识别,在python下二维码识别,目前主要有三个模块:zbar .zbarlight.zxing. 1.三个模块的用法: #-*-coding=utf-8-*- import ...
- PYTHON练习题 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数。
Python 练习 标签: Python Python练习题 Python知识点 二. 使用random中的randint函数随机生成一个1~100之间的预设整数让用户键盘输入所猜的数,如果大于预设的 ...
- 从Scratch到Python——Python生成二维码
# Python利用pyqrcode模块生成二维码 import pyqrcode import sys number = pyqrcode.create('从Scratch到Python--Pyth ...
- 用python生成二维码
Python生成二维码,可以使用qrcode模块, github地址 我是搬运工 首先安装, 因为打算生成好再展示出来,所以用到Pillow模块 pip install qrcode pip inst ...
- Python 实现二维码生成和识别
今天突然想给自己自己做个头像,然后还是二维码的形式,这样只要扫一扫就可以访问我的主页.然后就开始自己的苦逼之路... 其实实现二维码java,c#,C++等都可以实现:由于自己正在学python,所以 ...
- Python - 模块(二)
目录 Python - 模块(二) re re下面的方法 logging os Python - 模块(二) re re模块提供了正则表达式的相关操作 主要字符介绍: . 通配符,除了换行符之外的任意 ...
随机推荐
- Ubuntu下搜狗输入法突然无法输入中文
百度了很久的,后面看到这个帖子,找到解决办法.引用:http://blog.csdn.net/kiss_the_sky/article/details/62238529 删除配置文件,重启搜狗 ubu ...
- WPF之路五:wpf 隐藏与显示 Visibility
WPF里枚举变量Visibility 有三个值:Visible, Collapsed和Hidden.其中Collapsed是WPF新引进的,其作用是不仅隐去Control,同时也会移除Control所 ...
- 老李分享:《Linux Shell脚本攻略》 要点(八)
老李分享:<Linux Shell脚本攻略> 要点(八) 1.打印进程 [root@localhost program_test]# ps -e | head PID TTY ...
- MYSQL数据库导入大数据量sql文件失败的解决方案
1.在讨论这个问题之前首先介绍一下什么是"大数据量sql文件". 导出sql文件.选择数据库-----右击选择"转储SQL文件"-----选择"结构和 ...
- ios坐标位置转换
//ios常用坐标转换来处理一些下拉框队形的按钮的位置,我以最下面两个来进行一下个人的理解,不足之处多多见谅 - (CGPoint)convertPoint:(CGPoint)point toView ...
- Java基础学习
1,基本类型和引用类型 基本类型就是一个盒子,数据本身就保存在盒子里面,引用类型的盒子里放的是数据的五:地址,通过这个地址来找到数据. 基本数据类型和堆中对象的引用保存在栈中,引用类型保存在堆中. 2 ...
- Spring Boot 学习笔记--整合Redis
1.新建Spring Boot项目 添加spring-boot-starter-data-redis依赖 <dependency> <groupId>org.springfra ...
- JQuery处理DOM元素-属性操作
JQuery处理DOM元素-属性操作 //操作元素的属性: $('*').each(function(n){ this.id = this.tagName + n; }) //获取属性值: $('') ...
- (转)使用string.Format需要注意的一个性能问题
今天,我在写C#代码时,突然发现一个最熟悉的陌生人 —— string.Format.在写C#代码的日子里,与它朝夕相伴,却没有真正去了解它.只知道在字符串比较多时,用它比用加号进行字符串连接效率更高 ...
- Filter和Listener的应用——分IP统计网站访问次数
一:分析 统计工作需要在所有资源执行前进行,所以需要放在filter中 这个拦截器仅仅进行统计工作,不进行拦截,所以请求必须继续传递下去 用Map<String,integer>来保存数据 ...