《Python入门+Python爬虫》——2Day Python基础 ——python字符串、列表、元组、集合、字典、函数

Python学习版本: Python 3.X
观看:Python入门+Python爬虫+Python数据分析
在这里插入图片描述

3字符串、列表、元组、字典

名称定义编写方式
列表(List)是一种有序和可更改的集合。允许重复的成员。[]
元组(Tuple)是一种有序且不可更改的集合。允许重复的成员。()
集合(Set)是一个无序和无索引的集合。没有重复的成员。{}
字典(Dictionary)是一个无序,可变和有索引的集合。没有重复的成员{} 拥有键和值

3.1字符串

在这里插入图片描述

word = '字符串'
sentence = "这是一个句子。"
paragraph = """这是一个段落,
可以由多行组成"""
3.1.1 单引号和双引号如何选择?

1、包含单引号的字符串
假如你想定义一个字符串my_str,其值为: I’m a student,则可以采用如下方式,通过转义字符 \ 进行定义。

my_str = 'I\'m a student'

也可以不使用转义字符,利用双引号直接进行定义。

my_str = "I'm a student"

2、包含双引号的字符串
假如你想定义一个字符串my_str,其值为: Jason said “I like you” ,则可以采用如下方式,通过转义字符 \ 进行定义。

my_str = "Jason said \"I like you\""

也可以不使用转义字符,利用单引号直接进行定义。

my_str = 'Jason said "I like you"'
3.1.2 转义字符

在这里插入图片描述

3.1.3 字符串的截取和连接
str='chengdu'
print(str) # 输出字符串
print(str[0:-1]) # 输出第一个到倒数第二个的所有字符
print(str[0]) # 输出字符串第一个字符
print(str[2:5]) # 输出从第三个开始到第五个的字符
print(str[2:]) # 输出从第三个开始后的所有字符
print(str * 2) # 输出字符串两次
print(str + '你好') # 连接字符串
print(str[:5]) # 输出第五个字母前的所有字符
print(str[0:7:2]) # [起始:终止:步长]
print('------------------------------')
print('hello\nchengdu') # 使用反斜杠(\)+n转义特殊字符
print(r'hello\npython') # 在字符串前面添加一个 r,表示原始字符串,不会发生转义
3.1.4 字符串的常见操作
方法描述
bytes.decode(encoding=“utf-8”, errors=“strict”)Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由str.encode() 来编码返回。
encode(encoding=‘UTF-8’,errors=‘strict’)以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是’ignore’或者’replace’
isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回False
isalpha()如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False
isdigit()如果字符串只包含数字则返回 True 否则返回 False…
isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False
join(seq)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串
lstrip()截掉字符串左边的空格或指定字符。
split()在指定的分隔符处拆分字符串,并返回列表。
rstrip()删除字符串字符串末尾的空格.
capitalize()把首字符转换为大写。
casefold()把字符串转换为小写。
center()返回居中的字符串。
count()返回指定值在字符串中出现的次数。
endswith()如果字符串以指定值结尾,则返回 true。
expandtabs()设置字符串的 tab 尺寸。
find()在字符串中搜索指定的值并返回它被找到的位置。
format()格式化字符串中的指定值。
format_map()格式化字符串中的指定值。
index()在字符串中搜索指定的值并返回它被找到的位置。
isupper()如果字符串中的所有字符都是大写,则返回 True。
ljust()返回字符串的左对齐版本。
lower()把字符串转换为小写。
lstrip()返回字符串的左修剪版本。
maketrans()返回在转换中使用的转换表。
partition()返回元组,其中的字符串被分为三部分。
replace()返回字符串,其中指定的值被替换为指定的值。
rfind()在字符串中搜索指定的值,并返回它被找到的最后位置。
rindex()在字符串中搜索指定的值,并返回它被找到的最后位置。
rjust()返回字符串的右对齐版本。
rpartition()返回元组,其中字符串分为三部分。
rsplit()在指定的分隔符处拆分字符串,并返回列表。
splitlines()在换行符处拆分字符串并返回列表。
startswith()如果以指定值开头的字符串,则返回 true。
strip()返回字符串的剪裁版本。
swapcase()切换大小写,小写成为大写,反之亦然。
title()把每个单词的首字符转换为大写。
translate()返回被转换的字符串。
upper()把字符串转换为大写。

3.2 列表

在这里插入图片描述

3.2.1 列表的定义与访问

列表的格式
变量A的类型为列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']

比C语言的数组强大的地方在于列表中的元素可以是不同类型的

testList = [1, 'a']

打印列表

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
print(namesList[0])
print(namesList[1])
print(namesList[2])

列表的循环遍历
为了更有效率的输出列表的每个数据,可以使用循环来完成

namesList = ['xiaoWang','xiaoZhang','xiaoHua']
for name in namesList:
	 print(name)
3.2.3 常用操作

在这里插入图片描述
在这里插入图片描述

3.2.4 列表的嵌套

列表嵌套
类似while循环的嵌套,列表也是支持嵌套的
一个列表中的元素又是一个列表,那么这就是列表的嵌套

