S5第一次月考

# Python五期月考一
# 1 介绍
# 满分100分,90分及格
#
# 考试范围:
# 1.Python语法
# 2.数据类型
# 3.流程控制
# 4.函数
# 5.模块
#
# 考试时间:
#     周五下午2.00点-5.30
# 2 基础题(60分)
# 1.执行python脚本的两种方式是?(1分)
# python a.py直接调用python脚本,第一行要有#!/usr/bin/env python
# ./a.py调用python 解释器来调用python脚本
# 2.python如何实现单行注释和多行注释(1分)
# 单行注释 #
# 多行注释''''''
# 3.在python3中bytes类型与unicode类型二者之间如何相互转换?(1分)
# bytes--->decode--->unicode
# unicode--->encode--->bytes
# 4.创建一个对象有三个特性:身份id,类型,值
# 等号比较的是什么?(1分)
#
# is比较的是什么?(1分)
# id
# 5.使用链式赋值的方式将10赋值给变量x、y、z(1分)
# x=y=z=10
# 6.有列表data=['alex',49,[1900,3,18]],分别取出列表中的名字,年龄,出生的年,月,日赋值给不同的变量(1分)
# data=['alex',49,[1900,3,18]]
# name=data[0]
# age=data[1]
# year=data[2][0]
# month=data[2][1]
# day=data[2][2]
# 7.所有数据类型自带布尔值,布尔值为假的有?(1分)
# 0 None {} [] () ''
# 8.常用数据类型有:字符串,列表,元组,字典,集合,请分类
# 按照存值个数分类?(1分)
# 一个值:数字 字符串
# 多个值:列表 字典 集合 元组
# 按照可变\不可变类型分类?(1分)
# 可变:列表 字典 集合
# 不可变:字符串 数字 元组
# 按照取值方式分类(直接取值,按索引,按key取)?(1分)
# 直接取值:数字
# 按索引: 字符串 列表 元组
# 按key:字典
# 按照有序\无序分类?(1分)
# 有序:字符串 列表 元组 数字
# 无序:字典 集合
# 9.阅读代码,请写出执行结果 (1分)
# a = "alex"
# b = a.capitalize()
# print(a)
# print(b)
# 执行结果是alex,Alex
# 10.阅读代码,请写出执行结果
# 代码一:(1分)
# if True or False and False:
#     print('yes')
# else:
#     print('no')
# and优先级比or更高,先计算 False and False,得到False,True or False得到True,输出的是yes
# 代码二:(1分)
# if (True or False) and False:
#     print('yes')
# else:
#     print('no')
#括号优先级比and更高,先计算括号里的True or False,得到True,True and False 得到False,输出no
# 11.写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
# name = " aleX"
# 1)移除 name 变量对应的值两边的空格,并输出处理结果
# print(name.strip())
# 2)判断 name 变量对应的值是否以 "al" 开头,并输出结果# print(name.startswith('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())
# 7)将 name 变量对应的值变小写,并输出结果# print(name.lower())
# 8)请输出 name 变量对应的值的第 2 个字符?
# print(name[1])
# 9)请输出 name 变量对应的值的前 3 个字符?
# print(name[:3])
# 10)请输出 name 变量对应的值的后 2 个字符?# print(name[-2:])
# 11)请输出 name 变量对应的值中 “e” 所在索引位置?# print(name.index('e'))
# 12)获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。
# print(name[:-1])
# 12.输出1-100内所有的奇数(1分)
# for i in range(1,101):
#     if i%2==1:
#         print(i)
# 13.使用while循环输出1 2 3 4 5 6     8 9 10(1分)
# n=0
# while n<10:
#     n+=1
#     if n==7:
#         continue
#     print(n)
# 14.求1-2+3-4+5 ... 99的所有数的和(1分)
# n=0
# s=0
# while n<99:
#     n+=1
#     if n%2==1:
#         s+=n
#     elif n%2==0:
#         s-=n
# print(s)
# 15.编写for循环,利用索引遍历出每一个字符(1分)
# msg='hello egon 666'
# for i in range(len(msg)):
#     print(msg[i])
# 16.编写while循环,利用索引遍历出每一个字符(1分)
# msg='hello egon 666'
# n=0
# while n<len(msg):
#     print(msg[n])
#     n+=1
# 17.有变量msg='/etc/a.txt|365|get'(1分)
# 将该变量中的文件名,文件大小,操作方法切割出来
# msg='/etc/a.txt|365|get'
# a=msg.split('|')
# b=a[0].split('/')
# print(b[2],a[1],a[2])
# 18.msg='hello alex'中的alex替换成SB(1分)
# msg='hello alex'
# print(msg.replace('alex','SB'))
# 19.编写while循环,让用户输入用户名和密码,如果用户为空或者数字,则重新输入(1分)
# while True:
#     user=input('user:')
#     pwd=input('passwd:')
#     if not user or user.isdigit():
#         continue
#     break
# 20.有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。(2分)
# 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
# a = [11,22,33,44,55,66,77,88,99]
# b = []
# c = []
# dict = {"k1":b,"k2":c}
# for i in a:
#     if i >66:
#         b.append(i)
#     if i <66:
#         c.append(i)
# print(dict)
# 21.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
# pythons={'alex','egon','yuanhao','wupeiqi','cobila','biubiu'}
# linuxs={'wupeiqi','oldboy','cobila'}
# 求出即报名python又报名linux课程的学员名字集合(2分)
# print(pythons&linuxs)
# 求出所有报名的学生名字集合(2分)
# print(pythons|linuxs)
# 求出只报名python课程的学员名字(2分)
# print(pythons-linuxs)
# 求出没有同时这两门课程的学员名字集合(2分)
# print(pythons^linuxs)
# 22.统计s='hello alex alex say hello sb sb'中每个单词的个数(3分)
# 结果如下:
# {'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
# s='hello alex alex say hello sb sb'
# l=s.split()
# s=set(l)
# dict={}
# for i in s:
#     dict[i]=l.count(i)
# print(dict)
# 第二种
# s='hello alex alex say hello sb sb'
# l=s.split()
# dic={}
# for key in l:
#     if key in dic:
#         dic[key]+=1
#     else:
#         dic[key]=1
# print(dic)

