zoukankan      html  css  js  c++  java
  • python-study-07

    上节课复习

    上节课复习:
    1、元组
    元组就相当于不可变的列表
    当我们要存放多个值,并且多个值是没有被修改的需求时,应该使用元组
    t=('name',) #t=tuple(('name'))

    总结:
    1、可以存放多个任意类型的值
    2、有序
    3、不可变类型
    2、字典
    用于存放多个值,但是每一个值都有一个对应的key,key对值有描述性的
    功能
    当存放的值属于不同的状态是(年龄、身高、性别、体重),用字典可以明确地
    区分不同值的用途
    d={'name':'egon','age':18} #d=dict(...)
    d=dict(a=1,b=2,c=3)

    v=d.pop('a')
    del d['a']

    d.keys()
    d.values()
    d.items()

    for k in d:
    print(k,d[k])

    for k in d.keys():
    print(k,d[k])

    for v in d.values():
    pass

    for k,v in d.items():
    pass

    d.get('a')

    今日内容:
    集合&关系运算
    文件处理

    字符编码

    只有文本文件才设计到字符编码

    视频 音频 图片等都和字符编码无关  有其自己的编码方式

    1 字符编码
    将人类的字符编码/转换成计算机能识别的数字
    这种转换必须遵循一套固定的标准,该标准无非是
    人类字符与数字的对应关系,称之为字符编码表

    A---->0000 0000
    B---->0000 0001
    c---->0000 0002
    d---->0000 0003

    bit:二进制位
    Bytes:字节

    ASCII码表:用1Bytes表示一个英文字符
    1英文字符=8bit=1Bytes

    GBK:用2Bytes表示一个中文字符,1Bytes去表示英文字符

    unicode:内存中使用的是unicode编码,unicode把全世界的字符都建立好对应关系
    用2Bytes去表示一个字符

    0000 0000 0000 0000

    utf-8 #unicode tranform format-8
    utf-8 用1Bytes表示英文,用3Bytes表示中文

    #字符编码需要记住的概念
    #01 内存中固定使用unicode编码,我们唯一可以改变的存储到硬盘时使用的编码
    #02 要想保证存取文件不乱码,应该保证文档当初是以什么编码格式存的,就应该以什么编码格式去读取

    #03 python3解释器默认编码是UTF-8 (所以文件如果是是gbk存储的 从硬盘加载到内存这一步就是错误的)
    python2解释器默认编码是ASCII

    在python2中有两种字符串编码格式
    1、unicode:
    x=u'上'
    2、unicode编码后的结果
    x='上' #如果文件头为coding:utf-8,那么"上"被存成utf-8格式的二进制

    在python3只有一种字符串编码格式:
    1、unicode
    x='上’

    #04 编码与解码 编码对应从内存到硬盘,解码对应从硬盘到内存
    unicode-------编码encode-------->gbk
    unicode<-------解码decode--------gbk

    #***
    #coding:gbk
    x='上’
    x.decode('gbk')

    #coding:gbk
    x=u'上'
    x.encode('gbk')
    x.encode('utf-8')

    #在python3中(*****)
    x='上'
    x只能进行编码
    x.encode('gbk')

    总结python2与python3:
    (***)
    在python2中的字符串类型str都是unicode按照文件头的指定的编码,编码之后的结果
    在python2中也可以制造unicode编码的字符串。需要在字符串前加u

    (*****)
    在python3中的字符串类型str都是unicode编码的
    所以python3中的字符串类型可以编码成其他字符编码格式,编码的结果
    是bytes类型

    集合

    http://www.cnblogs.com/linhaifeng/articles/7133357.html

    作业

    #作业一: 三级菜单
    #要求:
    打印省、市、县三级菜单
    可返回上一级
    可随时退出程序
    layer = [menu,]
    while True:
        if len(layer) == 0:break
        current_layer = layer[-1]
        for k in current_layer:
            print(k)
        choice = input('选择>>: ').strip()
        if choice == 'q':
            break
        if choice == 'b':
            layer.pop()
            continue
        if not current_layer[choice]:break
        layer.append(current_layer[choice])
    View Code
    #作业二:请闭眼写出购物车程序
    #需求:
    用户名和密码存放于文件中,格式为:egon|egon123
    启动程序后,先登录,登录成功则让用户输入工资,然后打印商品列表,失败则重新登录,超过三次则退出程序
    允许用户根据商品编号购买商品
    用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒
    可随时退出,退出时,打印已购买商品和余额
    product_list = [['Iphone7', 5800],
                    ['Coffee', 30],
                    ['疙瘩汤', 10],
                    ['Python Book', 99],
                    ['Bike', 199],
                    ['ViVo X9', 2499],
    
                    ]
    # 构建商品编号列表,用于判断用户的输入编号是否在此范围内
    product_number_list = []
    for i in range(len(product_list)):
        product_number_list.append(str(i))
    
    shopping_cart = []  # 创建空列表存放字典,购物车信息
    number = 1  # 商品数量初始化为1
    
    name_db = 'egon'
    pwd_db = 'egon123'
    count = 1
    while count <= 3:
        name_inp = input('username>>: ').strip()
        pwd_inp = input('password>>: ')
        if name_db == name_inp and pwd_db == pwd_inp:
            salary = input('your salary>>: ').strip()  # 1 工资如果是浮点型不判断 2 如果是整形可以加isdigit判断
            salary = int(salary)
            while True:
                for i in range(len(product_list)):
                    info = '商品编号:%s   product:%s   price:%s' % (i, product_list[i][0], product_list[i][1])
                    print(info.ljust(50, ' '))
                product_number = input('请输入商品编号>>: ').strip()
                if product_number not in product_number_list:
                    print('商品编号输入错误,请重新输入>>: ')
                else:
                    product_number = int(product_number)
                    product = product_list[product_number][0]
                    price = product_list[product_number][1]
                    if salary >= product_list[product_number][1]:
                        salary -= product_list[product_number][1]
                        for item in shopping_cart:
                            if item['product'] == product:
                                item['number'] += 1
                                item['salary'] = salary
                                break
                        else:
                            info = {'product': product, 'number': number, 'price': price, 'salary': salary}
                            shopping_cart.append(info)
                    else:
                        print('余额不足')
                    cmd = input('退出请输入Y/y,继续请按任意键: ').strip()
                    if cmd == 'Y' or cmd == 'y':
                        count = 4
                        print(shopping_cart)
                        break
        else:
            print('wrong username or password ')
            count += 1
    View Code

    预习:文件处理,函数

  • 相关阅读:
    Maven:Maven Wrapper
    ue4 shooterGame 第一步 搭建git linux服务器
    淌水 UE4的shootergame 案例 准备
    cesium+ geoserverTerrainProvide+png展示3D高程图展示
    geoserver使用curl发布 imagemosaic
    three.js 根据png生成heightmap
    github中cesium-terrain-builder和cesium-terrain-server使用
    geoServer 发布geoTiff格式的DEM数据
    NetCDF 入门
    java生成base64编码的png
  • 原文地址:https://www.cnblogs.com/xujinjin18/p/9122872.html
Copyright © 2011-2022 走看看