变量类型的转换——买苹果问题升级版# 定义苹果的单价
price = float(input("请输入苹果的单价:"))
# 定义苹果的重量
weight = float(input("请输入苹果的重量:"))
# 计算苹果的价格
money = price * weight - 20
print(money)信息录入——input函数name = input("姓名:")
gender = input("性别:")
age = input("年龄:")
company = input("单位:")
number = input("联系方式:")判断——if语句number = int(input("请输入数字1-7:"))
if 1 <= number <= 7:
if number == 6 or number == 7:
print("周末")
else:
print("工作日")
else:
print("输入错误")
格式化输出price = 7.899
weight = 3.688
money = price * weight
print("苹果的单价 %.2f, 购买了 %.2f, 总价为 %.2f" % (price, weight, money))逻辑运算符# - 要求只要有一门成绩 > 60 分就算合格
# 3. 练习3: 定义一个布尔型变量 is_employee,编写代码判断是否是本公司员工
# - 如果不是提示不允许入内
age = 18
if 0 <= age <= 120 :
print("年龄正确")
else:
print("年龄不正确")
python_score = 50
c_score = 70
if python_score > 60 or c_score > 60:
print("合格")
else:
print("不合格")
is_employee = True
if not is_employee: # bool型
print("非本公司职员不得入内")
else:
print("欢迎")
剪刀石头布综合案例import random
# 1. 从控制台输入要出的拳 —— 石头(1)/剪刀(2)/布(3)
player = int(input("石头(1)/剪刀(2)/布(3)输入的是:"))
# 2. 电脑 随机 出拳 —— 先假定电脑只会出石头,完成整体代码功能
computer = random.randint(1, 3)
# 3. 比较胜负
if ((player == 1 and computer == 2)
or (player == 2 and computer == 3 )
or (player == 3 and computer == 1)):
print("恭喜你,你赢了")
elif player == computer:
print("平局")
else:
print("你输了,真可惜")
打印小星星# # 打印五行小星星
# row = 1
# while row <= 5:
# print("*" * row)
# row += 1
# 如果不希望末尾增加换行,可以在 print 函数输出内容的后面增加 , end=""
# print("*", end="")
# print("*")
row = 1
while row <= 5:
# 假设 python 没有提供字符串 * 操作
# 在循环内部,再增加一个循环,实现每一行的 星星 打印
col = 1
while col <= row:
print("*", end="")
col += 1
# 每一行星号输出完成后,再增加一个换行
print("")
row += 1
九九乘法表row = 1
while row <= 9:
col = 1
while col <= row:
print("%d * %d = %d" % (row, col, col*row), end="\t")
col += 1
# print("%d" % row)
print("")
row += 1
函数返回值"""定义函数"""
def sum_all(num1, num2):
# 两数相加
result = num1 + num2
# 返回值
return result
# 在调用函数的地方新建变量接受返回值
sum_result = sum_all(1, 10)
print("%d" % sum_result)
高级变量类型——列表的增删改查name_list = ["zhangsan", "lisi", "wangwu"]
# 增
name_list.insert(3, "小李") # 增加指定位置的数据
name_list.append("小平") # 末位增加数据
name_list.extend(["小李", "小平"]) # 末位增加列表数据
# 减
name_list.remove("zhangsan") # 从前往后删除指定一个数据
name_list.pop() # 先进后出,从末尾开始删除数据
name_list.pop(0) # 指定位置删除数据
name_list.clear() # 清空
# 查
print(name_list.index("zhangsan")) # 查数据的索引(位置)
print(name_list[0]) # 查索引所在位置的值
# 改
name_list[1] = "李四" # 修改指定位置的数据
# 统计
print(len(name_list)) # 统计列表数据长度
print(name_list.count("wangwu")) # 统计数据出现的次数
# 排序
name_list.sort() # 升序
name_list.sort(reverse=True) # 降序
name_list.reverse() # 反转排序
print(name_list)
遍历——while和for"""顺序的从列表中依次获取数据,每一次循环过程中,数据都会保存在
my_name 这个变量中,在循环体北部可以访问到当前这一次获取到的数据
"""
name_list = ["zhangsan", "lisi", "wangwu"]
for my_name in name_list:
print("我的名字是:%s" % my_name)
"""
while 循环
"""
l = len(name_list)
i = 0
while i < l:
print(name_list)
i += 1
元组——增删改查info_tuple = ("zhangsan", 18, 1.75)
print(type(info_tuple))
print(info_tuple[0])
empty_tuple = () # 定义一个空元组
print(type(empty_tuple))
single_tuple = (1,) # 定义只含有一个元素的元组,单个元素后需要加一个逗号
print(type(single_tuple))
# 取值和取索引
print(info_tuple[0])
print(info_tuple.index("zhangsan"))
# 统计计数
print(info_tuple.count("zhangsan"))
# 统计元组的长度
print(len(info_tuple))
列表和元组的转换name_list = ["zhangsan "]
print(tuple(name_list))
info_tuple = ("zhangsan",)
print(list(info_tuple))
字典# 定义一个字典 注意:建与值之间用冒号分开,键值对之间用逗号分开
xiaoming = {"name": "小明",
"gender": True,
"height": 1.78,
"weight": 77.50}
# 取值
print(xiaoming["name"]) # 取值都是[]
# 增加/修改
xiaoming["age"] = 18 # 输入已存在的key就是修改
xiaoming["name"] = "小姚" # 输入不存在的key就是添加
# 删除
xiaoming.pop("name")
print(xiaoming)
# 统计字典键值对的数量
print(len(xiaoming))
# 合并字典
xiaoyao = {"age": 15}
xiaoming.update(xiaoyao) # 无返回值需重新再输出
print(xiaoming)
# 字典清空
print(xiaoming.clear())
字典的遍历xiaoming = {"name": "xiaoming",
"age": "15"}
# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming:
print("%s - %s" % (k, xiaoming[k]))
字符串的方法str1 = "hello hello"
print(len(str1))
print(str1.count("ll"))
print(str1.count("abc"))
print(str1.index("h"))
print(str1[0])
# 识别字符串中是否含有数字
str1 = "一千零一"
print(str1.isdecimal())
print(str1.isdigit())
print(str1.isnumeric())
# replace 替换并不更改原来的字符串,只是新建了一个字符串
str1 = "hello world"
print(str1.replace("world", "python"))
print(str1)
拆分拼接poem_str = "登黄鹤楼\t 王之涣 \t 白日依山尽 \t\n"
print(poem_str)
# 拆分字符串
poem_list = poem_str.split() # 有返还值需要新建一个变量接受
print(poem_list)
# 拼接字符串
result = " ".join(poem_list) # 有返还值需要新建一个变量接
print(result)
切片"""- 1. 截取从 2 ~ 5 位置 的字符串
- 1. 截取从 2 ~ 末尾 的字符串
- 1. 截取从 开始 ~ 5 位置 的字符串
- 1. 截取完整的字符串
- 1. 从开始位置,每隔一个字符截取字符串
- 1. 从索引 1 开始,每隔一个取一个
- 1. 截取从 2 ~ 末尾 - 1 的字符串
- 1. 截取字符串末尾两个字符
- 1. 字符串的逆序(面试题)
"""
num_str = "0123456789"
print(num_str[2:6]) # 截取从 2 ~ 5 位置 的字符串
print(num_str[2:]) # 截取从 2 ~ 末尾 的字符串
print(num_str[:6]) # 截取从 开始 ~ 5 位置 的字符串
print(num_str[:]) # 截取完整的字符串
print(num_str[::2]) # 从开始位置,每隔一个字符截取字符串
print(num_str[1::2]) # 从索引 1 开始,每隔一个取一个
print(num_str[2:-1]) # 截取从 2 ~ 末尾 - 1 的字符串
print(num_str[-2:]) # 截取字符串末尾两个字符
print(num_str[::-1]) # 字符串的逆序(面试题)
函数的返回值问题def measure():
"""测量温度和湿度"""
print("测量开始")
temp = 39
wetness = 50
print("测量结束")
# 元组——可以包含多个数据,因此可以使用元组让函数一次返回多个值
# 如果返回的是元组小括号可以省略 return (temp, wetness)
return temp, wetness
result = measure()
print(result)
# 如果函数返回的类型是元组,同时希望单独的处理元组中的元素
# 可以使用多个变量,一次接受函数的返回结果
# 注意:使用多个变量接收结果时,变量的个数应该和元组中元素的个数相同
gl_temp, gl_wetness = measure()
print(gl_temp)
print(gl_wetness)
可变量与不可变量# 在 python 中,列表变量调用 += 本质上是在执行列表变量的 extend 方法,不会修改变量的引用
def demo(num, num_list):
print("函数开始")
num += num
# num_list = num_list + num_list与num_list += num_list不同
# num_list += num_list本质上是extend方法:num_list.extend
num_list += num_list
print(num)
print(num_list)
print("函数完成")
gl_num = 9
gl_list = [1, 2, 3]
demo(gl_num, gl_list)
print(gl_num)
print(gl_list)
缺省参数gl_list = [6, 3, 9]
#
# # 默认按照升序排序
# # gl_list.sort()
#
# # 如果升序需要引入reverse
# gl_list.sort(reverse=True)
# #
# print(gl_list)
gl_list.reverse()
print(gl_list)
def print_info(name, gender=True):
"""
:param name: 姓名
:param gender: True 男生 False女生
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print("%s 是 %s" % (name, gender_text))
# 提示在指定缺省参数时应该使用最常见的值
print_info("xiaoming")
print_info("xiaomei", False)
def gender_info(name, title="", gender=True):
"""
:param name: 姓名
:param title: 职位
:param gender: True 男生 False 女生
:return:
"""
gender_text = "男生"
if not gender:
gender_text = "女生"
print("[%s] %s 是 %s" % (title, name, gender_text))
gender_info("xiaoming", gender=False)
gender_info("xiaomei")
多值参数def demo(num, *nums, **person):
print(num)
print(nums)
print(person)
demo(1)
demo(1, 2, 3, 4, name="xiaoming", age=18)
# 多值参数应用求多个整数和
def sum_all(*num):
sum = 0
for n in num:
sum += n
return sum
result = sum_all(1, 3, 9)
print(result)
拆包
def demo(*args, **kwargs):
print(args)
print(kwargs)
gl_nums = (1, 2, 3)
gl_dict = {"name": "小明", "age": 18}
# 拆包:在元组变量前加* 在字典变量前加**
demo(*gl_nums, **gl_dict)
demo(1, 2, 3, name="小明", age=18)
递归# def sum_number(num):
# print(num)
# # 递归的出口,当参数满足条件时不再执行函数
# if num == 1:
# return
# # 自己调用自己就是递归
# sum_number(num-1)
# print(num)
# sum_number(3)
def sum_numbers(num):
# 1.出口
if num == 1:
return 1
# 数字的累加num+(1.。。。。num-1)
# 假设sum_numbers 能够正确处理1.。。num-1
temp = sum_numbers(num-1)
# 两个数字相加(当前的num+tmp)
return num + temp
result = sum_numbers(100)
print(result)
烤地瓜问题
# 定义一个地瓜类
class Sweetpotato:
# 设置默认值
def __init__(self):
self.cookedlevel = 0
self.cookedstring = "生的"
self.condiments = []
# 设置烤地瓜方法
def cook(self, time):
self.cookedlevel += time
if self.cookedlevel > 8:
self.cookedstring = "烤焦了"
elif self.cookedlevel > 5:
self.cookedstring = "烤好了"
elif self.cookedlevel > 3:
self.cookedstring = "半生不熟"
else:
self.cookedstring = "生的"
def __str__(self):
return ""
my_sweetpotato = Sweetpotato()
print(my_sweetpotato.condiments)
print(my_sweetpotato.cookedstring)
print(my_sweetpotato.cookedlevel)
面向对象——私有问题和私有方法
class Women:
def __init__(self, name):
self.name = name
self.__age = 18
def __secret(self):
print("%s的年龄是%d" % (self.name, self.__age))
xiaomei = Women("小美")
print(xiaomei._Women__age) # 在名称前面加上 _类名 => _类名__名称(伪私有属性和私有方法)
xiaomei._Women__secret()
# print(xiaofang.__age) 不能直接调用
# xiaofang.__secret()
继承
class Animal:
def eat(self):
print("吃")
def drink(self):
print("喝")
class XiaoTianQuan(Animal):
def fly(self):
print("飞")
xiaotianquan = XiaoTianQuan()
xiaotianquan.fly()
xiaotianquan.eat()
xiaotianquan.drink()
多态
class Dog(object):
def __init__(self, name):
self.name = name
def game(self):
print("%s玩耍" % self.name)
class Xiaotianquan(Dog):
def game(self):
print("%s飞到天上去" % self.name)
class Person(object):
def __init__(self, name):
self.name = name
def game_with_dog(self, dog):
print("%s和%s快乐的玩耍" % (self.name, dog.name))
# 让狗玩耍
dog.game()
# 创建一个狗对象
# wangcai = Dog("旺财")
wangcai = Xiaotianquan("飞天旺财")
# 创建一个小明对象
xiaoming = Person("小明")
# 让小明调用和狗玩
xiaoming.game_with_dog(wangcai)
捕获未知错误类型
try:
num = int(input("请输入一个整数:"))
result = 8 / num
print(result)
except ValueError:
print("请输入正确的数字")
except ZeroDivisionError:
print("除0错误")
except Exception as result:
print("未知错误 %s" % result)
else:
print("没有错误才能执行")
finally:
print("无论正确与否都能执行")
摆放家具模型
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, type, area):
self.type = type
self.area = area
# 剩余面积
self.free_area = area
# 家具名称列表
self.item_list = []
def __str__(self):
return ("户型:%s\n总面积:%.2f[剩余:%.2f]\n家具:%s" %
(self.type, self.area,
self.free_area, self.item_list))
def add_item(self, item):
print("要添加%s" % item)
# 1.判断家具的面积
if item.area > self.free_area:
print("%s的面积太大了,无法添加" % item.name)
return
# 2. 将家具的名称添加到列表总
self.item_list.append(item.name)
# 3. 计算剩余面积
self.free_area -= item.area
# 1. 创建家具
bed = HouseItem("席梦思", 4)
chest = HouseItem("衣柜", 2)
table = HouseItem("餐桌", 1.5)
print(bed)
print(chest)
print(table)
# 2. 创建房子对象
my_house = House("两室一厅", 60)
my_house.add_item(bed)
my_house.add_item(chest)
my_house.add_item(table)
print(my_house)
士兵突击问题
class Gun:
def __init__(self, model):
# 枪的型号
self.model = model
# 子弹数量
self.bullet_count = 0
def add_bullet(self, count):
self.bullet_count += count
def shoot(self):
# 1.判断子弹数量
if self.bullet_count <= 0:
print("[%s]没有子弹了" % self.model)
return
# 2.发射子弹
self.bullet_count -= 1
# 3.提示发射信息
print("[%s]突突突...[%d]" % (self.model, self.bullet_count))
def __str__(self):
return "恭喜配枪成功"
class Soldier:
def __init__(self, name):
# 1. 定义新兵的姓名
self.name = name
# 2.枪
self.gun = None
def fire(self):
# 判断是否有枪
if self.gun is None:
print("[%s]还没有枪。。。" % self.name)
return
# 高喊口号
print("冲啊。。。[%s]" % self.name)
# 让枪装填子弹
self.gun.add_bullet(50)
# 让枪发射子弹
self.gun.shoot()
# 1. 创建枪对象
ak47 = Gun("AK47")
# 2. 创建许三多
xusanduo = Soldier("许三多")
xusanduo.gun = ak47
xusanduo.fire()
print(xusanduo.gun)
名片管理系统cards-main:from hm_名片管理 import cards_tool
while True:
cards_tool.show_menu()
action = input("请选择操作功能:")
print("您选择的操作是:%s" % action)
# 根据用户输入决定后续的操作
if action in ["1", "2", "3"]:
if action == "1":
print(cards_tool.new_card())
elif action == "2":
print(cards_tool.show_all())
elif action == "3":
print(cards_tool.search_card())
elif action == "0":
print("欢迎再次使用【名片管理系统】")
break
else:
print("输入错误,请重新输入")
card_list = []
def show_menu():
"""显示菜单
"""
print("1. 新建名片")
print("2. 显示全部")
print("3. 查找名片")
print("0. 退出系统")
def new_card():
"""新建名片
"""
print("-" * 50)
print("功能:新建名片")
# 1. 提示用户输名片的详细信息
name_str = input("请输入姓名:")
phone_str = input("请输入电话:")
qq_str = input("请输入QQ:")
email_str = input("请输入电子邮件:")
# 2. 使用信息建立名片字典
card_dict = {"name": name_str,
"phone": phone_str,
"qq": qq_str,
"email": email_str}
# 3. 将名片字典添加到列表中
card_list.append(card_dict)
print(card_list)
# 4. 提示用户添加成功
print("用户%s添加成功" % name_str)
def show_all():
"""显示全部
"""
print("-" * 50)
print("功能:显示全部")
# 打印表头
for name in ["姓名", "电话", "qq", "邮箱"]:
print(name, end="\t\t")
print("")
# 打印分割线
print("=" * 50)
for card_dict in card_list:
print("%s\t\t%s\t\t%s\t\t%s\t\t" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
if len(card_list) == 0:
print("提示:没有任何记录")
return
def search_card():
"""搜索名片
"""
print("-" * 50)
print("功能:搜索名片")
find_name = input("请输入要查找的名字:")
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\t\t\t电话\t\t\tqq\t\t\t邮箱") # 建立标题排面
print("=" * 50)
print("%s\t\t\t%s\t\t\t%s\t\t\t%s" % (
card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"])) # 输出字典中查找的值并排好
print("-" * 50)
# TODO 针对找到的名片进行修改删除
deal_card(find_name)
break
else:
print("没有找到%s" % find_name)
# 增加名片操作函数:修改删除
def deal_card(find_dict):
print(find_dict)
action_str = input("请输入要进行的操作: "
"[1]修改 [2]删除 [0]返回上级菜单")
if action_str == "1":
find_dict["name"] = input_card_info("姓名:")
find_dict["phone"] = input_card_info("电话:")
find_dict["qq"] = input_card_info("qq:")
find_dict["email"] = input_card_info("邮件:")
print("%s的名片修改成功" % find_dict["name"])
elif action_str == "2":
card_list.remove(find_dict)
print("删除成功")
def input_card_info(dict_value, tip_message):
"""
:param dict_value:
:param tip_message:
:return:
"""
# 提示用户输入内容
result_str = input(tip_message)
# 针对用户输入进行判断,如果用户输入了内容则直接返回结果
if len(result_str) > 0:
return result_str
# 如果用户没有输入内容,返回 `字典中原有的值`
else:
return dict_value
|
|