0
点赞
收藏
分享

微信扫一扫

python入门第五章兔子数列 学生管理系统 归并排序 角谷猜想 饮品自动售货机

凉夜lrs 2022-04-13 阅读 23
python
def fibonacci(month):
    if month == 0 or month == 1:
        return 1
    else:
        return fibonacci(month-1) + fibonacci(month-2)
# 测试经过12个月份后的兔子对数
result = fibonacci(12)
print(result)

"""
使用自定义函数,完成对程序的模块化
学生信息包含:姓名、性别、手机号
该系统具有的功能:添加、删除、修改、显示、退出系统
设计思路:
提示用户选择功操作
获取用户选择的功能
根据用户的选择,分别调用不同的函数
"""
# 新建一个列表,用来保存学生的所有信息
stu_info = []
# 功能打印
# 打印功能菜单
def print_menu():
    print('=' * 30)
    print('学生管理系统 V10.0')
    print('1.添加学生信息')
    print('2.删除学生信息')
    print('3.修改学生信息')
    print('4.查询所有学生信息')
    print('0.退出系统')
    print('=' * 30)


# 添加学生信息
def add_stu_info():
    # 提示并获取学生的姓名
    new_name = input('请输入新学生的姓名:')
    # 提示并获取学生的性别
    new_sex = input('请输入新学生的性别:')
    # 提示并获取学生的手机号
    new_phone = input('请输入新学生的手机号码:')
    new_info = dict()
    new_info['name'] = new_name
    new_info['sex'] = new_sex
    new_info['phone'] = new_phone
    stu_info.append(new_info)


# 删除学生信息
def del_stu_info(student):
    del_num = int(input('请输入要删除的序号:')) - 1
    del student[del_num]
    print("删除成功!")


# 修改学生信息
def modify_stu_info():
    if len(stu_info) != 0:
        stu_id = int(input('请输入要修改学生的序号:'))
        new_name = input('请输入要修改学生的姓名:')
        new_sex = input('请输入要修改学生的性别:(男/女)')
        new_phone = input('请输入要修改学生的手机号码:')
        stu_info[stu_id - 1]['name'] = new_name
        stu_info[stu_id - 1]['sex'] = new_sex
        stu_info[stu_id - 1]['phone'] = new_phone
    else:
        print('学生信息表为空')


# 显示所有的学生信息
def show_stu_info():
    print('学生的信息如下:')
    print('=' * 30)
    print('序号    姓名    性别    手机号码')
    i = 1
    for tempInfo in stu_info:
        print("%d    %s    %s    %s" % (i, tempInfo['name'],
               tempInfo['sex'], tempInfo['phone']))
        i += 1


# 在main函数中执行不同的功能
def main():
    while True:
        print_menu()      # 打印功能菜单
        key = input("请输入功能对应的数字:")  # 获取用户输入的序号
        if key == '1':    # 添加学生信息
            add_stu_info()
        elif key == '2':  # 删除学生信息
            del_stu_info(stu_info)
        elif key == '3':  # 修改学生信息
            modify_stu_info()
        elif key == '4':  # 查询所有学生信息
            show_stu_info()
        elif key == '0':
            quit_confirm = input('亲,真的要退出么?(Yes or No):').lower()
            if quit_confirm == 'yes':
                print("谢谢使用!")
                break  # 跳出循环
            elif quit_confirm == 'no':
                continue
            else:
                print('输入有误!')



if __name__ == '__main__':
    main()

def merge_sort(li):
    n = len(li)
    if n == 1:
        return li
    # 把数据分成左右两部分
    mid = n // 2
    left = li[:mid]
    right = li[mid:]

    # 递归拆分
    left_res = merge_sort(left)
    right_res = merge_sort(right)
    # 把下层返回上来的数据,组成有序序列
    result = merge(left_res, right_res)
    # 合并
    return result


def merge(left, right):
    result = []
    left_index = 0
    right_index = 0
    while left_index < len(left) and right_index < len(right):
        if left[left_index] <= right[right_index]:
            result.append(left[left_index])
            left_index += 1
        else:
            result.append(right[right_index])
            right_index += 1
    # while循环结束后,把剩下的数据添加进来
    result += right[right_index:]
    result += left[left_index:]
    return result


if __name__ == '__main__':
    list_demo = [6, 5, 7, 4, 3, 1]
    print(merge_sort(list_demo))





def guess(number):
    i = 0  # 统计变换的次数
    original_number = number  # 记录最初的number
    while number != 1:
        if number % 2 == 0:  # number为偶数
            number = number / 2
        else:  # number为奇数
            number = number * 3 + 1
        i += 1
    print(f"{original_number}经过{i}次变换后回到1")


num = int(input("请输入一个大于1的正整数:"))
guess(num)

# 饮品信息
def all_goods():
    goods = {"可口可乐": 2.5, "百事可乐": 2.5, "冰红茶": 3, "脉动": 3.5, "果缤纷": 3,
             "绿茶": 3, "茉莉花茶": 3, "尖叫": 2.5}
    return goods


# 展示饮品信息
def show_goods():
    for x, y in all_goods().items():
        print(x, ":", str(y) + "元")


# 计算总额
def total(goods_dict):
    count = 0
    for name, num in goods_dict.items():
        total_money = all_goods()[name] * num
        # 总金额
        count += total_money
    print("需要支付金额:", count, "元")


def main():
    goods_dict = {}
    print("饮 品 自 动 售 货 机")
    show_goods()
    # 循环选购的商品
    print("输入q完成购买")
    while True:
        goods_name = input("请输入购物的商品:")
        if goods_name == 'q':
            break
        if goods_name in [g_name for g_name in  all_goods().keys()]:
            goods_num = input("请输入购物数量:")
            if goods_num.isdigit():
                goods_dict[goods_name] = float(goods_num)
            else:
                print('商品数量不合法')
        else:
            print('请输入正确的商品名称')
    total(goods_dict)


if __name__ == '__main__':
    main()

举报

相关推荐

0 条评论