python学习笔记11 第1次测试考题答案及知识点

10题
l1=[1,2,3,4,5,6,7,8,9,0]
print(l1[1:4])
l1[1:4]='abcd'
print(l1)

输出结果,赋值时并没有出现顾头不顾尾的情况?

[2, 3, 4]
[1, 'a', 'b', 'c', 'd', 5, 6, 7, 8, 9, 0]

一.判断题

正确说法

1 字典的键是唯一的 

2 字典通过pop删除键值对

3 给一个列表extend('ab3'),实际上是添加了a,b,3三个字符串

4 for循环汇总可以使用continue

5 a = ('alex') a为字符串类型

(a=('alex',)) 则a类型为元组)

6 l1=[1,2,3] l2 = l1 l1.append(666) print(12)结果为[1,2,3,      666]  

(

直接赋值:其实就是对象的引用(别名)。

2、传递规则

Python 赋值过程中不明确区分拷贝和引用,一般对静态变量的传递为拷贝,对动态变量的传递为引用。(注,对静态变量首次传递时也是引用,当需要修改静态变量时,因为静态变量不能改变,所以需要生成一个新的空间存储数据)。

  • 字符串,数值,元组均为静态变量
  • 列表,字典为动态变量。

https://www.runoob.com/w3cnote/python-variable-references-and-copies.html

)

7 l1 = [22,33,44] l2 =l1[:] l1与l2的关系为浅copy 

(copy() 函数用于复制列表,类似于 a[:])

8 len可以计算字典中键值对的个数

(Python 字典(Dictionary) len() 函数计算字典元素个数,即键的总数。)

9 python 中的名称空间分为:内置名称空间,全局名称空间,局部名称空间

10 在函数中如果想改变一个全局变量,可以通过global实现

 

错误说法

1 集合里面的元素必须是可变的数据类型

(必须是不可变的)

2 [存疑] 元组为只读列表,只能进行增和查

(1 元组中的元素值是不允许修改的,但我们可以对元组进行连接组合, 2 元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组)

3 在python3版本中,字典中的keys()方式是将字典的所有键都存放至一个列表中

(他像一个列表,但不是列表,[Python3 字典 keys() 方法返回一个可迭代对象,可以使用 list() 来转换为列表。

注意:Python2.x 是直接返回列表])

4 s1='alex@' s2='alex@', s1 与 s2 公用一个内存地址.

(在cmd中运行可知不是,因为含有特殊字符@,不会被列入小数据池中)

5 集合是无序的不重复的,里面的元素要求是不可哈希的

(里面的元素要求是可哈希的,不可变的, 集合(set)是一个无序的不重复元素序列。)

6 is比较的仅仅是数值是否相同

(is比较的是内存地址, == 比较的是数值)

7 在循环一个字典时给字典添加一个键值对会报错

(在循环字典时不能改变他的大小,添加键值对等于修改了字典大小)

8 idc= { }  dic.fromkeys('abc',666) 最终dic为{'a':666,'b':666,'c':666}.

(Python 字典 fromkeys() 函数用于创建一个新字典,以序列 seq 中元素做字典的键,value 为字典所有键对应的初始值。但想使用此新字典需要将返回值赋给对应的变量,这个方法本身不会对dic产生影响)

9 在文件操作中,r+模式只能读写,不能写读.

(r+ 可以先写后读,也能先读后写)

10 函数的默认返回值是: False

(函数的默认返回值是None)

 

二 填空题

 

2 获取list的元素个数和向末尾追加元素所用的方法是len() 和 append()

6 删除字典的键值对两种方式_pop()_,_popitems()_, del

7 列举:字符串,元组,字典,数字,其对应bool值为False的值为_""_    _(,)_    _tuple()_   _{}_   _0_

 

三简答题

1 is和==的区别

is比较的是内存地址,==比较的是数值

2 函数中*args  **kwargs 是什么意思

*args 是位置参数的动态参数

**kwargs 是关键字的动态参数

3 list 和tuple 有什么不同

list可以修改,tuple不能修改

4 解释一下, 位, 字节, 字符.

位: 计算机最底层最小的数据单位, 一个0或者1

字节: 1字节=8位,由ASCII码来的

字符: 能被看到的一个单一的文字符号

5 python中什么数据类型存在小数据池?小数据池有什么作用?

int 和  适用对象: int(float),str,bool 

作用是节省内存,快速处理对应数据