# 23.简述什么是可迭代对象与迭代器对象?(2分)
# 有__iter__的是可迭代对象
# 有__next__的是迭代器对象
# 判断下列数据类型是可迭代对象or迭代器(2分)
# s='hello'
# l=[1,2,3,4]
# t=(1,2,3)
# d={'a':1}
# set={1,2,3}
# f=open('a.txt')
#         分别用依赖索引和不依赖索引两种方式迭代上述对象(2分)
# from collections import Iterable
# from collections import Iterator
# s='hello'
# l=[1,2,3,4]
# t=(1,2,3)
# d={'a':1}
# set={1,2,3}
# f=open('a.txt')
# print(isinstance(s,Iterable))
# print(isinstance(l,Iterable))
# print(isinstance(t,Iterable))
# print(isinstance(d,Iterable))
# print(isinstance(set,Iterable))
# print(isinstance(f,Iterable))
#
# print(isinstance(s,Iterator))
# print(isinstance(l,Iterator))
# print(isinstance(t,Iterator))
# print(isinstance(d,Iterator))
# print(isinstance(set,Iterator))
# print(isinstance(f,Iterator))
# 都是可迭代对象,f是迭代器
# for i in range(len(s)):
#     print(s[i])
# for i in s:
#     print(i)
# for i in range(len(l)):
#     print(l[i])
# for i in l:
#     print(i)
# for i in range(len(t)):
#     print(t[i])
# for i in t:
#     print(i)
# for i in d:
#     print(i)
# for i in f:
#     print(i)
# 24.文件a.txt内容:每一行内容分别为商品名字,价钱,个数
# apple 10 3
# tesla 100000 1
# mac 3000 2
# lenovo 30000 3
# chicken 10 3
# 要求一:使用列表解析,从文件a.txt中取出每一行,做成下述格式(2分)
# [{‘name’:'apple','price':10,'count':3},{...},{...},...]
# with open('a.txt','w',encoding='utf-8')as f:
#     f.write('apple 10 3\ntesla 100000 1\nmac 3000 2\nlenovo 30000 3\nchicken 10 3')
# with open('a.txt',encoding='utf-8')as f:
#     l=[{'name':line.split()[0],'price':line.split()[1],'count':line.split()[2]} for line in f]
# print(l)
# 要求二:求出总共消费了多少钱(5分)
# res=sum(float(good['price']) * int(good['count']) for good in l)
# print(res)
# 25.写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果,如{‘num’:3,’str’:2,’space’:3,’others’:3}(5分)
# def func(n):
#     num1=0
#     num2=0
#     num3=0
#     num4=0
#     for i in n:
#         if i.isdigit():
#             num1+=1
#         elif i.isspace():
#             num2+=1
#         elif i.isalpha():
#             num3+=1
#         else:
#             num4+=1
#     print({'num':num1,'str':num2,'space':num3,'others':num4})
# func(input('请输入:'))
# 3 综合题(40分)
# 1.利用递归调用,取出[1,[2,3,[4,5,[6,7,[8,[9,10,[11,[12,[13,14,15]]]]]]]]]中所有的值(10分)
# l=[1,[2,3,[4,5,[6,7,[8,[9,10,[11,[12,[13,14,15]]]]]]]]]
# def foo(l):
#     for i in l:
#         if type(i)==list:#if isinstance(i,list):
#             foo(i)
#         else:
#             print(i)
# foo(l)
# 2.编写装饰器,为多个函数加上认证的功能(用户的账号密码来源于文件),要求登录成功一次,后续的函数都无需再输入用户名和密码(10分)
# 注意:从文件中读出字符串形式的字典,可以用json或pickle
# user_dic={
#     'z':'123',
#     'x':'456',
#     'y':'789',
# }
# with open('db.txt','w',encoding='utf-8') as f:
#     f.write(str(user_dic))
# with open('db.txt','r',encoding='utf-8') as f:
#     res=f.read()
#     user_dic=eval(res)
# db_path='db.txt'
# login_dic={
#     'user':None,
#     'status':False,
# }
# def auth(func):
#     def wrapper(*args,**kwargs):
#         if login_dic['user'] and login_dic['status']:
#             res = func(*args, **kwargs)
#             return res
#         name=input('your name: ')
#         password=input('your password: ')
#         with open(db_path,'r',encoding='utf-8') as f:
#             user_dic=eval(f.read())
#         if name in user_dic and password == user_dic[name]:
#                 print('login ok')
#                 login_dic['user']=name
#                 login_dic['status']=True
#                 res=func(*args,**kwargs)
#                 return res
#         else:
#             print('login err')
#     return wrapper
# @auth
# def index():
#     print('welecome to index')
# @auth
# def home(name):
#     print('welecome %s to home page' %name)
# index()
# home('z')
#标准答案
# import json
# db_path=r'E:\Pycharmlx\基础,函数,装饰器,模块,包\homework\r.txt'
#
# login_dic={
#     'user':None,
#     'status':False
# }
# def auth(func):
#     def wrapper(*args,**kwargs):
#         if login_dic['user'] and login_dic['status']:
#             res = func(*args,**kwargs)
#             return res
#         name=input('your name:')
#         pwd=input('your pwd:')
#         with open(db_path,'r',encoding='utf8') as f:
#             user_dic=json.loads(f.read())
#             if name in user_dic and pwd == user_dic[name]:
#                 print('login ok')
#                 login_dic['user']=name
#                 login_dic['status']=True
#                 res=func(*args,**kwargs)
#                 return res
#             else:
#                 print('login error')
#     return wrapper
# @auth
# def index():
#     print('welcome to index page')
#
# @auth
# def home():
#     print('welcome to home page')
# index()
# home()
# 3.编写函数实现每次执行函数都得到一个唯一的哈希值(可以使用time.clock()作为哈希的依据,来保证每次哈希得到的值都不一样) (10分)
# import time,hashlib
# def func():
#     md5=hashlib.md5()
#     t=str(time.clock()).encode('utf8')
#     md5.update(t)
#     return md5.hexdigest()
# 4.一个文件夹中,存在多个文件,包括图片,视频,文本等等,遍历出时间在2017-06-05至2017-06-09这段时间内创建的所有文件
# 具体文件夹,自己创建。(10分)
# import os
# import time
# start=time.mktime(time.strptime('2017-06-05','%Y-%m-%d'))
# stop=time.mktime(time.strptime('2017-06-09','%Y-%m-%d'))
# g=os.walk(r'D:\py3.6保存代码\py_fullstack_s5\作业')
# for far_dir,sub_dir,files in g:
#     for file in files:
#         b=r'%s\%s'%(far_dir,file)#文件与路径的拼接
#         f=os.stat(b).st_ctime
#         if f >= start and f <= stop:
#             print(b)
#标准
# import time
# import os
# def file_time():
#     start=time.mktime(time.strptime('2017-06-20','%Y-%m-%d'))
#     stop=time.mktime(time.strptime('2017-06-26','%Y-%m-%d'))
#     g=os.walk(r'D:\mypython\demo2')
#     for dir,_,files in g:
#         for file in files:
#             file_path=os.path.join(dir,file)
#             file_stamp=os.path.getctime(file_path)
#             if start< file_stamp <stop:
#                 ret = time.strftime('%Y-%m-%d', time.localtime(file_stamp))
#                 ret2 = os.path.join(dir, file, ret)
#                 print(ret2)
# file_time()

 

转载于:https://www.cnblogs.com/z-x-y/p/7213937.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值