您的位置:首页 > 编程语言 > Python开发

day15 python-03 列表,元组,字典

2017-06-08 19:51 639 查看

 Python之路,Day3 = Python基础3

 

注:

extend: 拼接

enumerate:打印序号,返回两个值

 

模块的简单使用

sys模块

#!/usr/bin/env python           #这句话的含义是,在linux上,默认以python执行该文件
# _*_  conding:utf-8  _*_      #这句的含义是,设置编码格式为utf_8

import sys                             #导入模块,模块名为 “sys”

print(sys.argv)                    #调用模块中的argv,这个是方法吗?怎么没有括号?

#当使用命令行cmd运行这个文件的时候,可以在命令行加入参数,这样可以获取参数,例如输入: python test.py 参数1 参数2
#得到的结果就是一个列表:['test.py', 'hello', 'word']
#!/usr/bin/env python
# _*_  coding:utf-8  _*_

import sys

print(sys.path)     #打印出python自有的环境变量的位置

#就是说,如果python需要import其它模块的时候,会从这里面搜索,如果没有,则提示找不到。通常自己在自定义模块的时候,可以把自己的模块放在这些路径下面,当然,也可以把自己写的模块的路劲添加进这个列表里面。

os模块

#!/usr/bin/env python
# _*_  coding:utf-8  _*_

import os

os.system("dir .")

#调用系统命令“dir .”,这里的 “.”是当前目录的意思。整个命令就是,调用系统cmd命令中的显示当前文件夹下的所有文件。

list相关应用

#列表的创建
#方法一
test_list = ["zhang", 1, "String"]

#方法二
test_list = list(["zhang", 1, "String"])

#注:列表中可以嵌套列表
#如:test_list = ["zhang", 1, "String", ["zhang", 1, "String"]]

基本操作