6 在python3x八本中,s1='老男孩',如何将s1转化成utf-8的bytes类型?转化成功之后,得到了s2,如何将s2转化成gbk的bytes类型(请写出具体代码)?

用编码 encode 进行转化 s1.encode(encoding='utf-8')

[存疑] s2转化成gbk,先解码为unicode,再编码为gbk  s2.decode('unicode').encode('gbk')

手动转码规则

        UTF-8 --> decode 解码 --> Unicode

        Unicode --> encode 编码 --> GBK / UTF-8 等

7 将列表去重

直接使用set( ) 的去重特性即可

8 '1,2,3' 如何变成['1','2','3']?

s1 = '1,2,3'
print(s1.split(','))

['1','2','3']如何变成[1,2,3]?

s1 = '1,2,3'
s2 = s1.split(',')
n = 0
for i in s2:
    s2[n] = int(i)
    n += 1
print(s2)

9  lis =[['k',['qwe',{'k1':['tt',3,'1']},89],'ab']]

1) 将列表list中的'tt' 变成大写

lis[0][1][1]['k1'][0]=lis[0][1][1]['k1'])[0].upper()

2)将列表中的3通过数字相加再转换成字符串的方式变成'100'

lis[0][1][1]['k1'][1] = str(lis[0][1][1]['k1'][1]+97)

3)将列表中的字符串'1' 通过字符串的拼接的方式变成'101'

lis[0][1][1]['k1'][2] = lis[0][1][1]['k1'][2] + '01'

10  dic = {'k1':'v1','k2':['alex','sb'],(1,2,3):{'k3':['2',100,'wer']}}

1) 将'k2' 对应的值的最后面添加一个元素'23'

dic['k2'].append('23')

2) 将'k2' 对应的值的第一个位置插入一个元素'a'

dic['k2'].insert(0,'a')

3)将(1,2,3)对应的值添加一个键值对'k4':'v4'

dic[(1,2,3)].setdefault('k4','v4')

11 使用 range 打印 100,99,98,......1,0

for i in range(100,-1,-1):
    print(i)

12 下面代码有没有问题?如果有问题请指出来

f = open('a.txt',encoding='utf-8')

f.write('666')

open() 函数默认mode=r,此处为写入操作,所以要重新设置mode=w,w+,r+ 均可

四 编程题

1 将字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k': 1, 'k1': 2, 'k2': 3, 'k3': 4} 

s1 = 'k:1|k1:2|k2:3|k3:4'
print(s1.split('|'))
s2 = s1.split('|')
li1 = []
dic1 = {}
for i in s2:
    li1 = i.split(':')
    dic1[li1[0]] = int(li1[1])
print(dic1)

 

2 实现一个整数加法计算器,如:content = input('请输入内容:') #如用户输入:5+8+7.....(最少输入两个数相加),将最后的计算结果添加到此字典中(替换None): dic{'最终计算结果':None}

s1 = input("请输入内容:")
sum = 0
dic = {'最终计算结果': None}
for i in s1.split("+"):
    sum = sum+int(i)
dic["最终计算结果"] = sum
print(dic)

 

3 写函数,函数可接受多个字符串类型的参数.此函数的功能是将所有的参数以'_'的形式隔开,然后追加到一个文件中.

def main(file_path, *args):

        ....

def main(file_path, *args):
    print(args)
    l1 = '_'.join(args)
    f = open(file_path,mode='a',encoding='utf-8')
    f.write(l1)
    f.flush()
    f.close()

打开文件常规写法1: f = open(file_path,mode='a',encoding='utf-8')

 

4 给函数传入一个列表(此列表里面的元素必须全部是str类型),将列表汇总的每个元素按照顺序依次加上他们的索引,形成新的元素,并添加到一个新列表,将列表返回.

例如: 给函数传入一个列表['alex','太白'], 返回值为['alex0','太白1']

def main(list1):
    list2 = []
    for i in list1:
        list2.append(i+str(list1.index(i)))
    return list2

以上为瑕疵写法,因为list1.index(i)的作用是在list1中找出跟i匹配的第一个元素并返回其索引值.当引入列表中有相同元素时,此函数输出结果会出错

def func(lst):
    new_lst = []
    for i in range(len(lst)):
        new_lst.append(lst[i]+str(i))
    return new_lst

以上为正确写法,获取列表索引的常用写法为 for i in range(len(lst)),通过range() 函数计数列表长度来获取对应的列表索引.

 

5  

