同学录项目(Python)

题目要求:
制作同学录小程序【并实现查找功能】,最终显示的结果如下:

代码实现:

# 定义同学录
alumni = {}


# 输入个人信息的函数
def input_alumni():
    name = input('请输入同学的姓名:')
    live = input('请输入同学所在城市:')
    telephone = input('请输入同学联系方式:')
    # 以元组的形式返回
    return name, live, telephone


# 同步个人信息到同学录的函数
def create_alumni(result):
    # 添加新的个人信息到同学录字典中
    alumni[result[0]] = result[1:]


# 定义展示同学录信息的函数
def show_info():
    print('现在有{}位同学在同学录中'.format(len(alumni)))
    print('-' * 40 + '风变同学录' + '-' * 40)
    for i in alumni:
        print('同学名称:{} 所在地:{} 联系方式:{}'.format(i, alumni[i][0], alumni[i][1]))


# 进入主程序,欢迎界面,循环询问是否录入同学录
def main():
    print('欢迎进入同学录小程序')
    answer = input('现在可以开始录入同学录么?(回答y开始录入,回答t显示目前同学录,输入q退出程序):')

    while True:
        if answer == 'y':
            result = input_alumni()
            create_alumni(result)
        elif answer == 't':
            show_info()
        elif answer == 'q':
            break
        answer = input('还录入同学录么?(回答y继续录入,回答t显示目前同学录,输入q退出录入):')
    print('\n录入结束\n')


# 调用函数
main()

运行结果:

 二、添加查询功能

增加查询功能find()函数,使用函数的好处是可以添加功能那个而不影响原来代码的格式。

import csv

# 输入个人信息的函数
def input_alumni():
    name = input('请输入同学的姓名:')
    live = input('请输入同学所在城市:')
    telephone = input('请输入同学联系方式:')
    # 以元组的形式返回
    return name, live, telephone

# 写入同学录
def csv_writer(file_name, result):
    with open(file_name, 'a', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=['同学名称', '所在地', '联系方式'])
        writer.writerow({'同学名称': result[0], '所在地': result[1], '联系方式': result[2]})

# 读取同学录
def csv_reader(file_name):
    f = open(file_name, 'r', encoding='utf-8')
    reader = csv.DictReader(f)
    return reader

# 定义查询功能的函数
def find(file_name):
    find_name = input('你要找哪位同学的信息呢:')
    print('-'*40 + '\n正在查找···\n')
    for row in csv_reader(file_name):
        if find_name == row['同学名称']:
            print('同学名称:{} 所在地:{} 联系方式:{}'.format(row['同学名称'], row['所在地'], row['联系方式']))
            break
    else:
        print('查无此人')
    print('-' * 40)

# 定义展示同学录信息的函数
def show_info(file_name):
    print('现在有{}位同学在同学录中'.format(len(list(csv_reader(file_name)))))
    print('-' * 40 + '风变同学录' + '-' * 40)
    for row in csv_reader(file_name):
        print('同学名称:{} 所在地:{} 联系方式:{}'.format(row['同学名称'], row['所在地'], row['联系方式']))

# 进入主程序,欢迎界面,循环询问是否录入同学录
def main():
    print('欢迎进入同学录小程序')
    start = input('请问是要创建新csv文件,还是打开已有csv文件?(回答创建或打开):')
    file_name = input('请输入csv文件名(以文件名.csv的格式写入):')

    with open(file_name, 'a', encoding='utf-8', newline='') as f:
        writer = csv.DictWriter(f, fieldnames=['同学名称', '所在地', '联系方式'])
        if start == '创建':
            # 写入列标题,即DictWriter构造方法的fieldnames参数
            writer.writeheader()
        elif start == '打开':
            print('已打开{}文件。'.format(file_name))

    answer = input('现在可以开始录入同学录么?(回答y开始录入,回答t显示目前同学录,回答f寻找个人信息,输入q退出程序):')
    
    while True:
        if answer == 'y':
            result = input_alumni()
            csv_writer(file_name, result)
        elif answer == 't':
            show_info(file_name)
        elif answer == 'f':
            find(file_name)
        elif answer == 'q':
            break
        answer = input('还录入同学录么?(回答y继续录入,回答t显示目前同学录,回答f寻找个人信息,回答q退出录入):')
    print('\n录入结束\n')

# 调用函数
main()

 运行结果:

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mez_Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值