目录
一、序列
序列包括字符串、列表、元组
1.字符串
字符串的切片操作:
- 索引(下标)
从左到右依次加1,从0开始;从右到左依次减1,从-1开始。
字符串允许通过下标去查找值:字符串[下标]
- 切片
从字符串中找到某段字符串:字符串[开始位置:结束位置:步长]
注:包含开始不含结束(即左闭右开)
- 拼接:用加分
- 重复:用乘法
字符串的基本操作:
find:查找子串是否包含在字符串中,如果在则返回子串中第一个字符的索引,不在返回-1。
格式: 字符串.find(子串,起点,终点)
rfind:从右往左找,查找子串是否包含在字符串中,如果在返回下标,不在返回-1
index:查找子串是否包含在字符串中,如果在返回下标,不在就报错
rindex:从右往左找,查找子串是否包含在字符串中,如果在返回下标,不在就报错
a = "hello world"
print(a.find("o"))
print(a.find("o",5))
print(a.find("ow",5,8))
count:统计子串在字符串中出现的次数 replace:将指定字符替换成另一个字符 格式:字符串.replace(旧字符,新字符,替换次数) 如果不写替换次数则默认是替换所有
a = "hello world"
print(a.replace("o","O"))
# hellO wOrld
print(a.replace("o","O",1))
# hellO world
split:分割,会返回一个列表 格式:字符串.split(要切开的字符,次数) 不写次数默认全部分割
a="hello world"
print(a.split("o"))
# ['hell', ' w', 'rld'] 默认全部分割
print(a.split("o",1))
join:用于合并序列元素、连接字符串 格式:"新字符".join(字符串) 在字符串中每一个字符之间插入新字符 strip:删除字符串左右两边的空格或特定字符 格式:字符串.strip(字符)
b = " hello world "
print(b.strip())
c = "**hello world**"
print(c.strip("*"))
center:在字符串两边填充字符(默认为空格)让字符串居中 lower:返回字符串小写版本 格式:字符串.lower() upper:返回字符串大写版本 格式:字符串.upper() isupper:判断某个字符是否是大写
2.列表
列表是一个有序的对象的集合,用[ ]括起,逗号分割的一组元素,可修改。
列表的切片操作:
- 索引:列表[编号]
- 切片:列表[起点:终点:步长]
- 拼接:用加分
- 重复:用乘法
列表基本操作:
del:删除
append:将一个对象附加到列表末尾
clear:清空列表内容
copy:复制 需通过导入包后才能使用
from copy import copy
count:统计某元素出现次数
extend:将一个列表中元素提出扩展到另一列表中
index:在列表中查找指定值第一次出现的索引
insert:将一个对象插入列表
pop:从列表中删除一个元素(默认为最后一个元素)并返回这一个元素
remove:删除第一个为指定值的元素,但不返回值
reverse:按相反顺序排列列表中的元素
sort:就地排列(会修改列表,但不返回值)
sorted:复制列表并排列,会返回值
3.元组
元组是不可修改的序列。
创建元组的方法:用()将数据括起就可以;也可以将一些值用逗号分隔,就能自动创建一个元组;当创建只包含一个值的元组时,需在值的后面加上逗号。
函数tuple:将一个序列作为参数,并将其转换为元组。如果参数已是元组,则原封不动的返回它
元组的切片操作:
- 索引:列表[编号]
- 切片:列表[起点:终点:步长]
二、字典
一个键对应一个值 格式: {key:value} 注:键不能重复,但值能。
函数dict:可从其他映射(如其他字典)或键-值对序列创建字典。
items=[("name","yz"),("age",18)]
d = dict(items)
print(d)
print(d["name"])
还可以用关键字实参来调用这个函数
d = dict(name="yz",age=18)
print(d)
1.字典的基本操作
len(d)返回字典d包含的项(键-值对)数。
d[k]返回与键k相关的值。
d[k] = v将值v关联到键k。
del d[k]删除键为k的项。
k in d 检查字典d是否包含键为k的项。
2.字典方法
clear删除字典中所有的字典项,是就地执行的,且不返回值。
copy会返回一个新字典,其包含的键-值对与原字典相同(但这个方法是浅复制,即是原字典本身而非副本)。当你修改其中一个字典时,另一个字典也会就地修改。
为避免这种情况,就需要执行深复制,因此需要使用模块copy中的函数deepcopy。
from copy import deepcopy
fromkeys 可创建一个字典,其中包含指定的键,且每个键对应的值为None。如:
a = {}.fromkeys(["name","age"])
print(a)
这里也可以将空字典{}用dict来代替。除此之外还可以将默认值None换为特定值。如:
a = dict.fromkeys(["name","age"],"un")
print(a)
get 用于访问字典中的键,如果键存在则返回对应的值,如果键不存在则返回默认值None(这个默认值可以自己来设定)。 如:
d = {}
print(d.get("name"))
print(d.get("name","无"))
字典的应用:通讯录
people = {'yz':{'电话':'8976','地址':'中国'}}
labels = {"电话":"电话号码","地址":"地址"}
name = input("请输入要查的用户姓名:")
key = input("查电话号码打(p)查地址打(a)?")
if key == "p": key = "电话"
if key == "a": key = "地址"
person = people.get(name,{})
label = labels.get(key,key)
result = person.get(key,"无该数据")
print("{}的{}:{}.".format(name,label,result))
items 返回一个包含所有字典项的列表,其中每一个元素都为(key,value)的形式。且各元素在该列表中的排列顺序是随机的。
d = {'电话':'8976','地址':'中国'}
print(d.items())
# dict_items([('电话', '8976'), ('地址', '中国')])
这种返回值称为字典视图,是一种特殊类型,它始终是底层字典的反映,即但你去修改字典时它也会随即变化。
keys 返回一个字典视图,其中包含指定字典中的键。
values返回一个字典视图,其中包含指定字典中的值(可能有重复,因为一个字典中值允许重复)。
pop 可获取与指定键相关联的值,并将该键-值对从字典中删除。d.pop(k)
popitem随机删除字典中的一个项,并返回改键-值对。
setdefault 功能上与get有点类似,因为它也获取与指定键相关的值,但除此之外,如果要获取的键不包含于字典中时,会在字典中填加指定的键-值对。d.setdefault(key,如不存在时会添加的值),如果不指定添加的值,则会默认为None。
update使用一个字典中的项来更新一个字典。d.update(字典a) 对于通过参数提供的字典,将它的项添加到当前字典中,如果当前字典包含键相同的项,则会替代它。
dic = {"name":"y","age":18}
d = {'name':'yz'}
dic.update(d)
print(dic)
# {'name': 'yz', 'age': 18}
3.字典的格式化
" {键} ".format_map(字典)
注意:此处的函数是format_map,要和字符串的格式化format区分。
三、赋值
1. 序列解包
多重赋值 如:x,y = 1,2
将一个序列(或任何可迭代对象)解包,并将得到的值储存到一系列变量中。如:
values = 1,2,3
print(values)
# (1, 2, 3)
x,y,z = values
print(x)
# 1
这对于在使用返回元组的函数或方法时很有用。假设要从字典中随机获取(或删除)一个键-值对,可使用方法popitem,它随便获取一个键-值对并以元组的方式返回,接下来将返回的元组解包到两个变量中。如:
d = {'电话':'8976','地址':'中国'}
key,value = d.popitem()
print(key) # 地址
print(value) # 中国
注:要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则python会报错。
当然也可以用星号运算符(*)来收集多余的值,这样就无需确保值和变量的个数相同了。如:
a,b,*c = 1,2,3,4
print(a) # 1
print(c) # [3,4]
这里可以看出带星号(*)的变量最终包含的总是一个列表
2.链式赋值
链式赋值是一种快捷方法,用于将多个变量关联到同一个值。如:
x = y = 2
上述代码与下面代码等价
x = 2
y = x
3.增强赋值
通过将运算符移到赋值运算符的前面来实现赋值。适用于所有标准运算符(*,/,%等)如:
a = 10
a += 20
a = 10
a = a+20
上述两个代码等价。
四、布尔值
用作布尔表达式(如用作if语句中的条件)时,下面的值都将被解释器视为假:
False None 0 " " ( ) [ ] { }
再谈if语句
if语句,让你能够有条件地执行代码。意味着如果条件(if和冒号间的表达式)为前面定义的真,就能执行后续代码块;如果条件为假,就不执行。
猜拳游戏 三局两胜
经过小编用最近所学的知识,最终是自己写出了这个三局两胜的猜拳游戏了,如有还需完善的地方欢迎讨论
i = 3
num =0
win =0
print("猜拳游戏 三局两胜")
while i>0:
a = input("请在剪刀(a)石头(b)布(c)中选择你要出的(输入对应的字母):")
if a == "a": a = "剪刀"
if a == "b": a = "石头"
if a == "c": a ="布"
import random
b = ['剪刀', '石头', '布']
c = random.choice(b)
print("你出了",a)
print("电脑出了",c)
if a == c:
print("平局 再来一次")
elif a == "布"and c =="石头" or a == "剪刀" and c=="布" or a =="石头"and c=="剪刀" :
print('这次你赢了')
win+=1
i-=1
if win ==2:
print("最终是你获胜了")
break
else:
print('这次你输了')
num+=1
i -= 1
if num == 2:
print("最终是你输了")
break
如有哪些地方写错,欢迎纠正