py 入门 _ 02

 

名片管理系统:

小知识点:

pass的使用、while true 与break的使用、

快速回到行首 shift + home  ,行尾  end键

TODO注释:在#后面跟上TODO,用于标记需要去做的工作,TODO后面也可以跟上一个括号,记录详细信息

# TODO(tongwandou) 显示功能菜单

批量修改变量:选中某一个变量,右键/refactor/rename/第一项(或者shift + f6) 进行修改,完成后enter

如果一个()内部的字符串过长,影响操作,可以在字符串内部某处直接enter,变成两行。

 

 

1、

action_str = input("请选择希望执行的操作:")
print("您选择的操作是【%s" % action_str)

# 123针对名片的操作
if action_str == [1, 2, 3]:
    pass
# 0 退出系统
elif action_str == 0:
    # 如果在编写程序时,不希望立即编写分支内部的代码
    # 可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确!
    pass
# 其他内容输入错误,需要提示用户
else:
    print("您输入的不正确,请重新选择") 

 

2、

# 无限循环,由用户主动决定什么时候退出循环!
while True:

    # 显示功能菜单

    action_str = input("请选择希望执行的操作:")
    print("您选择的操作是【%s" % action_str)

    # 123针对名片的操作
    if action_str in ["1", "2", "3"]:

        # 新增名片
        if action_str == "1":
            pass
        # 显示全部
        elif action_str == "2":
            pass
        # 查询名片
        elif action_str == "3":
            pass


    # 0 退出系统
    elif action_str == "0":
        print("欢迎再次使用【名片管理系统】")
        break
        # 如果在编写程序时,不希望立即编写分支内部的代码
        # 可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确!
        # pass
    # 其他内容输入错误,需要提示用户
    else:
        print("您输入的不正确,请重新选择") 

 

 

 

名片管理系统完整版:

1、主程序:

import card_tools

# 无限循环,由用户主动决定什么时候退出循环!
while True:

   
# 显示功能菜单
   
card_tools.show_menu()

   
action_str = input("请选择希望执行的操作:")
   
print("您选择的操作是【%s" % action_str)

   
# 123针对名片的操作
   
if action_str in ["1", "2", "3"]:

       
# 新增名片
       
if action_str == "1":
           
card_tools.new_card()
        # 显示全部
       
elif action_str == "2":
           
card_tools.show_all()
        # 查询名片
       
elif action_str == "3":
           
card_tools.search_car()


    # 0 退出系统
   
elif action_str == "0":
       
print("欢迎再次使用【名片管理系统】")
       
break
       
# 如果在编写程序时,不希望立即编写分支内部的代码
       
# 可以使用pass关键字,表示一个占位符,能够保证程序的代码结构正确!
       
# pass
    # 其他内容输入错误,需要提示用户
   
else:
       
print("您输入的不正确,请重新选择")

 

2、调用函数:

# 记录所有的名片字典
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("新增名片")

   
# 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("显示所有名片")

   
# 判断是否有名片记录,如果没有,提示用户并且返回
   
if len(card_list) == 0:

       
print("当前没有任何的名片记录,请使用新增功能添加名片!")
       
# return 可以返回一个函数的执行结果
       
# 下方代码不会被执行
       
# 如果return后面没有任何的内容,表示会返回到调用函数的位置
       
# 并且不会返回任何结果
       
return

   
# 打印表头
   
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"]))


def search_car():

   
"""搜索名片"""
   
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\t\t" % (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):
   
"""处理查找到的名片

   
:param find_dict: 查找到的名片
   
"""
   
print(find_dict)

   
action_str = input("请选择要执行的操作 "
                      
"1 修改 2 删除 "
                      
"0 返回上级菜单")
   
if action_str == "1":

       
find_dict["name"] =input_card_info(find_dict["name"], "姓名:")
       
find_dict["phone"] =input_card_info(find_dict["phone"], "电话:")
       
find_dict["qq"] =input_card_info(find_dict["qq"], "QQ")
       
find_dict["email"] =input_card_info(find_dict["email"], "邮箱:")

       
print("修改名片成功!")
   
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: 如果用户输入了内容,就返回内容,否则返回字典中原有的值
   
"""
   
# 1.提示用户输入内容
   
result_str = input(tip_message)

   
# 2.针对用户输入内容进行判断,如果用户输入了内容,直接返回结果
   
if len(result_str)> 0:
       
return result_str
   
# 3.如果用户没有输入内容,返回字典中原有的值
   
else:
       
return dict_value

 

 

语法:

变量:

不可变类型:

内存中不允许被修改:数字类型、字符串、元组

可变类型:

内存中数据可以被修改:列表、字典

 

局部变量:

在函数内部定义的变量,只能在函数内部使用,函数执行结束后,函数内部的局部变量,会被系统回收(开发中,不推荐使用全局变量----可变范围太大,导致程序不好维护)

不同函数可以定义相同名字的局部变量,并且彼此之间不会产生影响

全局变量:

函数外部定义的变量,所有函数内部都可以使用这个变量

注意:开发时,应该把模块中的所有全局变量定义在所有函数上方,就可以保证所有的函数都可以正常访问到每一个全局变量了

全局变量命名:

为避免局部变量与全局变量出现混淆,在定义全局变量时,在全局变量名前增加g_或者gl_的前缀。

 

代码结构:

import模块

全局变量

函数定义

执行代码

 

 

# 全局变量
num = 10


def demo1():

   
# 希望修改全局变量的值——使用global 声明一下变量即可
   
# global 关键字会告诉解释器后面的变量是一个全局变量
   
# 在使用赋值语句时,就不会创建局部变量
   
global num # 可以注释再运行
   
num = 99

   
print("demo1 ==> %d" % num)

   

def demo2():
   
print("demo2 ==> %d" % num)


demo1()
demo2()

 

 

怎么指定默认值(缺省参数):

注意:带有默认值的缺省参数必须放在参数列表末尾

 

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("老王")
print_info(
"小明")
print_info(
"小美", False)

 

多值参数:

有时定义一个函数能够处理参数个数是不确定的,这时就可以使用多值参数

py中有两种多值参数:

1、参数名前加一个 * 可以接受元组

2、参数名前增加两个 * 可以接受字典

习惯:

*args  存放元组参数

**kwargs  存放字典参数

def demo(num, *nums, **person):

   
print(num)
   
print(nums)
   
print(person)


# demo(1)
demo(1, 2, 3, 4, name="小明", age="18")

 

 

使用元组求和:

def sum_numbers(*args):
   
num = 0
   
print(args)
   
# 循环遍历
   
for n in args:
       
num += n
    return num


result = sum_numbers(
1, 2, 3, 4, 5)
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(*gl_nums, **gl_dict)  # 使用拆包语法

demo(1, 2, 3, name="小明", age=18# 不使用拆包语法

 

递归函数:

函数自己调用自己(递归),

必须有递归出口,否则出现死循环

def sum_numbers(num):

   
print(num)
   
# 递归出口,当参数满足某个条件时,不在执行函数
   
if num == 1:
       
return
   

    # 函数自己调用自己
   
sum_numbers(num- 1)


sum_numbers(
3)

 

递归求和:

# 定义一个函数 sum_numbers
#
能够接收一个num的整数参数
#
计算1+2+3...num的结果


def sum_numbers(num):

   
# 1.出口
   
if num == 1:
       
return 1
   
# 2.数字累加num +1...num -1
   
# 假设sum_numbers能够正确处理1...num -1
   
temp = sum_numbers(num - 1)

   
return num + temp


result = sum_numbers(
3)
print(result)

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值