• 数据类型考试


     

    1 介绍

    满分120分,90分及格

     

    考试范围:

    1. Python语法
    2. 数据类型
    3. 流程控制
    4. 文件处理

     

    考试时间:

        周三下午2.00点-晚6:30

    2 基础题(50分)

    1. 请说明python解释器与python语言的区别或联系(1分)

    Python语言就是一个编程语言,是人与机器沟通的桥梁

    Python解释器解释把人类的语言翻译成机器能听懂的语言,让机器代替人力

    1. 执行python脚本的两种方式是?(1分)

    交互  。脚本运行

    1. python如何实现单行注释和多行注释(1分)

    单行用#  多行用’’’ ‘’’

    1. 定义一个变量有三个特性,分别为?(1分)

    Id    type   value

    等号比较的是什么?(1分)

    is比较的是什么?(1分)

    id

    1. 使用链式赋值的方式将10赋值给变量x、y、z(1分)

    X=y=z=10

    1. count=10,使用增量赋值,将count的值增加111(1分)

    count+=111

    1. 使用一行代码将info=[‘egon’,18,’male’]将列表中用户的名字,年龄,性别分别赋值给变量name,age,gender(1分)

    Name=info[0],age=info[1],gender=info[2]

     

    1. 编写猜年龄程序(2分)

    a)     要求用户输入年龄,然后与程序后台存放的年龄进行比较,然后打印不同的提示信息,提示用户猜大了or猜....

    b)     要求最多才三次则退出程序

    Age=18

    Count=0

    While ount<3:

    Inp_name=input(‘输入年龄:’)

    If inp_name==age:

    Print(‘猜对了’)

    Count+=1

    Break

    Else:

    Print('超过三次,重新输入’)

     

     

     

     

    1. 简述数据类型int,str,list,tuple,dict,set的应用场景(1分)

    整型int

    用来表示:等级,年龄,身份证号,学号,id号

    字符串str:包含在引号(单引号,双引号,三引号)内的一串字符

     用来表示:名字,家庭住址,描述性的数据

    列表:定义在[]中括号内,用逗号分隔开多个值,值可以是任意类型

    用来存放多个值:多个爱好,多个人名

    元组按索引取值(正向取+反向取):只能取

    字典:定义{}内用逗号分隔开,每一个元素都是key:value的形式,其中value可以是任意类型,而key一定要是不可变类型

    集合:定义方式:在{}内用逗号分隔开一个个元素

    注意的问题

    集合内没有重复的元素

    集合的元素必须是不可变类型

    1. 有列表data=[‘alex’,49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量(1分)

    Name=data【0】,age=data【1】,

    1. 有如下列表,请取出第三个学生的第1个爱好(1分)

    students=[

        {'name':'alex','age':38,'hobbies':['play','sleep']},

        {'name':'egon','age':18,'hobbies':['read','sleep']},

        {'name':'wupeiqi','age':58,'hobbies':['music','read','sleep']},

    ]  student【2】【3】【0】

    1. 有列表 students_info=[[‘egon’,18,[‘play',]],['alex',18,['play','sleep']]],请取出第二个学生的第二个爱好(1分)
    2. 所有数据类型自带布尔值,布尔值为假的有?(1分)

    空  0    None

    1. 请判断下述代码的结果为?(1分)

                   print(10 > 3 and 'alex' != 'sb' or 'abc' > 'd')   真

    print(10 > 3 and 'alex' == 'sb' or 'abc' < 'd')   假

    print(10 > 3 or 'alex' < 'sb' or 'abc' < 'd' and 'egon' == ‘nb') 真

    1. 阅读代码,请写出执行结果

    代码一:(1分)

    if True or False and False:

        print('yes')

    else:

        print('no')    真

    代码二:(1分)

    if (True or False) and False:

        print('yes')

    else:

        print('no')  假

    16. 请使用while和for两种方式来循环所有可循环的数据类型(while:1分,for:1分),比如

               编写for循环,利用索引遍历出每一个字符

    msg='hello egon 666’

    for  item in mag:

    print(‘mag’)

     

    编写while循环,利用索引遍历出每一个字符

    msg='hello egon 666’

    while True

    print(msg【0:13】)

    1. 编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入(1分)

    While  Ture:

    Name=input(‘输入用户名:’)

    Pwd=input(‘输入密码:’)

    If not name.isdbhr():

    Continu

    18. 输出1-100内所有的奇数(1分)

    Count=1

    while count<101:

    if count%2=0

    print(‘count’)

    count+=1

     

    1. 使用while循环输出1 2 3 4 5 6     8 9 10(1分)

     

    Count+=1

    While count<=10:

    If  count!=7:

    Print(‘count’)

    1. 求1-2+3-4+5 ... 99的所有数的和(1分)

    Res=0

    Count=1

    While count<=5:

    If count%2==0:

    Res-=count

    Else

    Res+=count

    Print(res)

    21. 请说明break与continue的区别(1分)

    Break  跳过本次循环

    Continu  跳过本层循环

    1. 常用数据类型有:字符串,列表,元组,字典,集合,请分类

    按照存值个数分类?(1分)

    标量:数字,字典

    容器:列表,元组,字典

     

    按照可变不可变类型分类?(1分)

     

    可以变: 列表   字典

    不可以变:数字,字符串 元组

    按照取值方式分类(直接取值,按索引,按key取)?(1分)

    顺序  字符串,列表元组,字典   key:字典

    直接:数字

    按照有序无序分类?(1分)

    有:元组,列表   无:字典,集合

    1. 阅读代码,请写出执行结果 (1分)

    a = "alex"

    b = a.upper()

    print(a)
    alex

    print(b)

    ALEX

    1. 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)

      name = " aleX"

    1) 移除 name 变量对应的值两边的空格,并输出处理结果

    Print(name.strip())

    2) 判断 name 变量对应的值是否以 "al" 开头,并输出结果
    print(name.startawith(al))

    3) 判断 name 变量对应的值是否以 "X" 结尾,并输出结果
    print(name.endswith(x))

    4) 将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果

    Print(name.replace(‘l’,’p’))

    5) 将 name 变量对应的值根据 “l” 分割,并输出结果。

    Print(name.split(‘l’)

    6) 将 name 变量对应的值变大写,并输出结果
    print(name.upper(alex))

    7) 将 name 变量对应的值变小写,并输出结果
    print(name.lower())

    8) 请输出 name 变量对应的值的第 2 个字符?

    Print(name[1])

    9) 请输出 name 变量对应的值的前 3 个字符?

    Print(name[:3])

    10)     请输出 name 变量对应的值的后 2 个字符?
    print(name[-2:1])

    11)     请输出 name 变量对应的值中 “e” 所在索引位置?
    print(name.index(‘e’))

    12)     获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。

    Print(name[:-1])

    1. 有变量msg='/etc/a.txt|365|get'(1分)

    将该变量中的文件名,文件大小,操作方法切割出来

    Print(msg.split(‘/’).split(‘|’))

     

    1. msg='hello alex'中的alex替换成SB(1分)

    print(msg.replace(‘alex’,’sb’))

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

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

    A={‘k1’:[],’k2’:[]}

    C=[11,22,33,44,55,66,77,88,99,90]

    For  I  in c:

    If i>66:

    A[‘k1’].append(i)

    Else:

    A[‘k2’].append(i)     print(a)

    1. 有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合

    pythons={‘alex’,’egon’,’yuanhao’,’wupeiqi’,’cobila’,’biubiu’}

    linuxs={‘wupeiqi’,’oldboy’,’cobila’}

    求出即报名python又报名linux课程的学员名字集合(1分)

    Print(python & linux)

    求出所有报名的学生名字集合(1分)

    Print(python |  linux)

    求出只报名python课程的学员名字(1分)

    Print(pythons - linuxs)

    求出没有同时这两门课程的学员名字集合(2分)

    Print(python ^  linuxs)

    29. 什么是字符编码,如何避免乱码问题?(1分)

    字符——翻译——数字,,用什么方式存就用什么方式取

    30. unicode转成utf-8的过程称为encode还是decode(1分)

    encode

    1. 在python3中bytes类型与unicode类型二者之间如何相互转换?(1分)

    encode('gbk') 的结果xc9xcf正是python2中的str类型的值,而在python3是bytes类型,在python2中则是str类型

    1. 使用with语法以文本的方式打开一个文件,并读出文件所有内容(1分)该内容的数据类型是?(1分)

    字符串

    1. 以b的方式打开文件,覆盖写入新内容’你好啊wxx’(1分)

    With open(‘b.txt’,‘rb’)as f:

    Data=f.read():

    Data=data..replace(‘b’,’你好啊’)

    With open(‘b.txt’,’wb’)as f:

    f.write(data)

    3 综合题(70分)

    1. 编写登陆接口

    基础需求:(4分)

    •   让用户输入用户名密码

    •   认证成功后显示欢迎信息

    •   输错三次后退出程序

     

     

     

     

     

    dic={
        'egon':{'password':'123','count':0},
        'egon1':{'password':'123','count':0},
        'egon2':{'password':'123','count':0},
    }
    while True:
        name=input('用户名:')
        if not name in dic:
            print('用户名不存在')
            continue
        if
    dic[name]['count']>2:
            print('次数过多,锁定')
            continue
       
    pwd=input('输入密码:')
        if pwd==dic[name]['password']:
            print('登录成功')
            break
        else
    :
            print('用户名或者密码错误')
            dic[name]['count']+=1

     

     

    升级需求:(6分)

    可以支持多个用户登录 (提示,通过列表存多个账户信息)

    用户3次认证失败后,退出程序,再次启动程序尝试登录时,还是锁定状态(提示:需把用户锁定的状态存到文件里)

     

    dic={
        'egon':{'password':'123','count':0},
        'egon1':{'password':'123','count':0},
        'egon2':{'password':'123','count':0},
    }

    count=0
    while True:
            name=input('输入用户名:').strip()
            if name not in dic:
                print('用户名不存在')
                continue

            with
    open('b.txt',mode='r')as f:
                lock_users=f.read().strip('|')
                if name in lock_users:
                    print('用户%s已经被锁定' %name)
                    break
            if
    dic[name]['count']>2:
                print('次数过多,锁定')
            with open('b.txt',mode='w')as f:
                f.write('%s|' %name)
                break

           
    pwd=input('输入密码:')
            if pwd ==dic[name]['password']:
                print('登录成功')
                break

            else
    :

                print('用户名或者密码错误')
                dic[name]['count']+=1

     

    1. 利编写拷贝文件的程序,要求(10分)

    a)     可以拷贝任意类型的文件

    3.   import sys
    l=sys.argv
    sre_of_path=l[1]
    dst_of_path=l[2]
    with open(r'%s' %sre_of_path,mode='rb')as read_f,
        open(r'%s' %dst_of_path,mode='wb')as write_f:
        for line in read_f:
            write_f.write(line)
       

     

    a)     在命令行中执行,命令的格式为:python3 copy.py src_file dst_file

    1. 请用两种方式实现,将文件中的alex全部替换成SB的操作(20分)
    4.   with open('db.txx',mode='r',encoding='utf-8')as f:
        data=f.read()
        data=data.replace('alex','sb')
    with open('db.txt.swap',mode='w',encoding='utf-8')as f:
        f.write(data)
       
    import os
    with open('db.txt',mode='r',encoding='uft-8')as read_f,
        open('db.txt..sawp',mode='w',encoding='utf-8')as write_f:
        for line in read_f:
            if 'alex'in line:
                line=line.replace('alex','sb')
                write_f.write(line)
    os.remove('db.txt')
    os.rename('db.txt.sawp','db.txt')

     

    1. 编写购物车程序,实现注册,登陆,购物,查看功能,数据基于文件存取(30分)

     

     

    import os

    product_list = [['Iphone7',5800],
                    ['Coffee',30],
                    ['疙瘩汤',10],
                    ['Python Book',99],
                    ['Bike',199],
                    ['ViVo X9',2499],

                    ]

    shopping_cart={}
    current_userinfo=[]
    db_file=r'db.txt'
    while True:
        print('''
       
    登录
        注册
        购物
        '''
    )
        choice=input('输入编号:')
        if choice=='1':
            tag=True
           
    count=0
            while tag:
                if count==3:
                    print('次数过多,退出')
                    break
               
    uname=input('输入用户名:')
                pwd=input('输入密码:')
                with open(db_file,mode='r',encoding='utf-8')as f:
                    for line in f:
                        line=line.strip(' ')
                        user_info=line.strip(',')

                        uname_of_db=user_info[0]
                        pwd_of_db=user_info[1]
                        balance_of_db=int[user_info[2]]
                        if uname==uname_of_db and pwd==pwd_of_db:
                            print('登录成功')
                        current_userinfo=[uname_of_db,balance_of_db]
                        print('用户学习:',current_userinfo)
                        tag=False
                        break
                    else
    :
                        print('用户名或者密码错误')
                        count+=1

        elif choice=='2':
            uname=input('输入用户名:')
            while True:
                pwd1=input('输入密码:')
                pwd2=input('在次输入密码:')
                if pwd2==pwd1:
                    break
                else
    :
                    print('两次密码不一样')

            balance=input('输入余额')
            with open(db_file,mode='w',encoding='utf-8')as f:
                f.write('%s,%s,%s ' %(uname,pwd1,balance))
        elif choice =='3':
            if len(current_userinfo)==0:
                print('请先登录')
            else:
                uname_of_db=current_userinfo[0]
                balance_of_db=current_userinfo[1]
                print('尊敬的用户[%s] 你的余额[%s],祝你购物愉快' %(uname_of_db,balance_of_db))
                tag = True
                while
    tag:
                    for index, product in enumerate(product_list):
                        print(index, product)
                    choice = input('输入商品编号购物,输入q退出>>: ').strip()
                    if choice.isdigit():
                        choice = int(choice)
                        if choice < 0 or choice >= len(product_list): continue

                       
    pname = product_list[choice][0]
                        pprice = product_list[choice][1]
                        if balance_of_db > pprice:
                            if pname in shopping_cart:  # 原来已经购买过
                               
    shopping_cart[pname]['count'] += 1
                            else:
                                shopping_cart[pname] = {'pprice': pprice, 'count': 1}

                            balance_of_db -= pprice  # 扣钱
                           
    current_userinfo[1] = balance_of_db  # 更新用户余额
                           
    print(
                                "Added product " + pname + " into shopping cart,33[42;1myour current33[0m balance " + str(
                                    balance_of_db))

                        else:
                            print("买不起,穷逼! 产品价格是{price},你还差{lack_price}".format(
                                price=pprice,
                                lack_price=(pprice - balance_of_db)
                            ))
                        print(shopping_cart)
                    elif choice == 'q':
                        print("""
                                    ---------------------------------
    已购买商品列表---------------------------------
                                    id          商品                   数量             单价               总价
                                    """
    )

                        total_cost = 0
                        for i, key in enumerate(shopping_cart):
                            print('%22s%18s%18s%18s%18s' % (
                                i,
                                key,
                                shopping_cart[key]['count'],
                                shopping_cart[key]['pprice'],
                                shopping_cart[key]['pprice'] * shopping_cart[key]['count']
                            ))
                            total_cost += shopping_cart[key]['pprice'] * shopping_cart[key]['count']

                        print("""
                                   
    您的总花费为: %s
                                    您的余额为: %s
                                    ---------------------------------end---------------------------------
                                    """
    % (total_cost, balance_of_db))

                        while tag:
                            inp = input('确认购买: ').strip()
                            if inp not in ['Y', 'N', 'y', 'n', 'yes', 'no']: continue
                            if
    inp in ['Y', 'y', 'yes']:
                                # 将余额写入文件

                               
    src_file = db_file
                                dst_file = r'%s.swap' % db_file
                                with open(src_file, 'r', encoding='utf-8') as read_f,
                                        open(dst_file, 'w', encoding='utf-8') as write_f:
                                    for line in read_f:
                                        if line.startswith(uname_of_db):
                                            l = line.strip(' ').split(',')
                                            l[-1] = str(balance_of_db)
                                            line = ','.join(l) + ' '

                                       
    write_f.write(line)
                                os.remove(src_file)
                                os.rename(dst_file, src_file)

                                print('购买成功,请耐心等待发货')

                            shopping_cart = {}
                            current_userinfo = []
                            tag = False


                    else
    :
                        print('输入非法')

        else:
            print('非法操作')

     

  • 相关阅读:
    linux shell 获取文件夹全文绝对路径
    Selenium自动化获取WebSocket信息
    Automatically generating nice graphs at end of your Load Test with Apache JMeter and JMeter-Plugins
    卡夫卡与风暴:卡夫卡和风暴的明智比较
    Apache Kafka安全| Kafka的需求和组成部分
    Kafka Schema Registry | 学习Avro Schema
    QT 内部使用函数列表
    QT图标添加
    QT快捷键
    QT软件上架以及自启动
  • 原文地址:https://www.cnblogs.com/maojiang/p/8688963.html
Copyright © 2020-2023  润新知