# 1,alex,22,13651054608,IT
# 2,wusir,23,13304320533,Teacher
# 3,taibai,18,13332353221,IT
# 利用文件操作,将其构造成如下数据类型
# [{'id':'1','name':'alex','age':'22','phone':'13651054608','job':'IT'},......]

我的写法(此写法idc1={}放在for循环外会导致最终结果错误,因为每次for循环没有对dic1进行初始化)

f = open("t1.txt", mode='r',encoding='utf-8')
list1 = []
dic1 ={}
n = 1
for i in range(3):
    content = f.readline().split(',')
    dic1['id'] = content[0]
    dic1['name'] =content[1]
    dic1['age'] = content[2]
    dic1['phone'] = content[3]
    dic1['job'] = content[4]
    list1.append(dic1)
    n = n+1
print(list1)
f.close()

 

参考答案

result = []
with open('t1.txt',encoding='utf-8') as f:
    #读取每一行数据
    for line in f: 
        dic = {}
        lst = line.strip().split(',')
        dic['id'] = lst[0]
        dic['name'] = lst[1]
        dic['age'] = lst[2]
        dic['phone'] = lst[3]
        dic['job'] = lst[4]
        result.append(dic)
print(result)

要点:循环中使用的数据,最好在循环中初始化,否则可能出现意想不到的bug.即要让变量的作用域尽可能小

# 有如下值li=[11,22,33,44,55,77,88,99,90],将所有大于66的值保存至字典的第一个key中,
# 将小于66的值保存至第二个key的值中(在原有代码基础上补充,不得改变原有代码.)
li = [11,22,33,44,55,77,88,99,90]
result = {}
for row in li:
    if row > 66:
        result.setdefault('k1',[]).append(row)
    else:
        result.setdefault('k2',[]).append(row)
print(result)

本题主要在于setdefault()的使用,可以在不在循环外初始化变量的前提下新建list并存储数据,不会因为循环的问题让数据被反复清零.#如果在没有初始化list的情况下在循环内完成list数据存储#

# 写函数,完成以下功能
# 例如有:
#     user_list = [
#         {"name":"alex","hobby":"抽烟"},
#         {"name":"alex","hobby":"喝酒"},
#         {"name": "alex", "hobby": "烫头"},
#         {"name": "wusir", "hobby": "喊麦"},
#         {"name": "wusir", "hobby": "街舞"},
#     ]
# 编写函数处理user_list并返回如下结果:
# [
#     {"name":"alex","hobby_list":["抽烟","喝酒","烫头",]},
#     {"name":"wusir","hobby_list":["喊麦","街舞"]}
# ]
# 注意:
# 1. user_list中元素格式固定,即:{"name":"值","hobby":"值"}
# 2. user_list中元素的个数是动态的,即: user_list也可以是:
# [
#     {"name":"alex","hobby":"抽烟"},
#     {"name": "alex", "hobby": "烫头"},
#     {"name": "wusir", "hobby": "街舞"},
#     {"name": "太白", "hobby": "开车"},
# ]

一个比较笨拙的写法,必须先预设好一部分result数组内容才能运行,核心方法是两层for循环:先拿user_list里的一个字典元素去跟result里的字典元素一个一个比对,比对得上则将hobby加入hobby_list,全部比对不上则新增为一个字典元素,然后再用user_list里的下一个字典元素试,以此类推.达到双向遍历的效果.

user_list = [
    {"name": "alex", "hobby": "抽烟"},
    {"name": "alex", "hobby": "喝酒"},
    {"name": "alex", "hobby": "烫头"},
    {"name": "wusir", "hobby": "喊麦"},
    {"name": "wusir", "hobby": "街舞"},
]

def main(user_list):
    result = [{"name":"alex","hobby_list":[]},{"name":"wusir","hobby_list":[]}]
    for data1 in user_list:
        n = 0
        for data2 in result:
            if data1['name'] == data2['name']:
                data2['hobby_list'].append(data1['hobby'])
            else:
                n += 1
        if n == len(result):
            result.append({'name':data1['name'],'hobby_list':data1['hobby']})
    return result

print(main(user_list))

 

 

 

 

 

 

 

