• day09-10


    ''' 2020-03-11 作业题
    1、有列表['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量

    2、用列表的insert与pop方法模拟队列


    3. 用列表的insert与pop方法模拟堆栈

    4、简单购物车,要求如下:
    实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数以三元组形式加入购物列表,如果输入为空或其他非法输入则要求用户重新输入  
    msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,
    }

    5、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中

    即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

    6、统计s='hello alex alex say hello sb sb'中每个单词的个数
    '''
    # 1、有列表['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量
    '''
    list1 = ['alex', 49, [1900, 3, 18]]
    name, age, birth = list1
    year, month, day = birth
    print(name, age, birth)
    print(year, month, day)
    '''

    # 2、用列表的insert与pop方法模拟队列
    # FIFO: 先进先出
    '''
    list1 = []
    # 根据列表的索引位置插入数据
    # 数据开始进入队列中
    list1.insert(0, '我是第一个坦克')
    list1.insert(1, '我是第二个坦克')
    list1.insert(2, '我是第三个坦克')
    print(list1)

    # 数据开始出队列
    list1.pop(0)
    print(list1)
    list1.pop(0)
    print(list1)
    list1.pop(0)
    print(list1)
    '''

    # 3. 用列表的insert与pop方法模拟堆栈
    '''
    # 堆栈: 先进后出
    list1 = []
    # 根据列表的索引位置插入数据
    # 数据开始进入队列中
    list1.insert(0, '我是第一个坦克')
    list1.insert(1, '我是第二个坦克')
    list1.insert(2, '我是第三个坦克')
    print(list1)

    list1.pop() # 默认取出列表中最后一个数据
    print(list1)
    list1.pop() # 默认取出列表中最后一个数据
    print(list1)
    list1.pop() # 默认取出列表中最后一个数据
    print(list1)
    '''

    # 4、简单购物车,要求如下:
    # 实现打印商品详细信息,用户输入商品名和购买个数,则将商品名,价格,购买个数以三元组形式加入购物列表,
    # 如果输入为空或其他非法输入则要求用户重新输入  
    '''
    msg_dic = {
    'apple': 10,
    'tesla': 100000,
    'mac': 3000,
    'lenovo': 30000,
    'chicken': 10,
    }
    while True:
    # 实现无限循环打印商品信息,让用户选择商品
    for key, value in msg_dic.items():
    # 格式化输出方式一:
    # print('商品名称:[%s] 单位: [%s]元' % (key, value))

    # 格式化输出方式二:
    # print('商品名称:[{}] 单位: [{}]元'.format(key, value))

    # 格式化输出方式三: f'{key}{value}' ---> 等同于 '{}{}'.format(key, value)
    # 该语法是python3.5以后才出来
    print(f'商品名称:[{key}] 单位: [{value}]元')

    # 让用户输入商品名称
    shop_name = input('请输入需要购买的商品名称: ').strip()

    # 校验用户输入的商品是否存在
    if shop_name not in msg_dic:
    print('当前商品不存在')
    continue

    # 让用户输入购买的商品个数
    count = input('请输入购买的商品个数:').strip()
    if count.isdigit():
    count = int(count)

    shop_price = msg_dic.get(shop_name)

    cost = shop_price * count

    # 将商品的名称、单价、个数、总价 存放在一个元组中
    shop_tuple = (shop_name, shop_price, count, cost)
    print(shop_tuple)

    # 让用户选择是否继续购买
    break

    else:
    print('个数必须是数字类型!')
    '''

    # 5、有如下值集合 [11,22,33,44,55,66,77,88,99,90...],
    # 将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
    # 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
    # {'k1': [], 'k2': []}
    '''
    list1 = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    dict1 = {'k1': [], 'k2': []}
    # 循环遍历获取list1中的每一个值,然后一一比较
    for line in list1:
    if line > 66:
    dict1['k1'].append(line)
    elif line < 66:
    dict1['k2'].append(line)
    print(dict1)
    '''

    # 6、统计s='hello alex alex say hello sb sb'中每个单词的个数
    '''
    s = 'hello alex alex say hello sb sb'
    new_list = s.split(' ')
    print(new_list)
    dic = {}
    for line in new_list:
    # 如果当前的line不存在dic字典中,代表该单词是第一个出现,也就是个数为1
    if line not in dic:
    # 若单词出现第一次,则将该单词当做字典的key,1作为字典的value
    # 初始化单词的个数
    dic[line] = 1

    else:
    # 若是重复出现的单词,则个数 += 1
    dic[line] += 1

    print(dic)
    '''

    ''' 2020-03-12 作业题
    一.关系运算
      有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
      pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
      linuxs={'wupeiqi','oldboy','gangdan'}
      1. 求出即报名python又报名linux课程的学员名字集合
      2. 求出所有报名的学生名字集合
      3. 求出只报名python课程的学员名字
      4. 求出没有同时这两门课程的学员名字集合   

    二.去重
       1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,去重,得到新列表,且新列表无需保持列表原来的顺序

       2.在上题的基础上,保存列表原来的顺序

       3.去除文件中重复的行,肯定要保持文件内容的顺序不变
       4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序

    l=[
    {'name':'egon','age':18,'sex':'male'},
    {'name':'alex','age':73,'sex':'male'},
    {'name':'egon','age':20,'sex':'female'},
    {'name':'egon','age':18,'sex':'male'},
    {'name':'egon','age':18,'sex':'male'},
    ]  
    '''

    # 一.关系运算
    #   有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
    #   pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
    #   linuxs={'wupeiqi','oldboy','gangdan'}
    pythons = {'alex', 'egon', 'yuanhao', 'wupeiqi', 'gangdan', 'biubiu'}
    linuxs = {'wupeiqi', 'oldboy', 'gangdan'}

    #   1. 求出即报名python又报名linux课程的学员名字集合
    # print(pythons & linuxs)

    #   2. 求出所有报名的学生名字集合
    # print(pythons | linuxs)

    #   3. 求出只报名python课程的学员名字
    # print(pythons - linuxs)

    #   4. 求出没有同时这两门课程的学员名字集合  
    # print(pythons ^ linuxs)


    # 二.去重
    #    1. 有列表l=['a','b',1,'a','a'],列表元素均为可hash类型,
    # 去重,得到新列表,且新列表无需保持列表原来的顺序
    '''
    l = ['a', 'b', 1, 'a', 'a']
    new_list = list(set(l))
    print(new_list)
    '''

    #    2.在上题的基础上,保存列表原来的顺序
    '''
    l = ['a', 'b', 1, 'a', 'a']
    new_list = []
    for line in l:
    if line not in new_list:
    new_list.append(line)

    print(new_list) # ['a', 'b', 1]
    '''

    #    3.去除文件中重复的行,肯定要保持文件内容的顺序不变
    '''
    new_list = []
    # 1) 通过文件将文件中的每一行数据取出来
    with open('file.txt', 'r', encoding='utf-8') as f:
    for line in f:
    # print(line)
    # 2)通过new_list给文件中的数据做去重,并且保证原来的位置
    if line not in new_list:
    new_list.append(line)
    print(new_list)
    # 3) 将去重后的数据,重新写入当前file.txt文件中
    with open('file.txt', 'w', encoding='utf-8') as f:
    for line in new_list:
    f.write(line)
    '''

    # 4.有如下列表,列表元素为不可hash类型,去重,得到新列表,且新列表一定要保持列表原来的顺序
    '''
    l = [
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'alex', 'age': 73, 'sex': 'male'},
    {'name': 'egon', 'age': 20, 'sex': 'female'},
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    {'name': 'egon', 'age': 18, 'sex': 'male'},
    ]

    new_list = []

    for dic in l:
    print(dic)

    if dic not in new_list:
    new_list.append(dic)

    print(new_list)
    '''

  • 相关阅读:
    静态初始化块和main方法哪个先被执行?
    Java中的构造方法
    Java中的局部变量、成员变量和静态变量
    经典算法冒泡排序java版
    Java里数组的三种初始化方式
    聊天,发朋友圈可以不打字,但是表情怎么能少呢?那么如何用win10自带的微软拼音输入法打出表情呢?
    java打印实心10*10正方形, 空心10*10正方形
    安卓工程目录
    (1)开源中国android客户端源码分析
    认识电脑的开机流程与主引导分区(MBR)
  • 原文地址:https://www.cnblogs.com/2722127842qq-123/p/12787451.html
Copyright © 2020-2023  润新知