zoukankan      html  css  js  c++  java
  • 数据类型考试

     

    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('非法操作')

     

  • 相关阅读:
    UVa 1451 Average (斜率优化)
    POJ 1160 Post Office (四边形不等式优化DP)
    HDU 3507 Print Article (斜率DP)
    LightOJ 1427 Substring Frequency (II) (AC自动机)
    UVa 10245 The Closest Pair Problem (分治)
    POJ 1741 Tree (树分治)
    HDU 3487 Play with Chain (Splay)
    POJ 2828 Buy Tickets (线段树)
    HDU 3723 Delta Wave (高精度+calelan数)
    UVa 1625 Color Length (DP)
  • 原文地址:https://www.cnblogs.com/maojiang/p/8688963.html
Copyright © 2011-2022 走看看