schoolNames = [['北京大学','清华大学'],
				['南开大学','天津大学','天津师范大学'],
				['山东大学','中国海洋大学']]
  • 应用
    一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配
#encoding=utf-8
import random
# 定义一个列表用来保存3个办公室
offices = [[],[],[]]
# 定义一个列表用来存储8位老师的名字
names = ['A','B','C','D','E','F','G','H']
i = 0
for name in names:
    index = random.randint(0,2)
    offices[index].append(name)
i = 1
for tempNames in offices:
    print('办公室%d的人数为:%d'%(i,len(tempNames)))
    i+=1
    for name in tempNames:
   		print("%s"%name,end='')
    print("\n")
    print("-"*20)
3.2.5购买商品练习题

在这里插入图片描述

本人做法:

products = [["iphone", 6888], ["MacPro", 14800], ["小米6", 2499], ["Coffee", 31], ["Book", 60],
            ["Nike", 699]]
cart=[]
money=0
print("---------商品列表---------")
for i in range(len(products)):
    print(i,"\t",end="")
    for j in  range(len(products[i])):
        print(products[i][j],"\t",end="")
    print("")
choose = input("请输入想要购买商品的序号(q退出):")
while choose != "q":
    if(int(choose)<0 or int(choose)>5):
        print("请选择商品编号")
        choose = input("请输入想要购买商品的序号(q退出):")
    else:
        print("你选择的商品为",products[int(choose)])
        cart.append(products[int(choose)][0])
        money=money+products[int(choose)][1]
        choose = input("请输入想要购买商品的序号(q退出):")

print("您购买的商品为",cart)
print("共计消费",money)

3.3 元组

在这里插入图片描述

3.3.1 元组的定义与访问

创建空元组

tup1 = ()

元组的定义

tup1 = (50) # 不加逗号,类型为整型
print(type(tup1)) #输出<class 'int'>
tup1 = (50,) # 加逗号,类型为元组
print(type(tup1)) #输出<class 'tuple'>

元组访问

tup1 = ('Google', 'baidu', 2000, 2020)
tup2 = (1, 2, 3, 4, 5, 6, 7 )
print ("tup1[0]: ", tup1[0])
print ("tup2[1:5]: ", tup2[1:5])

元组中的元素值是不允许修改的,但我们可以对元组进行连接组合,如下实例

tup1 = (12, 34.56)
tup2 = ('abc', 'xyz')
# 以下修改元组元素操作是非法的。
# tup1[0] = 100
# 创建一个新的元组
tup3 = tup1 + tup2
print (tup3)

删除元组后,再次访问会报错

tup = ('Google', 'baidu', 2000, 2020)
print (tup)
del tup
print ("删除后的元组 tup : ")
print (tup)
3.3.2 常用操作:
操作名称操作方法举例
访问元组中的元素通过下标直接访问print(tuple1[0])
遍历元组通过for循环for i in tuple1: print(i)
元组的切片使用[: :]tuple1[2:5:2]
元组的加法+tuple3=tuple2+tuple1
元组成员关系in2 in list1
得到重复元素数量counttuple1.count(1)
获取元组长度len()
获取元组元素最大值max()
获取元组元素最小值min()
其它类型对象转换成元组tuple()

3.4 字典

在这里插入图片描述

3.4.1 字典的定义

变量info为字典类型:

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

说明:

  • 字典和列表一样,也能够存储多个数据
  • 列表中找某个元素时,是根据下标进行的
  • 字典中找某个元素时,是根据’名字’(就是冒号:前面的那个值,例如上面代码中的’name’、‘id’、‘sex’)
  • 字典的每个元素由2部分组成,键:值。例如 ‘name’:‘班长’ ,'name’为键,'班长’为值
3.4.2 根据键访问值
info = {'name':'吴彦祖','age':18}
print(info['age']) # 获取年龄
# print(info['sex']) # 获取不存在的key,会发生异常
print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常

在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

>>> age = info.get('age')
>>> age #'age'键不存在,所以age为None
>>> type(age)
<type 'NoneType'>
>>> age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
>>> age
18
3.4.3 常用操作:
操作名称操作方法举例
访问字典中的元素(1)通过key访问,key不存在会抛出异常print(dict1[“小明”])
访问字典中的元素(2)通过get方法,不存在返回None,不抛出异常print(dict1.get(“”小明))
遍历字典(1)通过for循环,只能获取keyfor key in dict1:print(key, dict1[key])
遍历字典(2)配合items方法,获取key和valfor key, val in dict1.items():print(key, val)
直接获取所有key和value使用keys和values方法print(dict1.values())print(dict1.keys())
修改val直接通过key修改dict1[‘小明’] = 2003
新增键值对直接新增dict1[‘小李’] = 2005
字典元素的删除通过key删除del dict1[‘小李’]
字典元素的弹出通过pop方法dict1.pop(“小李”)
判断key是否存在in“key” in dict1
合并字典updatedict1.update(dict2)
把两个列表转为字典dict+zip方法dict(zip(list1,list2))
把一个嵌套列表转为字典dict方法dict2 = dict([[‘key1’, ‘value1’]])
清除字典内的元素clear方法dict1.clear()
获取字典长度len()
获取最大的keymax()
获取最小的keymin()
其它类型对象转换成字典 dict()dict([(1, 2), (2, 3)])

