TODO注释:用于标记需要去做的工作
# TODO(名字) 显示功能菜单
import card_toos
while True:
# TODO 显示功能菜单
card_toos.show_menu()
action_str=input("请选择操作:")
print("您选择的操作是【%s】" % action_str)
# 1,2,3针对名片操作
# 0退出程序
# 其他输入错误
if action_str in ["1", "2", "3"]:
if action_str ==1:
card_toos.new_card()
elif action_str == 2:
card_toos.show_all()
elif action_str ==3:
card_toos.search_card()
# 如果在开发时不希望编写分支内部,可以使用pass关键字,保证代码正确
elif action_str == 0:
print("欢迎再次使用")
break
# pass
else:
print("您输入错误,请重新选择")
def show_menu():
print("*" * 50)
print("欢迎使用【名片管理系统】 v 1.0")
print("")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print("")
print("0.退出系统")
print("*" * 50)
def new_card():
"""新增名片"""
print("-"*50)
print("新增名片")
def show_all():
"""显示全部"""
print("-" * 50)
print("显示全部")
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
def new_card():
"""新增名片"""
print("-"*50)
print("新增名片")
name = input("请输入名字:")
phone = input("请输入电话:")
qq = input("请输入qq:")
email = input("请输入邮箱:")
#1.提示用户输入名片详细信息
card_dict = {"name": name,
"phone": phone,
"qq": qq,
"email": email}
#2.建立字典
card_list.append(card_dict)
print(card_list)
#3.将名片字典添加到列表中
print("添加%s的名片成功" % name)
#4.提示用户成功
def show_all():
"""显示全部"""
print("-" * 50)
print("显示全部")
#判断是否存在名片记录
if len(card_list) == 0:
print("当前没有名片记录,请添加名片")
#可以返回一个函数的执行结果,下方代码不会执行,return后无内容返回调用函数位置
return
#打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\\t\\t")
#打印分割线
print("=" * 50)
#遍历名片列表,依次输出字典信息
for card_dict in card_list:
print("%s\\t\\t%s\\t\\t%s\\t\\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
#1.提示用户要搜索的姓名
find_name = input("请输入要搜索的姓名:")
#2.遍历名片列表,查询名字,如未找到,提示用户
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\\t\\t电话\\t\\tQQ\\t\\t邮箱")
print("="*50)
print("%s\\t\\t%s\\t\\t%s\\t\\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
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(find_dict["name"], "姓名:[回车不修改]")
find_dict["phone"] = input_card(find_dict["phone"], "电话:[回车不修改]")
find_dict["qq"] = input_card(find_dict["qq"], "QQ:[回车不修改]")
find_dict["email"] = input_card(find_dict["email"], "邮箱:[回车不修改]")
print("修改成功")
elif action_str == "2":
card_list.remove(find_dict)
print("删除成功")
def input_card(dict_value, tip_message):
#1. 提示用户输入内容
result = input(tip_message)
#2. 对输入判断,若输入内容,返回结果
if len(result) > 0:
return result
else:
return dict_value
#3. 若不输入内容,返回原值
import card_toos
while True:
# TODO 显示功能菜单
card_toos.show_menu()
action_str=input("请选择操作:")
print("您选择的操作是【%s】" % action_str)
# 1,2,3针对名片操作
# 0退出程序
# 其他输入错误
if action_str in ["1", "2", "3"]:
if action_str ==1:
card_toos.new_card()
elif action_str == 2:
card_toos.show_all()
elif action_str ==3:
card_toos.search_card()
# 如果在开发时不希望编写分支内部,可以使用pass关键字,保证代码正确
elif action_str == 0:
print("欢迎再次使用")
break
# pass
else:
print("您输入错误,请重新选择")
#记录名片记录的列表
card_list = []
def show_menu():
print("*" * 50)
print("欢迎使用【名片管理系统】 v 1.0")
print("")
print("1.新增名片")
print("2.显示全部")
print("3.搜索名片")
print("")
print("0.退出系统")
print("*" * 50)
def new_card():
"""新增名片"""
print("-"*50)
print("新增名片")
name = input("请输入名字:")
phone = input("请输入电话:")
qq = input("请输入qq:")
email = input("请输入邮箱:")
#1.提示用户输入名片详细信息
card_dict = {"name": name,
"phone": phone,
"qq": qq,
"email": email}
#2.建立字典
card_list.append(card_dict)
print(card_list)
#3.将名片字典添加到列表中
print("添加%s的名片成功" % name)
#4.提示用户成功
def show_all():
"""显示全部"""
print("-" * 50)
print("显示全部")
#判断是否存在名片记录
if len(card_list) == 0:
print("当前没有名片记录,请添加名片")
#可以返回一个函数的执行结果,下方代码不会执行,return后无内容返回调用函数位置
return
#打印表头
for name in ["姓名", "电话", "QQ", "邮箱"]:
print(name, end="\\t\\t")
#打印分割线
print("=" * 50)
#遍历名片列表,依次输出字典信息
for card_dict in card_list:
print("%s\\t\\t%s\\t\\t%s\\t\\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
def search_card():
"""搜索名片"""
print("-" * 50)
print("搜索名片")
#1.提示用户要搜索的姓名
find_name = input("请输入要搜索的姓名:")
#2.遍历名片列表,查询名字,如未找到,提示用户
for card_dict in card_list:
if card_dict["name"] == find_name:
print("姓名\\t\\t电话\\t\\tQQ\\t\\t邮箱")
print("="*50)
print("%s\\t\\t%s\\t\\t%s\\t\\t%s" % (card_dict["name"],
card_dict["phone"],
card_dict["qq"],
card_dict["email"]))
deal_card(card_dict)
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(find_dict["name"], "姓名:[回车不修改]")
find_dict["phone"] = input_card(find_dict["phone"], "电话:[回车不修改]")
find_dict["qq"] = input_card(find_dict["qq"], "QQ:[回车不修改]")
find_dict["email"] = input_card(find_dict["email"], "邮箱:[回车不修改]")
print("修改成功")
elif action_str == "2":
card_list.remove(find_dict)
print("删除成功")
def input_card(dict_value, tip_message):
#1. 提示用户输入内容
result = input(tip_message)
#2. 对输入判断,若输入内容,返回结果
if len(result) > 0:
return result
else:
return dict_value
#3. 若不输入内容,返回原值
>>> a = 1
>>> id(a)
2692085776624
>>> b = a
>>> id(b)
2692085776624
>>> a = 2
>>> id(a)
2692085776656
>>> id(b)
2692085776624
def test(num):
print("函数内部%d对应的地址%d" % (num, id(num)))
a = 10
id(a)
test(a)
#两个值相同
不可变类型:数字类型:int,bool,complex,long(2,x)
字符串:str
元组:tuple
可变类型:数据能被修改
列表:list
字典:dict key只能使用不可变数据类型
def measure():
temp =39
wetness = 50
return (temp,wetness)#小括号可省略
result = measure()
print(result)
print(result[0])#单独处理
gl_temp,gl_wet = result#使用多个变量一次接收,变量数与元素个数一致
b = a
a = c
b = a - b
a = a - b
a,b = (b,a)
一个函数可以处理的参数个数不确定
有两种多值参数
def demo(num,*nums,**person):
print(num)
print(nums)
print(person)
demo(1,2,3,4,5,name = "xiaoming",age = 18)
1
(2, 3, 4, 5)
{'name': 'xiaoming', 'age': 18}
def sum(num):
if num == 1:
return 1
temp = sum(num - 1)
return temp+num
result = sum(100)
print(result)
5050
class 类名 :
def 方法( self,参数列表):
pass
对象变量 = 类名()
class Cat:
def eat(self):
print("小猫爱吃鱼")
tom = Cat()
tom.eat()
print(tom)
ltom = Cat()
print(ltom)
tom.name = "Tom" #添加属性(不推荐)
小猫爱吃鱼
<__main__.Cat object at 0x0000028C3A5B37C0>
<__main__.Cat object at 0x0000028C3A5B3790>
class Cat:
def eat(self):
print("%s爱吃鱼" % self.name)
tom = Cat()
tom.name = "Tom"#添加属性
tom.eat()
print(tom)
ltom = Cat()
print(ltom)
Tom爱吃鱼
<__main__.Cat object at 0x0000018C54A77B80>
<__main__.Cat object at 0x0000018C54F03820>
class Cat:
def __init__(self): #在创建对象时会自动调用该方法
print("这是一个初始化方法")
def eat(self):
print("%s爱吃鱼" % self.name)
tom = Cat()
tom.name = "Tom"#添加属性
tom.eat()
print(tom)
ltom = Cat()
print(ltom)
这是一个初始化方法
Tom爱吃鱼
<__main__.Cat object at 0x000001FEDC403FA0>
这是一个初始化方法
<__main__.Cat object at 0x000001FEDC403E80>
class Cat:
def __init__(self):
print("这是一个初始化方法")
self.name = "tom"
def eat(self):
print("%s爱吃鱼" % self.name)
tom = Cat()
print(tom.name)
这是一个初始化方法
tom
class Cat:
def __init__(self, new_name): #使用参数初始化参数
print("这是一个初始化方法")
self.name = new_name
def eat(self):
print("%s爱吃鱼" % self.name)
tom = Cat("大懒猫")
print(tom.name)
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s来了" % self.name)
def __del__(self):
print("我去了")
def eat(self):
print("%s爱吃鱼" % self.name)
tom = Cat("大懒猫")
print("*" * 50)
#所以代码执行完成才会自动清除全局变量,及tom变量
大懒猫来了
**************************************************
我去了
class Cat:
def __init__(self, new_name):
self.name = new_name
print("%s来了" % self.name)
def __del__(self):
print("我去了")
def eat(self):
print("%s爱吃鱼" % self.name)
def __str__(self):
return "我是小猫"
tom = Cat("大懒猫")
print(tom)