zoukankan      html  css  js  c++  java
  • Python基础之元组和字典

    一、元组:

      1、定义:

      

        内存图:

        

      2、基本操作

        

      3、元组作用:

      

      4、元组基础知识代码

      

    # 1. 创建空元组
    t01 = ()
    t02 = tuple()
    
    # 2. 创建具有默认值的元组
    t01 = (1,2,3)
    t01 = tuple("abcd")
    t01 = (1,2,[4,5])
    print(t01)
    
    # 修改
    # t01[2] = 100  元组元素不能修改,报错
    t01[2][0] = 100 # 修改的是元素第三个元素(列表)的元素.
    
    # 3. 获取元素(索引 / 切片)
    print(t01[:2])
    
    # 获取元组所有元素
    for item in t01:
        print(item)
    
    # 倒序获取元组所有元素
    for i in range(len(t01)-1, -1,-1):
        print(t01[i])
    
    
    t02 = ("a","b")
    l02 = ["a","b"]
    
    t03 = t02
    l03 = l02
    
    t02 += ("c","d") # 创建了新元组对象,改变了t02存储的地址.
    l02 += ["c","d"] # 将["c","d"]追加到原列表中.
    
    print(t02) # ('a', 'b', 'c', 'd')
    print(t03) # ('a', 'b')
    print(l03) # ['a', 'b', 'c', 'd']
    
    
    # 如果元组只有一个元素,必须多写一个逗号,否则视为普通对象,不是元组对象.
    t04 = (1,)
    print(t04)

      5、实例:

        (1)根据月份,计算天数

        

    # month = int(input("请输入月份:"))
    # if month < 1 or month > 12:
    #     print("输入有误")
    # elif month == 2:
    #     print("28天")
    # # elif month == 4 or month == 6 or month == 9 or month == 11:
    # elif month in (4,6,9,11):
    #     print("30天")
    # else:
    #     print("31天")
    
    month = int(input("请输入月份:"))
    if month < 1 or month > 12:
        print("输入有误")
    else:
        # 将每月的天数,存入元组.
        day_of_month = (31,28,31,30,31,30,31,31,30,31,30,31)
        print(day_of_month[month - 1])

        (2)在控制台中输入月,日,计算这是一年的第几天。例如输入3月5日,计算天数为?

        

    #方法一
    # month = int(input("请输入月份:"))
    # day = int(input("请输入天:"))
    # day_of_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    # result = 0
    # # 累加前几个月
    # for i in range(month - 1):
    #     result += day_of_month[i]
    # # 累加当月
    # result += day
    # print(result)
    
    
    #方法二
    month = int(input("请输入月份:"))
    day = int(input("请输入天:"))
    day_of_month = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
    # 累加前几个月
    result = sum(day_of_month[:month - 1])
    # 累加当月
    result += day
    print(result)

    二、字典:

      1、定义

        

          内存图:

          

      2、基本操作:

        

      3、字典推导式

        

      4、字典VS列表

        

      5、字典基础代码

        

    # 创建空字典
    d01 = {}
    d02 = dict()
    
    d01 = {"a":"A","b":"B"}
    # d01 = dict("ab") # 分不清key  value
    d01 = dict([(1,2),(3,4)]) # {1: 2, 3: 4}
    
    
    # 第一次增加
    d01["c"] = "C"
    # 第二次修改
    d01["c"] = "CC"
    
    # 读取元素(如果不存在则异常)
    # 建议:在字典中读取元素,先判断存在,在进行读取.
    if "d" in d01:
        print(d01["d"])
    
    print(d01)
    # 删除
    del d01["c"]
    print(d01)
    
    # 获取字典中所有元素:
    for key in d01:
        print(key)
        print(d01[key])
    
    # 获取字典中所有记录(元组)
    for item in d01.items():
        print(item[0]) # key
        print(item[1]) # value
    
    for k,v in d01.items():
        print(k) # key
        print(v) # value
    
    # 获取所有键
    for k in d01.keys():
        print(k)
    
    # 获取所有值
    for v in d01.values():
        print(v)

      6、实例:

        (1)在控制台中录入一个字符串,打印这个字符串中的字符以及各字符出现的次数

          

    str_input = input("请输入一个字符串:")
    # key: 字符   value:次数
    result = {}
    # (1)逐一判断字符,出现的次数.
    for item in str_input:
        # (2)如果没有统计过该字符串
        if item not in result:
            result[item] = 1
        else:
            # (3)否则,次数增加
            # result[item] = result[item] + 1
            result[item] += 1
    
    print(result)

        (2)给定一个列表["张三丰","无忌","赵敏"] ,以字典的形式输出键为列表元素,值为列表元素长度,形如:{"张三丰":3,"无忌":2,"赵敏",2}

          

    #方法一
    list01 = ["张三丰", "无忌", "赵敏"]
    dict01 = {}
    for item in list01:
        dict01[item] = len(item)
    
    
    #方法二
    dic02 = {item: len(item) for item in list01}
    print(dic02)

        (3)# 练习:
           ["张三丰", "无忌", "赵敏"]
           [101, 102, 103]
            (1) 根据两个列表形成一个字典:key姓名,value房间号
            (2) 将字典的键与值进行翻转.即:key房间号,value姓名

            

    list01 = ["张三丰", "无忌", "赵敏"]
    list02 = [101, 102, 102]
    # 循环方式
    # dict01 = {}
    # for i in range(len(list01)):
    #     dict01[list01[i]] = list02[i]
    
    # 字典推导式
    dic02 = {list01[i]: list02[i] for i in range(len(list01))}
    print(dic02)
    
    
    # 循环方式(值不重复)
    # dic03 = {}
    # for key,value in dic02.items():
    #     dic03[value] = key
    
    # 字典推导式(值重复)
    # {101: '张三丰', 102: '赵敏'}   张无忌与赵敏同居,导致key重复,无忌被覆盖.
    dic03 = {value: key for key, value in dic02.items()}
    print(dic03)
    
    #[(102, '无忌'), (101, '张三丰'), (102, '赵敏')],即值重复时,用列表推导式
    list03 = [(value,key) for key, value in dic02.items()]
    print(list03)

         (4)练习4:在控制台中录入5个学生信息(姓名/年龄/性别)

          

    # 4. 在控制台中录入5个学生信息(姓名/年龄/性别)
    # 数据结构:列表中嵌套字典
    # [
    #     {
    #         "name":xx,
    #         "age":xx,
    #         "sex":xx,
    #     },
    #     {
    #         "name":xx,
    #         "age":xx,
    #         "sex":xx,
    #     }
    #     .......
    # ]
    
    list_student_info = []
    for i in range(2):
        # 每次循环创建一个新字典表示一个新学生
        dict_student = {}
        dict_student["name"] = input("请输入姓名:")
        dict_student["age"] = int(input("请输入年龄:"))
        dict_student["sex"] = input("请输入性别:")
        # 向学生列表追加学生信息
        list_student_info.append(dict_student)
    
    
    # 获取所有学生信息
    for dict_stu in list_student_info:
        for key,value in dict_stu.items():
            print("%s -- %s"%(key,value))

        (5)练习5:猜拳,规则:系统随机出拳,在控制台中循环猜测.

        

    """
     猜拳
      规则:系统随机出拳,在控制台中循环猜测.
      提示:(1)将胜利的策略存入容器
                  (
                      ("石头","剪刀"),
                      ("剪刀","布"),
                      ("布","石头")
                  )
           (2) 将用户猜的拳与系统出拳形成一个元组
    """
    
    import random
    
    
    # 胜利策略
    wins = (
        ("石头", "剪刀"),
        ("剪刀", ""),
        ("", "石头")
    )
    # 将用户猜的拳与系统出拳形成一个元组
    user_input_index = int(input("请输入整数(0表示石头,1表示剪刀,2表示布):"))
    items = ("石头","剪刀","")
    user_input_item = items[user_input_index]
    
    sys_input_index = random.randint(0,2)
    sys_input_item = items[sys_input_index]
    
    # 逻辑处理
    if user_input_item == sys_input_item:
        print("平局")
    elif (user_input_item,sys_input_item) in wins:
        print("赢啦")
    else:
        print("输啦")
  • 相关阅读:
    移动端input中的placeholder属性垂直
    js将文字转化为语音并播放
    js生成二维码
    jquery移除事件,绑定事件,触发事件
    js计算本地时间
    正则判断支付金额
    去除input默认带的上下按钮与修改placeholder的默认颜色、背景、placeholder内容的大小
    rem自适应手机端布局
    Python_PyQt5_库
    Python_用PyQt5 建 notepad 界面
  • 原文地址:https://www.cnblogs.com/yuxiangyang/p/10672632.html
Copyright © 2011-2022 走看看