计算机应用根底第一次形考答案 1.微处理器 2.第一台 3.第一台 4.硬件系统与软件系统 5.操作系统 6.应用软件 7.控制和管理系统资源的使用 8.计算机硬件 9.运算器 10.显示器 11.微处理器 12.CPU 13.只读光盘 14.水产捕捞 15.激光式打印机 16.检查计算机是否感染病毒,消除局部已感染病毒 17.1024KB 18.〔75〕8 19.将网络资源集中管理和调度,并以虚拟化方式为用户提供效劳的 20.通过信息传感设备将物品与互联网相连接,以实现对物品进行智能化管理的网络 21.一 22.逻辑元件 23.工具 24.计算机辅助教学 25.控制器 26.存储器 27.所有指令 28.CPU 29.快 30.100 31.输入设备 32.显示器 33.系统软件 34.多种媒体信息 35.信息 36.病毒 37.音 38.根本 39.倍数 40.二进制 41.单用户/多任务 42.开始 43.剪贴板 44.关闭计算机 45.拖拽 46.标题栏 47.标题栏 48.右 49.控制面板 50.所有子文件夹及其所有文件 51.Shift 52.右击 53.<Ctrl>+<空格> 54.工具 55.Ctrl 56.组织 57.可以显示在屏幕任一边 58.延长显示屏使用寿命 59.进行文件清理并释放磁盘空间 60.出现鼠标停滞/键盘无法输入等现象 61.应用序 62.关闭 63.玻璃图案 64.剪贴板 65.首先 66.拖拽 67.快捷 68.窗口结构 69.活动 70.非活动窗口 71.充满 72.对话框 73.可执行 74.箭头 75.资源管理器 76.展开 77.* 78.纯文本 79.系统复原 80.跳转列表 81.3 82.共享软/硬件和数据资源 83.飞机 84.调制解调器 85.广域网 86.保证上网和打 两不误 87.接入的计算机距离和范围 88.网卡 89.@ 90.通信/日/任务管理 91.调制解调器 92.移动化 93.The Internet of Things 94.有限 95.资源子网 96.拓扑结构 97.代理商 98.E-Mail 99.WWW 100.通讯簿 计算机应用根底第二次形考答案 1.不会 2.完全相同 3.docx 4.另存为 5.Ctrl 6.剪贴板 7.底纹 8.完全一致 9.插入 10.符号 11.所见即所得 12.页面 13.控制 14.操作对象 15.四周 16.多 17.【页面布局】 18.【页面布局】 19.SmartArt 20.截取屏幕 计算机应用根底第三次参考作业答案〔电子表格〕 1.在Excel中,单元格地址是指〔 〕。 正确答案是:单元格在工作表中的位置 2.在Excel中,下面的输入能直接显示产生分数1/2的输入方法是〔 〕。 正确答案是:0 1/2 3.在Excel中,以下说法不正确的选项是〔 〕。 正确答案是:启动Excel后不能再新建空白工作簿 4.在Excel工作表中,A5单元格的值小于60,那么B5单元格为"不及格〞,否那么为"及格 〞,那么B5单元格的公式可写为〔 〕。 正确答案是:=IF〔A5<60,"不及格","及格"〕 5.在Excel中,如果某一单元格输入的参数或操作数的类型有错,那么该单元格会显示错 误信息〔 〕。 正确答案是:# VALUE! 6.在Excel中,当复制以下公式时单元格地址不会随相对位置改变而改变的是〔 〕。 正确答案是:=$A$2*$B$1 7.在Excel中,可以对数据按一定规那么进行排序,以下说法不正确的选项是〔 〕。 正确答案是:不可以按单元格颜色进行排序 8.在Excel中,迷你图是在工作表单元格中嵌入的一个微型图表,以下选项中〔 〕不是迷你图类型。 正确答案是:饼图 9.在Excel中,数据可以按图形方式显示在图表中,此时生成图表的工作表数据与数据系 列相链接。当修改工作表中这些数据时,图表〔 〕。 正确答案是:自动更新 10在Excel中,以下选项中不能实现将工作表页面的打印方向设置为横向的是〔 〕 正确答案是:单击"视图〞 "工作簿视图〞 "页面布局〞选项 11. 12. 13. 14. 15. 16. 17. 18. 19 20 模块二 Word 2021上机操作题〔共5题,4分/题〕 1. 输入以下文字并以Word1.docx名存盘: ** 内容提要 ** 建筑艺术是表现性艺术,通过面、体形、体量、空间、群体和环境处理等多种艺术语 言,创造情绪气氛,表达深刻的文化内涵。 执行以下编辑操作: 〔1〕将第一行标题改为粗楷体4号居中; 〔2〕用符号 Symbol 字符167来替换字符"*〞,标题与正文间空一行; 〔3〕正文中的所有中文改为黑体5号〔带下划波浪线〕; 〔4〕上述操作完成后保存。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值