计算机二级Python选择题考点——Python语言程序设计Ⅱ

代码1:

def fibRate(n):if n <= 0:return -1elif n == 1:return -1elif n == 2:return 1else:L = [1,5]for i in range(2,n):L.append(L[-1] + L[-2])return L[-2] % L[-1]
print(fibRate(7))

n = 7
L = [1,5]
i = 2 , 3 , 4 , 5 , 6
i = 2 -> L[-1] + L[-2] = 5 + 1 = 6 -> L = [1,5,6]
i = 3 -> L[-1] + L[-2] = 6 + 5 = 11 -> L = [1,5,6,11]
i = 4 -> L[-1] + L[-2] = 11 + 6 = 17 -> L = [1,5,6,11,17]
i = 5 -> L[-1] + L[-2] = 17 + 11 = 28 -> L = [1,5,6,11,17,28]
i = 6 -> L[-1] + L[-2] = 28 + 17 = 45 -> L = [1,5,6,11,17,28,45]
L[-2] % L[-1] = 28 % 45

代码2:

d = {}
for i in range(26):d[chr(i + ord("A"))] = chr((i + 13) % 26 + ord("A"))
for c in "Python":print(d.get(c,c),end = "")

i = 0 ~ 25
i = 0 -> d[A] = N

i = 12 -> d[M] = Z
i = 13 -> d[N] = A

代码3:

list1 = [[0,1,2],"123.0","Python"]
a = all(list1[0])
b = list1[1].split(".")
c = ascii(list1[2])
print(a,b,c)

all(x)函数当组合类型变量x中所有元素为真时返回True,否则返回False,元素除了是0、None、False外都算True。所以a的值为False;
b中split 是字符串分隔函数,返回分隔后的值应为[‘123’,‘0’];
c中ascii()的参数是字符串’python’,所以返回’python’。

代码4:

f = (lambda a = "hello",b = "python",c = "world":a+b.split("o")[1]+c)
print(f("hi"))

f(“hi”) -> a=“hi”,b=“python”,c=“world”
b.split(“o”)=[“pyth”,“n”]
a+b.split(“o”)[1]+c=“hi”+“n”+“world”=“hinworld”

代码5:

getstring = "TTBEGCCCENDGGGBEGENTTCEND"
i = 0
while i <len(getstring) - 2:start = gestring.find("BEG", i)if start == -1:breakelse:end = gestring.find("END", i)if end == -1:breakelse:print(gestring[start + 3 : end])i = end + 3

i的取值范围:0~22
i=0
start=2(第一个“BEG”出现的下标,下标从0开始)
end=8(第一个“END”出现的下标,下标从0开始)
gestring[5,8]=CCC
i=11
start=14(第一个“BEG”出现的下标,下标从11开始)
end=22(第一个“END”出现的下标,下标从11开始)
gestring[17,22]=ENTTC
i=25(不满足while条件,退出循环)

代码7:

x = [90,87,93]
y = ("Aele""Bob","lala")
z = {}
for i in range(len(x)):z[i] = list(zip(x,y))
print(z)#输出结果:{0: [(90,'Aele'), (87,'Bob'), (93, 'lala')], 1: [(90, 'Aele'), (87, 'Bob'), (93, 'lala')], 2: [(90, 'Aele'), (87, 'Bob').(93,'lala')]}

代码8:

tb = {'yingyu':20'shuxue':30'yuwen':40}
stb = {}
for it in tb.items():print(it)stb[it[1]] = it[0]
print(stb)#输出结果:{40:'yuwen',20:'yingyu',30:'shuxue'}

代码9:

str1 ='||北京大学||'
print(str1.strip('|').replace('北京','南京'))#输出:南京大学

strip()方法是去除字符串首尾两端与参数相同的字符,无论数量

代码10:

