Python基础——序列3(遍历列表、EMS练习、range())

一、遍历列表

  • 遍历列表,指的就是将列表中的所有元素取出来
1. 通过while循环来遍历列表
# 创建列表
stus = ['孙悟空','猪八戒','沙和尚','唐僧','白骨精','蜘蛛精']

# 通过while循环来遍历列表
i = 0
while i < len(stus):
    print(stus[i])
    i += 1

在这里插入图片描述

3. 通过for循环来遍历列表
  • 语法:
    • for 变量 in 序列 :
    • 代码块
  • for循环的代码块会执行多次,序列中有几个元素就会执行几次
    • 每执行一次就会将序列中的一个元素赋值给变量
    • 所以我们可以通过变量,来获取列表中的元素
# 创建列表
stus = ['孙悟空','猪八戒','沙和尚','唐僧','白骨精','蜘蛛精']

for s in stus :
    print(s)

在这里插入图片描述

二、EMS练习

EMS(Employee Manager System 员工管理系统) 练习
  • 做命令行版本的员工管理系统
  • 功能:
    • 四个:
      • 1.查询:显示当前系统当中的所有员工
      • 2.添加:将员工添加到当前系统中
      • 3.删除:将员工从系统当中删除
      • 4.退出:退出系统
  • 员工信息要保存到哪里? 列表,在系统中应该有一个列表,专门用来保存所有员工信息的
# 显示系统的欢迎信息
print('-'*20 , '欢迎使用员工管理系统', '-'*20)
# 创建一个列表,用来保存员工的信息,员工的信息以字符串的形式统一保存到列表
emps = ['孙悟空\t18\t男\t花果山','猪八戒\t28\t男\t高老庄']

# 创建一个死循环
while True:
    # 显示用户的选项
    print('请选择要做的操作:')
    print('\t1.查询员工')
    print('\t2.添加员工')
    print('\t3.删除员工')
    print('\t4.退出系统')
    user_choose = input('请选择[1-4]:')
    print('-'*62)
    # 根据用户的选择做相关的操作
    if user_choose == '1' :
        # 查询员工
        # 打印表头
        print('\t序号\t姓名\t年龄\t性别\t住址')
        # 创建一个变量,来表示员工的序号
        n = 1
        # 显示员工信息
        for emp in emps :
            print(f'\t{n}\t{emp}')
            n += 1
    elif user_choose == '2':
        # 添加员工
        # 获取要添加员工的信息,姓名、年龄、性别、住址
        emp_name = input('请输入员工的姓名:')
        emp_age = input('请输入员工的年龄:')
        emp_gender = input('请输入员工的性别:')
        emp_address = input('请输入员工的住址:')

        # 创建员工信息
        # 将四个信息拼接为一个字符串,然后插入到列表中
        emp = f'{emp_name}\t{emp_age}\t{emp_gender}\t{emp_address}'
        # 显示一个提示信息
        print('以下员工将被添加到系统中')
        print('-'*62)
        print('姓名\t年龄\t性别\t住址')
        print(emp)
        print('-'*62)
        user_confirm = input('是否确认该操作[Y/N]:')

        # 判断
        if user_confirm == 'y' or user_confirm == 'yes' :
            # 确认
            emps.append(emp)
            # 显示提示信息
            print('添加成功!')
        else :
            # 取消操作
            print('添加已取消!')
        
    elif user_choose == '3':
        # 删除员工,根据员工的序号来删除员工
        # 获取要删除的员工的序号
        del_num = int(input('请输入要删除的员工的序号:'))

        # 判断序号是否有效
        if 0 < del_num <= len(emps) :
            # 输入合法,根据序号来获取索引
            del_i = del_num - 1
            # 显示一个提示信息
            print('以下员工将被删除')
            print('-'*62)
            print('\t序号\t姓名\t年龄\t性别\t住址')
            print(f'\t{del_num}\t{emps[del_i]}')
            print('-'*62)
            user_confirm = input('该操作不可恢复,是否确认[Y/N]:')
            # 判断
            if user_confirm == 'y' or user_confirm == 'yes' :
                # 删除元素
                emps.pop(del_i)
                # 显示提示
                print('员工已被删除!')
            else :
                # 操作取消
                print('操作已取消!')
        else :
            # 输入有误
            print('您的输入有误,请重新操作!')

    elif user_choose == '4':
        # 退出
        print('欢迎使用!再见!')
        input('点击回车键退出!')
        break
    else :
        print('您的输入有误,请重新选择!')

    # 打印分割线
    print('-'*62)

三、range()

range()是一个函数,可以用来生成一个自然数的序列
  • 该函数需要三个参数
    • 1.起始位置(可以省略,默认是0)
    • 2.结束位置
    • 3.步长(可以省略,默认是1)
r = range(5) # 生成一个这样的序列[0,1,2,3,4]
print(list(r))

r = range(0,10,2)
print(list(r))

r = range(10,0,-1)
print(list(r))

在这里插入图片描述

通过range()可以创建一个执行指定次数的for循环
  • for()循环除了创建方式以外,其余的都和while一样,包括else、包括break continue都可以在for循环中使用,并且for循环使用也更加简单
for i in range(3):
    print(i)

for s in 'hello':
    print(s)

在这里插入图片描述

某公司雇员(Employee)包括经理(Manager),技术人员(Technician)和销售员(Salesman)。开发部经理(DeveloperManger),既是经理也是技术人员。销售部经理(SalesManager),既是经理也是销售员。 以Employee类为虚基类派生出Manager,Technician和Salesman类;再进一步派生出Developermanager和Salesmanager类。 Employee类的属性包括姓名、职工号、工资级别,薪(实发基本工资加业绩工资)。操作包括薪计算函数(pay()),该函数要求输入请假天数,扣去应扣工资后,得出实发基本工资。 Technician类派生的属性有每小时附加酬金和当工作时数,及研究完成进度系数。业绩工资为三者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。 Salesman类派生的属性有当销售额和酬金提取百分比,业绩工资为两者之积。也包括同名的pay()函数,工资总额为基本工资加业绩工资。 Manager类派生属性有固定奖金额和业绩系数,业绩工资为两者之积。工资总额也为基本工资加业绩工资。 而DeveloperManager类,pay()函数是将作为经理和作为技术人员业绩工资之和的一半作为业绩工资。 SalesManager类,pay()函数则是经理的固定奖金额的一半,加上部门总销售额与提成比例之积,这是业绩工资。 编程实现工资管理。特别注意pay()的定义和调用方法:先用同名覆盖,再用运行时多态。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值