3.5集合

在这里插入图片描述

操作名称操作方法举例
遍历集合通过for循环for i in set1: print(i)
更新集合update方法set1.update(set2)
向集合添加新元素add方法set1.add(5)
移除集合中的元素remove方法set1.remove(5)
弹出元素pop方法val = set1.pop()
清除元素clear方法set1.clear()
删除集合deldel set1
获取集合长度len()
获取最大的元素max()
获取最小的元素min()
其它类型对象转换成集合set()

4.函数

4.1 函数的概念

如果在开发程序时,需要某块代码多次,但是为了提高编写的效率以及代码的重用,所以把具有独
立功能的代码块组织为一个小模块,这就是函数。

4.2 函数定义和调用

4.2.1 定义函数

定义函数的格式如下:

def 函数名():
	代码

demo:

# 定义一个函数,能够完成打印信息的功能
def printInfo():
	print '------------------------------------'
	print ' 人生苦短,我用Python'
	print '------------------------------------'
4.2.2 调用函数

定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它
调用函数很简单的,通过 函数名() 即可完成调用
demo:

# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()
4.3.2 调用带有参数的函数

以调用上面的add2num(a, b)函数为例:

def add2num(a, b):
	c = a+b
	print c
add2num(11, 22) #调用带有参数的函数时,需要在小括号中,传递数据

调用带有参数函数的运行过程:
在这里插入图片描述

4.4 函数返回值

4.4.1 带有返回值的函数

想要在函数中把结果返回给调用者,需要在函数中使用return
如下示例:

def add2num(a, b):
	c = a+b
	return c

或者

def add2num(a, b):
	return a+b
4.4.2 保存函数的返回值

在本小节刚开始的时候,说过的“买烟”的例子中,最后儿子给你烟时,你一定是从儿子手中接过来,程序也是如此,如果一个函数返回了一个数据,那么想要用这个数据,那么就需要保存
保存函数的返回值示例如下:

#定义函数
def add2num(a, b):
	return a+b
#调用函数,顺便保存函数的返回值
result = add2num(100,98)
#因为result已经保存了add2num的返回值,所以接下来就可以使用了
print result
4.4.3在python中我们可不可以返回多个值? (了解)
>>> def divid(a, b):
... 	shang = a//b
... 	yushu = a%b
...		return shang, yushu
...
>>> sh, yu = divid(5, 2)
>>> sh
5
>>> yu
1

本质是利用了元组
课堂练习:
1.写一个打印一条横线的函数。(提示:横线是若干个“-”组成)
2.写一个函数,可以通过输入的参数,打印出自定义行数的横线。(提示:调用上面的函数)
3.写一个函数求三个数的和
4.写一个函数求三个数的平均值(提示:调用上面的函数)

4.5 局部变量和全局变量

4.5.1 局部变量

什么是局部变量
如下图所示:
在这里插入图片描述
小总结
局部变量,就是在函数内部定义的变量
不同的函数,可以定义相同的名字的局部变量,但是各用个的不会产生影响
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储,这就是它的作用

4.5.2 全局变量

什么是全局变量
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是 全局变量
demo如下:

# 定义全局变量
a = 100
def test1():
	print(a)
def test2():
	print(a)
# 调用函数
test1()
test2()

全局变量和局部变量名字相同问题
看如下代码:
在这里插入图片描述
修改全局变量
既然全局变量,就是能够在所以的函数中进行使用,那么可否进行修改呢?
代码如下:
在这里插入图片描述
总结:
在函数外边定义的变量叫做 全局变量
全局变量能够在所有的函数中进行访问
如果在函数中修改全局变量,那么就需要使用 global 进行声明,否则出错
如果全局变量的名字和局部变量的名字相同,那么使用的是局部变量的,小技巧 强龙不压地头蛇

4.6 函数使用注意事项

4.6.1. 自定义函数

<1>无参数、无返回值

def 函数名():
	语句

<2>无参数、有返回值

def 函数名():
	语句
	return 需要返回的数值

注意:

  • 一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据
  • 在开发中往往根据需求来设计函数需不需要返回值
  • 函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成

<3>有参数、无返回值

def 函数名(形参列表):
	语句

注意:

  • 在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收
  • 参数列表中变量的个数根据实际传递的数据的多少来确定

<4>有参数、有返回值

def 函数名(形参列表):
	语句
	return 需要返回的数值

<5>函数名不能重复

4.6.2. 调用函数

<1>调用的方式为:

函数名([实参列表])

<2>调用时,到底写不写 实参

  • 如果调用的函数 在定义时有形参,那么在调用的时候就应该传递参数

<3>调用时,实参的个数和先后顺序应该和定义函数中要求的一致

<4>如果调用的函数有返回值,那么就可以用一个变量来进行保存这个值

4.6.3. 作用域

<1>在一个函数中定义的变量,只能在本函数中用(局部变量)

<2>在函数外定义的变量,可以在所有的函数中使用(全局变量)

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值