ss = [2, 3, 6, 9, 7, 1]
for i in ss:ss.remove(min(ss))print(min(ss), end=",")
#输出:2,3,6,
  • 第一次循环:
    移除最小值1,剩余列表为 [2, 3, 6, 9, 7]
    输出当前最小值 2,打印:2,
  • 第二次循环:
    移除最小值2,剩余列表为 [3, 6, 9, 7]
    输出当前最小值 3,打印:2,3,
    第三次循环:
  • 移除最小值3,剩余列表为 [6, 9, 7]
    输出当前最小值 6,打印:2,3,6,
    (在这个点上,迭代已经结束,因为列表ss不再包含索引2。)
    在 Python 中,for循环是通过迭代器(iterator)来实现的。迭代器是一个对象,它提供了一个 next() 方法,用于逐个返回容器中的元素。
    for i in ss: 迭代语句使用了ss列表的迭代器。迭代器在迭代的过程中会记录当前位置,在第三次循环结束之后,循环并没有继续执行。这是因为在迭代列表的同时修改了列表,使之列表的索引下标也改变了。

代码11:

letter = ['A','B','C','D','D','D']
for i in letter:if i == 'D':letter.remove(i)
print(letter)#输出:['A','B','C','D']
  • 第一次循环(索引为0):i == ‘A’ ≠ ‘D’
  • 第二次循环(索引为1):i == ‘B’ ≠ ‘D’
  • 第三次循环(索引为2):i == ‘A’ ≠ ‘D’
  • 第三次循环(索引为3):i == ‘D’ 移除第一个D
    剩余列表为 [‘A’,‘B’,‘C’,‘D’,‘D’]
  • 第四次循环(索引为4):i == ‘D’ 移除第二个D
    剩余列表为 [‘A’,‘B’,‘C’,‘D’]
    (在这个点上,迭代已经结束,因为列表letter不再包含索引4。)
    列表中的最后一个D未删除

代码12:
文件a.txt的内容如下:[1,2,3,4]

f = open('a.txt','r')
print(f.read().split(','))
f.close()
#输出:['['1','2','3','4']']

代码13:

fo = open("a.txt","w")
x = ['天','地','人']
#fo.writelines()的写入结果是天地人
fo.writelines(','.join(x))
fo.close()

首先打开文件,然后使用文件的writelines()方法写入数据,数据是列表x通过逗号连接内部所有元素,所以写入文件的字符串为“天,地,人”,因为写入文件不会含有引号,所以文件的内容为:天,地,人

代码14:

ls = [1,2,3.7,4,5]s = ls[3:4]print(s) #输出:[4]
print(type(s)) #输出:<class 'list'>t = ls[3]
print(t) #输出:4
print(type(t)) #输出:<class 'int'>

代码15:

print(list({"a":1,"b":2}))
#输出:['a', 'b']

list()函数的参数需要是多元素数据类型,比如元组,字符串,字典等当直接转换字典的时候,是对字典的键进行操作,等于舍弃字典的值

代码16:

animal = "cat","dog","tiger","rabbit"
print(animal)
#输出:('cat', 'dog', 'tiger', 'rabbit')

直接将多个元素通过逗号赋值给一个变量,会自动将数据加上括号形成元组进行赋值

范式:

  • 1NF(第一范式):
    1NF要求表中的每一列都必须包含原子(不可分割)的值,且不应存在重复的分组或数组。

例:
考虑一个表示学生信息的表:

学生ID学生姓名课程
1约翰·多伊数学,物理
2简·史密斯化学,生物
3鲍勃·约翰逊数学

这个表不符合1NF,因为“课程”列包含由逗号分隔的多个值。

  • 2NF(第二范式):
    2NF建立在1NF的基础上,此外要求非关键属性在功能上完全依赖于主键。

例:
考虑一个表示订单和订单项的表:

订单ID商品ID商品名称数量
1101笔记本2
1102鼠标1
2101笔记本1
2103键盘1

在这个表中,复合键是(订单ID,商品ID),而非关键属性“商品名称”仅依赖于键的一部分(商品ID),而不是整个键。

  • 3NF(第二范式):
    第三范式 (3NF) 要求表中的非主属性不能依赖于其他非主属性。也就是说,表必须同时满足1NF和2NF,并且没有传递依赖关系。
    例:考虑一个表示学生课程的表:
学生ID学生姓名课程ID课程名称教师姓名
1约翰·多伊101数学张老师
1约翰·多伊102物理王老师
2简·史密斯101数学张老师
2简·史密斯103化学李老师
3鲍勃·约翰逊102物理王老师

这个表没有达到3NF,因为教师姓名(TeacherName)依赖于课程ID(CourseID),而课程ID只是主键的一部分。

例1:
R(C#,Cn,T,Ta)(其中C#为课程号,Cn为课程名,T为教师名,Ta为教师地址)并且假定不同课程号可以有相同的课程名,每门课程只有一位任课教师,但每位教师可以有多门课程。

  • 1NF(第一范式):
    关系 R 已经满足第一范式,因为每个属性都包含原子值,没有多值属性或重复组。
  • 2NF(第二范式):
    第二范式要求非主属性完全依赖于候选键。在这里,候选键可以是 {C#} 或者 {Cn}。
    Cn (课程名) 对于 {C#} 是部分依赖的,因为 Cn 可能相同。
    T (教师名) 和 Ta (教师地址) 对于 {C#} 或 {Cn} 都是完全依赖的。
  • 考虑到 Cn 的部分依赖,我们可以将关系 R 进一步分解,确保非主属性完全依赖于候选键。
    拆分关系为两个:
    关系 R1(C#, T, Ta)
    主键:{C#}
    T (教师名) 和 Ta (教师地址) 对于 {C#} 是完全依赖的。
    关系 R2(C#, Cn)
    主键:{C#}
    Cn (课程名) 对于 {C#} 是完全依赖的。
    这样,每个关系都满足第二范式。
  • 3NF(第三范式):
    第三范式要求非主属性不传递依赖于候选键。在这里,候选键可以是 {C#} 或者 {Cn}。
    T 和 Ta 对于 {C#} 或 {Cn} 不是传递依赖的。
    由于 T 和 Ta 只依赖于候选键的一部分,这违反了第三范式的要求。
    关系模式R范式最高是第二范式(2NF)

例2:
某图书集团数据库中有关系模式R(书店编号,书籍编号,库存数量,部门编号,部门负责人),其中要求:(1)每个书店的每种书籍只在该书店的一个部门销售;(2)每个书店的每个部门只有一个负责人;(3)每个书店的每种书籍只有一个库存数量。
关系模式R范式最高是第二范式(2NF)

例3:
定义学生、教师和课程的关系模式S(S#,Sn,Sd,Dc,Sa)(其属性分别为学号、姓名、所在系、所在系的系主任、年龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先修课);SC(S#,C#,G)(其属性分别为学号、课程号和成绩)。包含对非主属性部分依赖的关系是(S(S#,Sn,Sd,Dc,Sa))。包含对主属性传递依赖的是S#→Sd,Sd→Dc

在关系模式S中,主键为S,但有Sd→Dc,Sd为非主属性,存在对非主属性部依赖。

例4:
学生选修课程的关系模式为SC(S#,Sn,Sd,Sa,C#,G)(其属性分别为学号、姓名、所在系、年龄、课程号和成绩);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课)。关系模式中包含对主属性部分依赖的是S#→Sd

例5:
定义学生选修课程的关系模式如下:S(S#,Sn,Sd,Sa)(其属性分别为学号、姓名、所在系、年
龄);C(C#,Cn,P#)(其属性分别为课程号、课程名、先选课);SC(S#,C#,G)(其属性分别学号、课号和成绩)。检索选修了课程号为2且成绩不及格的学生的姓名的表达式是
S

学号S#姓名Sn所在系Sd年龄Sa
1John DoeComputer Science20
2Jane SmithPhysics22
3Bob JohnsonMathematics21

C

课程号C#课程名Cn先选课P#
1Database SystemsNULL
2Data StructuresNULL
3Physics 1011

SC

学号S#课程号C#成绩G
1190
1255
2365
3178
3282

选择(σ):从行的角度进行的运算
投影(π):从列的角度进行的运算
连接(⋈):自然连接-要求两个关系中进行比较的分量必须是同名的属性组,并且在结果中把重复的属性列去掉。
逻辑与(∧):在数据库查询中,它通常用于指定多个条件的交集,只有同时满足所有条件的元组才会被选取或操作。

π_Sn(π_S#(σ_C# = 2 ∧ G < 60 (SC)) ⨝ S)解析:

  1. σ_C# = 2 ∧ G < 60 (SC):在关系SC表中筛选出 课程号为2(C#)且成绩不及格(G) 的行
  2. π_S#(σ_C# = 2 ∧ G < 60 (SC):在第①步的结果基础上,只保留学号(S#)列
  3. π_S#(σ_C# = 2 ∧ G < 60 (SC)) ⨝ S:在第②步的结果基础上,与关系表S进行连接操作
  4. π_Sn(π_S#(σ_C# = 2 ∧ G < 60 (SC)) ⨝ S):连接完成后,只保留姓名(Sn)列

检索选修课程名为“操作系统”的成绩在90分以上(含90分)的学生姓名的表达式是

π_Sn(π_S#(π_C#(σ_Cn = "操作系统"(C)) ⨝ σ_G >= 90(SC))) 解析:

  1. σ_Cn = "操作系统"(C):在关系C表中筛选出 选修课程名为“操作系统” 的行
  2. π_C#(σ_Cn = "操作系统"(C)):在第①步的结果基础上,只保留课程号(C#)列
  3. σ_G >= 90(SC):在关系SC表中筛选出 成绩在90分以上(含90分) 的行
  4. π_S#(π_C#(σ_Cn = "操作系统"(C)) ⨝ σ_G >= 90(SC)):对第②步和第③步的结果进行连接操作
  5. π_Sn(π_S#(π_C#(σ_Cn = "操作系统"(C)) ⨝ σ_G >= 90(SC))):连接完成后,只保留姓名(Sn)列

例6:
学生选课成绩表的关系模式是SC(S#,C#,G),其中S#为学号,C#为课号,G为成绩,学号为20的学生所选课程中成绩及格的全部课号为()

例7:
定义学生选修课程的关系模式如下:SC(S#,Sn,C#,Cn,G,Cr) (其属性分别为学号、姓名、课程号、课程名、成绩、学分)则关系最高是(1NF)

关系模式SC的主键为(S#,C#),但“学号”就可以决定“姓名”,“课程号”就可以决定“课程名”,这里有非主属性对主键的部分依赖,不满足第二范式,关系SC最高是1NF。

例8:
现有表示患者和医疗的关系如下:P(P#,Pn,Pg,By),其中P#为患者编号,Pn为患者姓名,Pg为性别,By为出生日期,Tr(P#,D#,Date,Rt),其中D#为医生编号,Date为就诊日期,Rt为诊断结果检索在1号医生处就诊的男性病人姓名的表达式是()

P

患者编号P#患者姓名Pn性别Pg出生日期By
1Alice1990-05-15
2Bob1985-11-22
3Charlie1998-03-10

Tr

患者编号P#医生编号D#就诊日期Date诊断结果Rt
112023-01-10Common cold
212023-02-05Headache
222023-02-10Sore throat
312023-03-20Flu
132023-04-15Allergy

π_Pn (π_P#(σ_D# = 1(Tr)) ⨝ σ_Pg = '男'(P)))解析:

  1. σ_D# = 1(Tr):在关系Tr表中选取医生编号(D#)为1的行
  2. π_P#(σ_D# = 1(Tr):在第①步的结果基础上,只保留患者编号(P#)列
  3. σ_Pg = '男'(P):在关系P表中选取性别(Pg)为男的行
  4. π_P#(σ_D# = 1(Tr)) ⨝ σ_Pg = '男'(P)):对第②步和第③步的结果进行连接操作
  5. π_Pn (π_P#(σ_D# = 1(Tr)) ⨝ σ_Pg = '男'(P))):连接完成后,只保留患者姓名(Pn)列

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/659285.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux逻辑卷(LV)扩容

Linux逻辑卷&#xff08;LV&#xff09;扩容 1、准备物理磁盘&#xff08;分区和不分区都行&#xff09;&#xff0c;可以使用lsblk命令查看新增的磁盘&#xff0c;如下图sde就是我们新增磁盘&#xff0c;容量为600G。 2、将新磁盘变成物理卷&#xff08;PV&#xff09; pvcr…

缓存的概念

文章目录 一、系统缓存buffer与cachecache 的保存位置cache 的特性 二、用户层缓存DNS缓存 三、浏览器缓存过期机制最后修改时间Etag标记过期时间 expires混合使用和缓存刷新缓存刷新 cookie和session 四、CDN缓存什么是CDN用户请求CDN流程利用 302 实现转发请求重定向至最优服…

RabbitMQ 死信队列应用

1. 概念 死信队列&#xff08;Dead Letter Queue&#xff09;是在消息队列系统中的一种特殊队列&#xff0c;用于存储无法被消费的消息。消息可能会因为多种原因变成“死信”&#xff0c;例如消息过期、消息被拒绝、消息队列长度超过限制等。当消息变成“死信”时&#xff0c;…

【数据分享】1929-2023年全球站点的逐月最高气温数据(Shp\Excel\无需转发)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、湿度等指标&#xff0c;其中又以气温指标最为常用&#xff01;说到气温数据&#xff0c;最详细的气温数据是具体到气象监测站点的气温数据&#xff01; 之前我们分享过1929-2023年全球气象站…

Leetcode1109. 航班预订统计

Every day a Leetcode 题目来源&#xff1a;1109. 航班预订统计 解法1&#xff1a;差分数组 注意到一个预订记录实际上代表了一个区间的增量。我们的任务是将这些增量叠加得到答案。因此&#xff0c;我们可以使用差分解决本题。 代码&#xff1a; /** lc appleetcode.cn i…

asp.net core监听本地ip地址

开发asp.net core的时候遇到一个问题我想提供访问供其他同事测试&#xff0c;但是默认都是localhost或者127.0.0.1。我想换成我的Ip地址访问但是不行&#xff0c;百度搜索需要更换监听的地址即修改launchSettings.json&#xff0c;修改为0.0.0.0:5248&#xff0c;这样不管local…

力扣hot100 跳跃游戏 II 贪心 思维

Problem: 45. 跳跃游戏 II 思路 &#x1f468;‍&#x1f3eb; 参考 每次在上次能跳到的范围&#xff08;end&#xff09;内选择一个能跳的最远的位置&#xff08;也就是能跳到max_far位置的点&#xff09;作为下次的起跳点 &#xff01; Code ⏰ 时间复杂度: O ( n ) O(n…

DVI接口主机连接VGA显示器解决方案:DVI转VGA转换器DV

DVI转VGA转换器概述 DVI转VGA转换器能够将DVI数字信号转换成VGA模拟信号&#xff0c;通过VGA线缆传输给VGA显示设备使用&#xff0c;这样就能实现DVI接口主机连接VGA接口的显示器。 DVI转VGA转换器DV DVI转VGA转换器DV接口说明 DVI转VGA转换器DV接口介绍 DVI转VGA转换器连接示…

Spring Boot集成RocketMQ

本文目的是&#xff1a;教会你使用Spring Boot集成RocketMQ。 pom.xml文件引入rocketMQ依赖 <!-- rocketmq 依赖--><dependency><groupId>org.apache.rocketmq</groupId><artifactId>rocketmq-spring-boot-starter</artifactId>&…

XCTF:warmup[WriteUP]

CtrlU查看页面源码 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><meta http-equiv"X-UA-Compatible&q…

嵌入式学习第十四天!(结构体、共用体、枚举、位运算)

1. 结构体&#xff1a; 1. 结构体类型定义&#xff1a; 嵌入式学习第十三天&#xff01;&#xff08;const指针、函数指针和指针函数、构造数据类型&#xff09;-CSDN博客 2. 结构体变量的定义&#xff1a; 嵌入式学习第十三天&#xff01;&#xff08;const指针、函数指针和…

深度学习侧信道攻击的集成方法

深度学习侧信道攻击的集成方法 深度学习侧信道攻击的集成方法项目背景与意义摘要项目链接作者数据集CHES CTF 数据集ASCAD FIXED KEY 数据集ASCAD RANDOM KEY 数据集 代码代码执行神经网络 深度学习侧信道攻击的集成方法 项目背景与意义 在TCHES2020&#xff08;第4期&#x…

安卓线性布局LinearLayout

<?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"xmlns:tools"http://schemas.android.com/tools"android:layout_width"match_parent"android:…

如何用MapTalks IDE来发布网站?

简介 MapTalks IDE 全称 MapTalks集成设计环境&#xff08;Integrated Design Environment&#xff09;&#xff0c;是由MapTalks技术团队开发的新一代web地图设计软件。 通过MapTalks IDE&#xff0c;您可以自由的创建二维和三维地图&#xff0c;在其中载入或创建地理数据&a…

【数据结构与算法】之哈希表系列-20240130

这里写目录标题 一、383. 赎金信二、387. 字符串中的第一个唯一字符三、389. 找不同四、409. 最长回文串五、448. 找到所有数组中消失的数字六、594. 最长和谐子序列 一、383. 赎金信 简单 给你两个字符串&#xff1a;ransomNote 和 magazine &#xff0c;判断 ransomNote 能不…

【Midjourney】新手指南:命令

1./ask 向Midjourney提问&#xff0c;不过问题和回答都是英文的&#xff0c;例如&#xff1a; 2./blend 将两张图片合并为一张 ​ 3./describe 上传一张图片&#xff0c;Midjourney会生成四组该图片相关的关键词&#xff0c;可以使用这些关键词再生成图片。 ​ 4./turbo …

力扣 55.跳跃游戏

思路&#xff1a; 从后往前遍历&#xff0c;遇到元素为0时&#xff0c;记录对应的下标位置&#xff0c;再向前遍历元素&#xff0c;看最大的跳跃步数能否跳过0的位置&#xff0c;不能则继续往前遍历 代码&#xff1a; class Solution { public:bool canJump(vector<int>…

毕业设计过程学习

传统的目标检测算法主要通过人工设计与纹理、颜色和形状相关的特征来进行目标区域特征的提取。随着深度学习和人工智能技术的飞速发展&#xff0c;目标检测技术也取得了很大的成就。早期基于深度学习的目标检测算法的研究方向仍然是将目标定位任务和图像分类任务分离开来的&…

uni-app在hbuilderx打开微信开发工具运行

一、运行设置配置微信开发者工具路径 运行-运行到小程序模拟器-运行设置 配置微信开发工具的安装路径&#xff08;可浏览文件位置选择&#xff09;&#xff1b;web服务器端口号在第二步骤获得&#xff1b; 二、打开微信开发者工具设置-安全设置 打开服务端口开关&#xff0…

使用ffmpeg madiamtx制作一个rtsp源

有很多人在跑rtsp解码的demo的时候, 苦于找不到一个可以拉流的源, 这里说一个简单的方法. 使用mediamtx, 加ffmpeg加mp4文件方式, 模拟一个rtsp的源. 基本架构就是这样. 在PC上, 这里说的PC可以是远程的服务器, 也可以是你的开发用的windows, 都行. 把mediamtx, 在pc上跑起来 …