内置函数及切片
?字符串:“0”<“A”<“a”
# 最大值,最小值以及比较
a = [1, 2, 3]
# del a[1]
# # # print(a)
# del a[1]
# print(a)
print(max(a))
print(min(a))
print(len(a))
# 如果是字典比较的话,只针对key比较
t = {"a": "z", "b": "x", "c": "y"}
print(max(t))
# 字典不支持切片,字典没有索引,是通过键值对存在的
print([0, 1, 2, 3, 4][1:3])
print((0, 1, 2, 3, 4)[1:3])
?in 在对字典操作时,判断的是字典的键,
in和 not in 被称为成员运算符
# 运算符
# 列表合并,重复,判断存在
print([1, 2] + [3, 4])
print(["hello"] * 3)
print(4 in [1, 2, 3])
print("----------------")
# 字符串合并,重复,判断存在
print("hello " + "python")
print("hello " * 3)
print("hello" in "hello python")
print("----------------")
# 元组合并,重复,判断存在
print((2, 3, 4) + (5, 6))
print(("python " * 3))
print(3 in (3, 4, 5))
结果:
[1, 2, 3, 4]
['hello', 'hello', 'hello']
False
----------------
----------------
hello python
hello hello hello
True
----------------
(2, 3, 4, 5, 6)
python python python
True
# extend方法和加号合并看起来一样,
# 但是加号是产生一个新的列表,extend方法是在原有列表上面添加
list = [1, 2]
list.extend([3, 4])
print(list)
#append方法
list1 = [3,4]
list1.append(0)
print(list1)
list1.append([6,7])
print(list1)
结果不同:
[1, 2, 3, 4]
[3, 4, 0]
[3, 4, 0, [6, 7]]
完整的for循环语法
for num in [1, 2, 3]:
print(num)
if num == 2:
break
else:
# 如果循环体内部使用了break退出了循环,
# else下方代码就不会被执行
print("执行")
print("结束")
结果:
1
2
结束
for ? aa ? in? ? ? xx: -----else:
应用场景,只有在迭代遍历嵌套的数据类型时或者需要判断某一字典中是否存在特定的值,
如果存在,提示并退出循环,
不存在,循环体结束后,得到统一的提示
# 判断某一字典中是否存在指定的值,存在
students = [
{"name": "小红"},
{"name": "小明"}
]
find_name = "小hua"
for stu in students:
print(stu)
# 如果找到就退出循环,不再遍历
if stu["name"] == find_name:
print("找到了%s" % find_name)
break
# 没找到就使用else
# 本题中如果在if下面加else,每次都会输出没找到,
# 但是在for下面加else,在循环搜索输出列表后才输出没找到
else:
print("抱歉哦,没找到%s" % find_name)
print("循环结束")
结果:
{'name': '小红'}
{'name': '小明'}
抱歉哦,没找到小hua
循环结束
python封装例子:摆放家具
需求
1.房子(House)有户型、总面积和家具名称列表,新房子没有任何的家具
2.家具(Houseltem) 有名字和占地面积,其中 席梦思(bed)占地4平米 衣柜(chest)占地2平米 餐桌(table)占地1.5平米
3.将以上三件家具添加到房子中
4.打印房子时,要求输出:户型、总面积、剩余面积、家具名称列表 ?
# 摆放家具
class HouseItem:
def __init__(self, name, area):
self.name = name
self.area = area
def __str__(self):
return "[%s] 占地 %.2f" % (self.name, self.area)
class House:
def __init__(self, house_type, area):
self.area = area
self.house_type = house_type
# 剩余面积
self.free_area = area
# 家具名称列表
self.item_list = []
def add_item(self, item):
print("将%s添加到房子中" % item)
# 家具面积
if item.area > self.free_area:
print("%s面积太大,不能添加" % item)
return
# 将家具添加到列表中
self.item_list.append(item.name)
self.free_area -= item.area
def __str__(self):
return "户型: %s\n总面积:%.2f[剩余:%.2f]" \
"\n家具名称列表:%s" % (self.house_type,
self.area, self.free_area, self.item_list)
# 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)
# 创建房子对象
my_house = House("两室一厅", 60)
my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)
print(my_house)
python封装例子:土兵突击
需求
1.士兵许三多有一把AK47
2.士兵可以开火 3.枪能够发射子弹 4.枪装填装填子弹--增加子弹数量
# 一个对象的属性可以是另外一个类创建的对象
class Gun:
def __init__(self, model):
# 枪的型号
self.model = model
# 子弹数量
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def __str__(self):
return "这次拿的枪是[%s]" % self.model
def shoot(self):
# 判断子弹数量
if self.bullet_count <= 0:
print("[%s]没有子弹了" % self.model)
return
# 2发射子弹,-1
self.bullet_count -= 1
# 3 提示发射信息
print("[%s]突突突----[%d]" % (self.model, self.bullet_count))
class Soldier:
def __init__(self, name):
self.name = name
self.gun = None
def __str__(self):
return
def fire(self):
# 判断士兵有枪
if self.gun is None:
print("[%s]没有枪,无法上战场" % self.name)
return
print("拿着冲啊")
# 让枪装填子弹
self.gun.add_bullet(50)
# 发射子弹
self.gun.shoot()
ak47 = Gun("AK47")
# ak47.add_bullet(50)
# ak47.shoot()
xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)
|