test_list = ["zhang", 1, "String", "admin", "username", "password"]
  • 索引-->  test_list.index("zhang")     #返回结果为 0   从左往右找到括号中的元素第一次出现位置的下标,如果不存在,则返回错误。有多个时候,只返回第一个。

 

  • 切片-->     test_list[1:5]     #结果为 [1, "String", "admin", "username"]   将下标为 >=1 且 <5 的所有元素取出来作为新的列表,如果,左右数字不写,则默认为从头开始,到末尾结束。此方法可以跳着切片 test_index[1:5:2] 意思为,距离为2.

 

  • 追加-->     test_list.append("people")   #将字符串"people"添加到test_list最后面     test_list.insert(1,"d")   #将字符串"d",添加到下标为 1 的位置,其他内容顺序后移。
  •         test_list.extend(test_list)    #将列表 test_list  本身添加到自己后面,这个方法通常用来将两个列表合并,括号中的列表,将会按顺序添加到前面列表的后面。

 

  • 删除-->     del test_list[0]   #删除下标为0的元素     test_list.pop()  #删除最后一个元素,若果括号中加入下标,则删除,该下标位置
  •         test_list.remove("admin")  #从左往右,删除第一个遇到的该元素
  •         test_list.clear()    #清空 test_list。

 

  • 长度-->     len(test_list)    #返回列表 test_list 的长度

 

  • 循环-->
    test_list = ["zhang", 1, "String", "admin", "username", "password"]
    
    for i in test_list:
    print(i)
    
    #循环打印 test_list 中的所有元素

     

  • 包含-->
         "zhang" in test_list    #判断字符串 "zhang" 在 test_list 列表中,存在 True, 不存在 False
    •        "zhang" not in test_list   #判断字符串 "zhang" 不在 test_list 列表中,不存在 True, 存在 False

     

    • 计数-->     test_list.count("user")   #查看 test_list 列表中包含几个 "user" 字符串

     

    元组(不可变的列表)

    test_tuple = ("a", "b", "c", "d")       #赋值方法1
    test_tuple = tuple(("a", "b", "c", "d"))      #赋值方法2

     

    字典(无序)

    test_dict = {"name": "zhang", "gender": "male", "age": 23}
    test_dict = dict({"name": "zhang", "gender": "male", "age": 23})
    • 索引
    • #!/usr/bin/env python
      # _*_ coding:utf-8 _*_
      
      test_dict = {"name": "zhang", "gender": "male", "age": 23}
      
      print(test_dict["name"])
      
      ==> zhang
      
      #打印出 "name"对应的 值

    索引用test_dict["name"]的时候,如果不存在,则会出错,所有一个更好的选择:

      test_dict.get("name")  这样的话如果没有,则返回None,有的话返回值

    • 新增
    • #!/usr/bin/env python
      # _*_ coding:utf-8 _*_
      
      test_dict = {"name": "zhang", "gender": "male", "age": 23}
      
      test_dict["salary"] = 3000
      #添加新内容   "salary":3000, 如果 "salary" 已经存在,那么将修改它的值
      
      print(test_dict)
      dict1.update(dict2) 将dict2中不重复的元素添加到dict1中,如果存在,则将dict1中数值跟新进去
    • 删除
    test_dict = {"name": "zhang", "gender": "male", "age": 23}
    
    test_dict.clear()    #清空 test_claer
    
    test_dict.pop("name")  #删除 "name" 这一组数据;
    
    test_dict.popitem()   #随机删除一组数据。
    • 键、值、键值对
    • 循环
    test_dict = {"name": "zhang", "gender": "male", "age": 23}
    
    for k, v in test_dict.items():
    print(k,v)
    
    """输出结果为
    name zhang
    gender male
    age 23
    """
    • 长度
    test_dict = {"name": "zhang", "gender": "male", "age": 23}
    
    print(len(test_dict))
    
    ==> 3

    字符串简单应用

    test_String = " my name is bubblejia\n"
    
    print(test_String)         #正常打印字符串,包括前面的空格和后面的换行
    ==>  my name is bubblejia
    ==>
    print(test_String.strip()) #去掉开头和结尾的空格及换行
    ==>my name is bubblejia
    print(test_String.split()) #以空格(默认的)为分界,将字符串转为列表
    ==>['my', 'name', 'is', 'bubblejia']
    print(len(test_String))    #查看test_String长度
    ==>22
    print(test_String[:5])     #取test_String下标5之前的所有元素(不包含5)
    ==> my n
    print(test_String[5:])     #取test_String下标5之后的所有元素(包含5)
    ==>ame is bubblejia
    ==>
    print(test_String.index("n")) #从左往右,找到第一个 "n" 所在位置的下标
    ==>4

     

    copy简单应用

    import copy
    a = [1, 2, 3, 4, ['a', 'b']] #原始对象
    
    b = a #赋值,传对象的引用
    c = copy.copy(a) #对象拷贝,浅拷贝,只拷贝第一层。
    d = copy.deepcopy(a) #对象拷贝,深拷贝,拷贝所有层。

     ====================homework=====================

    #! /usr/bin/env python
    # -*- coding: utf-8 -*-
    # __author__ = "Always"
    # Date: 2017/6/8
    
    """
    四、购物车
    功能要求:
    
    要求用户输入总资产,例如:2000
    显示商品列表,让用户根据序号选择商品,加入购物车
    购买,如果商品总额大于总资产,提示账户余额不足,否则,购买成功。
    附加:可充值、某商品移除购物车
    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
    ]
    """
    
    # =========
    import time
    
    goods = [
    {"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998},
    ]
    
    shopping_list = []
    # shopping_list = [
    #    {'name':'电脑', 'price':1999, 'count':4}
    # ]
    
    """
    打印购物清单
    print('    M  E  N  U\n序号  名称  \t 价格')
    for i, info in enumerate(goods, 1):
    print("  %s  %s  \t¥%s"%(i, info['name'], info['price']))
    buy_number = input("请输入需要购买的商品序号:")
    """
    
    while True:
    salary = input("请输如你的工资:")
    if salary.isdigit():
    salary = int(salary)
    break
    
    while True:
    print('    M  E  N  U\n序号  名称  \t 价格')
    for i, info in enumerate(goods, 1):
    print("  %s  %s  \t¥%s" % (i, info['name'], info['price']))
    buy_number = input("请输入需要购买的商品序号:")
    if buy_number.isdigit() and int(buy_number) <= len(goods):
    # 如果输入的序号信息没有问题,那么就加入购物车
    append_flag = False
    buy_number = int(buy_number)
    goods_name = goods[buy_number - 1]['name']
    goods_price = goods[buy_number - 1]['price']
    for i_list, info_list in enumerate(shopping_list):
    if goods_name in info_list['name']:
    shopping_list[i_list]['count'] += 1
    append_flag = True
    break
    if not append_flag:
    shopping_list.append({'name':goods_name, 'price':goods_price, 'count':1})
    print("%s已经加入了你的购物车。。"%goods_name)
    time.sleep(1)
    else:
    print('那啥,东西不存在。。。')
    time.sleep(1)
    # print(shopping_list)
    # 这个地方就用来打印是否继续购买,以及结算什么的
    
    goahead_shopping = input("是否继续购买y/n:")
    if goahead_shopping == 'y':
    continue
    else:
    take_the_bill = input("是否结账y/n:")
    if take_the_bill == 'y':
    print('我要开始结账了')
    
    # shopping_list = [
    #     {'name': '电脑', 'price': 1999, 'count': 10}
    # ]
    
    while True:
    all_cost = 0
    print("   购物车列表\n 序号  名称\t 价格 \t 数量")
    for i, info_list in enumerate(shopping_list, 1):
    print("  %s   %s \t ¥%s \t  %s" % (i, info_list['name'], info_list['price'], info_list['count']))
    all_cost += info_list['price'] * info_list['count']
    print("合计:%s\n" % all_cost)
    input("回车键确定结账。。。")
    
    if salary >= all_cost:
    salary -= all_cost
    print("结算成功,共消费%s元,还剩余%s元。。。" % (all_cost, salary))
    exit()
    else:
    deposit = input("钱不够,是否充值y/n:")  # deposit  存款
    if deposit == "y":
    print('我要开始存钱了。。。')
    deposit_number = input('你要存多少钱呢:')
    if deposit_number.isdigit():
    salary += int(deposit_number)
    print('OK了,你现在一共有%s元。。。' % salary)
    time.sleep(1.2)
    elif deposit == 'q':
    break
    else:
    del_shopping_list = input('是否删除购物车的物品y/n:')
    if del_shopping_list == 'y':
    del_flag = True
    while del_flag:
    print('我要开始删除购物车的内容了。。。。')
    all_cost = 0
    for i, info_list in enumerate(shopping_list, 1):
    print("  %s   %s \t ¥%s \t  %s" % (
    i, info_list['name'], info_list['price'], info_list['count']))
    all_cost += info_list['price'] * info_list['count']
    print("合计:%s\n" % all_cost)
    del_choose = input('删除啥勒:')
    if del_choose.isdigit() and int(del_choose) <= len(shopping_list):
    del_choose = int(del_choose)
    if shopping_list[del_choose - 1]['count'] == 1:
    del_index = del_choose - 1
    shopping_list.pop(del_index)
    else:
    shopping_list[del_choose - 1]['count'] -= 1
    gohead_del = input('是否继续删除y/n:')
    if gohead_del != 'y':
    del_flag = False
    break
    elif del_shopping_list == 'q':
    exit('谢谢使用。。。')
    
    exit('谢谢使用。。。。')
    else:
    continue
    homework-04 

     

     

  • 内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: