zoukankan      html  css  js  c++  java
  • 第一模块:开发基础 第2章 练习及作业

    练习

    1. 请用代码实现:利用下划线将列表的每一个元素拼接成字符串,li = ['alex', 'eric', 'rain']

    li = ['alex', 'eric', 'rain']
    print("_".join(li))

    输出:

    alex_eric_rain

    2. 查找列表中元素,移除每个元素的空格,并查找以a或A开头并且以c结尾的所有元素

    for i in li:
        i = i.strip()
        if i.startswith("a") or i.startswith("A") and i.endswith("c"):
            print(i)

    输出:

    alec
    aric

    3. 写代码,有如下列表,按照要求实现每一个功能

    li = ['alex', 'eric', 'rain']
    # 计算列表长度并输出
    print(len(li))  # 输出3
    
    # 列表中追加元素“seven”,并输出添加后的列表
    li.append("seven")
    print(li)  # 输出:  ['alex', 'eric', 'rain', 'seven']
    
    # 请在列表的第1个位置插入元素“Tony”,并输出添加后的列表
    li.insert(1,"Tony")
    print(li)   # 输出 :['alex', 'Tony', 'eric', 'rain']
    
    # 请修改列表第2个位置的元素为“Kelly”,并输出修改后的列表
    li[2] = "Kelly"
    print(li)  # 输出:['alex', 'eric', 'Kelly']
    
    # 请删除列表中的元素“eric”,并输出修改后的列表
    li.remove("eric")
    print(li)  # 输出:['alex', 'rain']
    
    # 请删除列表中的第2个元素,并输出删除的元素的值和删除元素后的列表
    print(li.pop(2))
    print(li)
    输出:
    rain
    ['alex', 'eric']
    
    
    # 请删除列表中的第3个元素,并输出删除元素后的列表
    li = ['alex', 'eric', 'rain']
    li.append("seven")
    li.insert(1, "Tony")
    li.pop(3)
    print(li)
    输出:
    ['alex', 'Tony', 'eric', 'seven']
    
    
    # 请删除列表中的第2至4个元素,并输出删除元素后的列表
    del li[2:4]
    print(li)
    输出:
    ['alex', 'Tony', 'seven']
    
    # 请将列表所有的元素反转,并输出反转后的列表
    li.reverse()
    print(li)
    输出:
    ['seven', 'rain', 'eric', 'Tony', 'alex']
    
    # 请使用 for、len、range输出列表的索引(没搞懂这个问题)
    for i in li:
        print(li.index(i))
    
    
    # 请使用enumrate输出列表元素和序号(序号从100开始)
    for index, i in enumerate(li):
        print(i, index + 100)
    输出:
    alex 100
    Tony 101
    eric 102
    rain 103
    seven 104
    
    # 请使用for循环输出列表的所有元素
    for i in li:
        print(i)
    输出:
    alex
    Tony
    eric
    rain
    seven
    4. 写代码,有如下列表,请按照功能要求实现每一个功能
    li = ["hello", 'seven', ["mon", ["h", "kelly"], 'all'], 123, 446]
    # 根据索引输出“Kelly”
    print(li[2][1][1])
    
    # 请使用索引找到“all”元素并将其修改为“ALL”,如:li[0][1][9]...
    li[3] = "ALL"
    print(li)   # 输出:['hello', 'seven', ['mon', ['h', 'kelly'], 'all'], 'ALL', 446]

    5. 写代码,有如下元组,请按照功能高要求实现每一个而功能
    tu = ('alex', 'eric', 'rain')
    # 计算元组的长度并输出
    print(len(tu))  # 输出:3
    
    # 获取元组的第2 个元素,并输出
    print(tu[2])  # 输出:rain
    
    # 获取元组的第1-2个元素,并输出
    print(tu[1:2])  # 输出:('eric',)
    
    # 请使用for输出元组的元素
    for i in tu:
        print(i)
    
    # 请使用for、len、range输出元组的索引
    for i in range(len(tu)):
        print(i)
    
    # 请使用enumrate输出元组元素和序号(序号从10开始)
    for index, i in enumerate(tu):
        print(i, index + 10)
    6. 有如下变量,请实现要求的功能
    tu = ("alex", [11, 22, {"k1": 'v1', "k2": ["age", "name"], "k3": (11, 22, 33)}, 44])
    # 讲述元组的特性:
    #   元组元素不可变,元组里面元素包含可变元素,则该元素可变
    
    # 请问 tu变量中的第一个元素“alex”是否可被修改?
    #   不可被修改
    
    # 请问tu变量中的“k2”对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个“Seven”
    #   可以修改。
    tu[1][2]["k2"].append("Seven")
    print(tu)
    
    # 请问tu变量中的"k3"对应的值是什么类型?是否可以被修改?如果可以,请在其中添加一个“Seven”
    #   元组类型,不可修改
    7. 字典
    dic = {'k1': "v1", "k2": "v2", "k3": [11, 22, 33]}
    # 请循环输出所有的key
    for key in dic:
        print(key)
    
    # 请循环输出所有的value
    for key in dic:
        print(dic[key])
    
    # 请循环输出所有的key和balue
    for key in dic:
        print(key, dic[key])
    
    # 请在字典中添加一个键值对,"k4":"v4" ,输出添加后的字典
    dic["k4"] = "v4"
    print(dic)
    
    # 请修改字典中"k1"对应的值为"alex" ,输出修改后的字典
    dic["k1"] = "alex"
    print(dic)
    
    # 请在k3对应的值中追加一个元素44,输出修改后的字典
    dic["k3"].append(44)
    print(dic)
    
    # 请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
    dic["k3"].insert(1, 18)
    print(dic)
    8. 转换
    # 将字符串s= "alex" 转换成列表
    s = "alex"
    s = list(s)
    print(s)
    
    # 将字符串s= "alex" 转换成元组
    s = "alex"
    s = tuple(s)
    print(s)
    
    # 将列表li=["alex","seven"]转换成元组
    li = ["alex", "seven"]
    tu = tuple(li)
    print(tu)
    
    # 将元组tu = ("Alex","seven")转换成列表
    tu = ("Alex", "seven")
    li = list(tu)
    print(li)
    
    # 将列表 li=["alex","seven"]转换成字典且字典的key按照10开始向后递增
    dic = {}
    for index, i in enumerate(li, 10):
        dic[index] = i
    print(dic)

    9. 元素分类

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

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

    li = [11, 22, 33, 44, 55, 66, 77, 88, 99, 90]
    dic = {"k1":[],"k2":[]}
    for i in li:
        if i > 66:
            dic["k1"].append(i)
        elif i < 66:
            dic["k2"].append(i)
    print(dic)

     输出:

    {'k1': [77, 88, 99, 90], 'k2': [11, 22, 33, 44, 55]}

    10. 输出商品列表,用户输入序号,显示用户选中的商品

    商品li = ["手机","电脑","鼠标垫","游艇"]

    允许用户添加商品

    用户输入序号显示内容

    li = ["手机", "电脑", "鼠标垫", "游艇"]
    while True:
        for index, i in enumerate(li):
            print(index, i)
        put = input("请输入:商品序号 或 a添加商品,q退出: ")
        if put.isdigit():
            put = int(put)
            if put >= len(li):
                print("没有你选择的商品.")
            else:
                print("你已选择:", li[put])
        elif put == "a":
            add = input("请输如你要添加的商品: ")
            li.append(add)
        elif put == "q":
            print("bye bye.")
            break
        else:
            print("输入不正确.")

    运行结果:

    0 手机
    1 电脑
    2 鼠标垫
    3 游艇
    请输入:商品序号 或 a添加商品,q退出: 3
    你已选择: 游艇
    0 手机
    1 电脑
    2 鼠标垫
    3 游艇
    请输入:商品序号 或 a添加商品,q退出: a
    请输如你要添加的商品: 萝卜
    0 手机
    1 电脑
    2 鼠标垫
    3 游艇
    4 萝卜
    请输入:商品序号 或 a添加商品,q退出: 4
    你已选择: 萝卜
    0 手机
    1 电脑
    2 鼠标垫
    3 游艇
    4 萝卜
    请输入:商品序号 或 a添加商品,q退出: q
    bye bye.

     11. 稍后更新

    12. 稍后更新

    13. 有两个列表

    l1 = [11,22,33]
    l2 = [22,33,44]
    # 获取内容相同的元素列表
    s1 = set(l1)
    s2 = set(l2)
    print(s1.intersection(s2))
    
    # 获取l1中有,l2中没有的元素列表
    print(s1.difference(s2))
    
    # 获取l2中有,l1中没有的元素列表
    print(s2.difference(s1))
    
    # 获取l1和l2中内容都不同的元素
    print(s1.symmetric_difference(s2))

    14. 利用for循环和range输出

    # for循环从大到小输出1-100
    for i in range(100,0,-1):
        print(i)
    
    # for循环从小到大输出100-1
    for i in range(1,101):
        print(i)
    
    # While循环从大到小输出1-100
    count = 100
    while count > 0:
        print(count)
        count-=1
    
    # while循环从小到大输出100-1
    count = 0
    while count < 101:
        print(count)
        count+=1

    15. 使用for循环和range输出9 * 9乘法表

    方法一:

    for i in range(1, 10):
        for j in range(1, 10):
            print("%s x %s = %s" % (j, i, j * i), end="	")
            if j == i:
                print("")
                break

    方法二:

    for x in list(range(1, 10)):
        for y in list(range(1, x + 1)):
            if x == y:
                print("%d x %d = %d" % (y, x, x * y))
            else:
                print("%d x %d = %d" % (y, x, x * y), end='	')

    运行结果:

    1 x 1 = 1	
    1 x 2 = 2	2 x 2 = 4	
    1 x 3 = 3	2 x 3 = 6	3 x 3 = 9	
    1 x 4 = 4	2 x 4 = 8	3 x 4 = 12	4 x 4 = 16	
    1 x 5 = 5	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
    1 x 6 = 6	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
    1 x 7 = 7	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
    1 x 8 = 8	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
    1 x 9 = 9	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81

    作业

    """
    需求:
    可依次选择进入各子菜单
    可从任意一层往回退到上一层
    可从任意一层退出程序
    所需新知识点:列表、字典
    
    踩分点:
    1.只用一个while循环,且整体代码量少于15行按完成需求/条—25分
    2.只用一个while循环,且整体代码量多于15行需求全部完成给90分
    3.其他情况按完成需求/条—20分
    """
    
    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车站': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    
    current = [menu]
    while True:
        for i in current[-1]:
            print(i)
        choose = input("输入进入下一级,b返回上级,q退出 >>")
        if choose in current[-1]:
            current.append(current[-1][choose])
        elif choose == "b":
            if len(current) == 1:
                continue
            current.pop()
        elif choose == "q":
            break
        else:
            print("!!输入错误!!")
    """
    功能要求:
    基础要求:
    1、启动程序后,输入用户名密码后,让用户输入工资,然后打印商品列表
    2、允许用户根据商品编号购买商品
    3、用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    4、可随时退出,退出时,打印已购买商品和余额
    5、在用户使用过程中, 关键输出,如余额,商品已加入购物车等消息,需高亮显示
    
    扩展需求:
    1、用户下一次登录后,输入用户名密码,直接回到上次的状态,即上次消费的余额什么的还是那些,再次登录可继续购买
    2、允许查询之前的消费记录
    """
    import os
    
    goods = [
        {"name": "电脑", "price": 1999},
        {"name": "鼠标", "price": 10},
        {"name": "游艇", "price": 20},
        {"name": "美女", "price": 998},
    ]
    
    username = input("请输入用户名:")
    password = input("请输入密码:")
    if username != "alex" or password != "123":
        print("用户名或密码错误!")
    else:
        cart = {}
        salary = ""
        if os.path.exists("salary_file.txt"):
            salary_f = open("salary_file.txt", "r", encoding="UTF-8")
            salary_content = salary_f.read()
            salary_f.close()
            if salary_content.isdigit():
                put = input("检测到你还有剩余金额 %s,y继续使用余额,n输入新金额:" % (salary_content))
                if put == "y":
                    salary = salary_content
                elif put == "n":
                    salary = input("请输入你的工资:")
                    if salary.isdigit():
                        salary = salary
                    else:
                        print("工资必须是数字.")
                else:
                    print("输入错误")
            else:
                print("存储余额文件包含非数字字符.")
                salary = input("请输入你的工资:")
                if salary.isdigit():
                    salary = salary
                else:
                    print("工资必须是数字.")
        else:
            salary = input("请输入你的工资:")
            if salary.isdigit():
                salary = salary
            else:
                print("工资必须是数字.")
    
        while True:
            salary = int(salary)
            print("商品列表".center(20, "-"))
            for index, i in enumerate(goods):
                print("%s	%s	%s" % (index + 1, goods[index]["name"], goods[index]["price"]))
            choose = input("请输入商品编号进行购买(q.进行结算, h.查看上次购物):")
            if choose.isdigit():
                choose = int(choose) - 1
                if choose >= len(goods):
                    print("没有你选择的商品.")
                elif salary >= goods[choose]["price"]:
                    if cart.get(goods[choose]["name"]) == None:
                        cart[goods[choose]["name"]] = [goods[choose]["price"], 1]
                    else:
                        cart[goods[choose]["name"]][1] += 1
                    print("添加33[1;31;40m%s33[0m 到购物车成功." % (goods[choose]["name"]))
                    salary -= goods[choose]["price"]
                else:
                    print("你的余额不足,你还有: %s" % (salary))
            elif choose == "q":
                # 打印购物车
                if len(cart) == 0:
                    print("你啥都没买,你的余额还是:%s" % (salary))
                    break
                else:
                    print("你购买了以下商品".center(50, "-"))
                    print("序号       商品名称        单价          数量          总价")
                    total = 0
                    for index, i in enumerate(cart):
                        print("%s         %s              %s           %s            %s" % (
                            index + 1, i, cart[i][0], cart[i][1], cart[i][0] * cart[i][1]))
                        total += cart[i][0] * cart[i][1]
                    print("你的总消费为:%s" % (total))
                    print("你的余额为:%s" % (salary))
                    salary_file = open("salary_file.txt", "w", encoding="UTF-8")
                    salary_file.write(str(salary))
                    salary_file.close()
                    cart_file = open("cart_file.txt", "w", encoding="UTF-8")
                    cart_file.write(str(cart))
                    cart_file.close()
                    break
            elif choose == "h":
                if os.path.exists("cart_file.txt"):
                    cart_file = open("cart_file.txt", "r", encoding="UTF-8")
                    content = eval(cart_file.read())
                    total_last = 0
                    print("上次购物明细".center(50, "*"))
                    print("序号       商品名称        单价          数量          总价")
                    for index, i in enumerate(content):
                        print("%s         %s              %s           %s            %s" % (
                            index + 1, i, content[i][0], content[i][1], content[i][0] * content[i][1]))
                        total_last += content[i][0] * content[i][1]
                    print("上次总消费为:%s" % (total_last))
                    cart_file.close()
                    print("上次购物明细 end".center(50, "*"))
                else:
                    print("没有上次购物记录")
            else:
                print("商品编号必须是数字")
  • 相关阅读:
    使用Egret Conversion 转化as代码到ts代码,
    C++ 部分知识点
    mac下 使用 versions版本控制工具 修复游戏bug过程
    Egret 显示容器
    Egret --视觉编程,显示对象,事件
    VS2015 使用
    TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts
    Prestashop--网站后台配置(一)
    Prestashop--访问优化
    eclipse 中 Android sdk 无法更新的问题
  • 原文地址:https://www.cnblogs.com/alexchenx/p/9010248.html
Copyright © 2011-2022 走看看