计算机二级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.hqwc.cn/news/443304.html

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

相关文章

海外代理IP推荐:5大最佳Luminati替代方案

在跨境出海业务中&#xff0c;海外代理IP是非常高效的助力工具&#xff0c;因此也衍生了非常多的代理服务商。想必大多数都知道Brightdata&#xff08;原名Luminati&#xff09;&#xff0c;但是&#xff0c;由于代理IP的高需求&#xff0c;慢慢地我们发现除了高价的卢米&#…

ADI 配合 USRP 使用的相控阵天线 cn0566

相控阵天线 在这里插入图片描述

excel 选中指定区域

问题 excel 选中指定区域 详细问题 笔者有一个excel数据集&#xff0c;数据量较大&#xff0c;如何快速选中指定区域 解决方案 步骤1、 点击起始单元格 确定单元格坐标&#xff08;建议直接CtrlC复制至剪贴板&#xff09; 具体操作入下图所示 步骤2、 点击结束单元格 …

哪款洗地机好用?2024年洗地机推荐

家居清洁工作却是一项既重要又耗时的任务&#xff0c;尤其是地面的清扫工作&#xff0c;既要保证清洁&#xff0c;又要尽量减少对地板的磨损。吸拖一体的洗地机出现&#xff0c;让全职妈妈、忙碌的上班族以及健康状况欠佳的长者都能从繁重的家务活中解脱出来&#xff0c;享受自…

设计模式学习笔记02(小滴课堂)

江湖传言里的设计模式-单例设计模式 单例设计模式中的懒汉方式实战 这种方式是线程不安全的&#xff0c;多个线程同时调用会创建多个对象。 所以我们就要给它加锁: 我们去测试一下&#xff1a; 因为构造函数已经私有化&#xff0c;所以不能直接用new的方式去创建对象。 现在我…

CodeFuse新开源模型荣登Big Code评测榜首!

使用多任务高效微调框架MFTCoder&#xff0c;以DeepSeek-Coder-33b模型为底座&#xff0c;微调获得的CodeFuse-DeepSeek-33b模型在Big Code Models Leaderboard代码大模型榜单上以43.58% WinRate成为新晋榜首&#xff0c;同时模型在NLP任务上也取得了很好的表现。本文我们将介绍…

语言革命:NLP与GPT-3.5如何改变我们的世界

文章目录 &#x1f4d1;前言一、技术进步与应用场景1.1 技术进步1.2 应用场景 二、挑战与前景三、伦理和社会影响四、实践经验五、总结与展望 &#x1f4d1;前言 自然语言处理&#xff08;Natural Language Processing&#xff0c;NLP&#xff09;是人工智能领域的一个重要分支…

Python爬虫---Scrapy框架---CrawlSpider

CrawlSpider 1. CrawlSpider继承自scrapy.Spider 2. CrawlSpider可以定义规则&#xff0c;再解析html内容的时候&#xff0c;可以根据链接规则提取出指定的链接&#xff0c;然后再向这些链接发送请求&#xff0c;所以&#xff0c;如果有需要跟进链接的需求&#xff0c;意思就是…

WPF三大基础元素:键盘、鼠标与焦点

键盘类与事件处理 WPF框架中内置了System.Input.Keyboard基础键盘类&#xff0c;该类提供了丰富的键盘相关功能&#xff0c;包括描述键盘状态的属性、处理键盘操作的方法以及一系列事件。这些键盘事件不仅直接由Keyboard类提供&#xff0c;还通过UIElement等XAML基元素类向外传…

java框架面试篇

Spring框架 spring Bean线程安全问题 Scope注解 我们可以在bean的类上加Scope注解来声明这个Bean是单个实例还是多个实例。在默认情况下Bean是单个实例的&#xff0c;此时的注解中的属性默认为Scope("singleton")&#xff0c;Scope("prototype")则是一…

5G阅信是如何进行识别与解析的?5G阅信短链有什么用?

什么叫5G阅信&#xff1f;5G阅信&#xff0c;是通过短信网关向手机用户发送一条带有智能短信解析链接的文字短信&#xff0c;手机收到短信后&#xff0c;通过短信增强技术&#xff0c;自动从服务器拉取报备的信息&#xff0c;将短信内容解析为图文、视频、红包、卡券等样式的富…

如何在Raspberry Pi上启用SSH并结合cpolar内网穿透实现公网远程访问本地树莓派

文章目录 如何通过 SSH 连接到树莓派步骤1. 在 Raspberry Pi 上启用 SSH步骤2. 查找树莓派的 IP 地址步骤3. SSH 到你的树莓派步骤 4. 在任何地点访问家中的树莓派4.1 安装 Cpolar4.2 cpolar进行token认证4.3 配置cpolar服务开机自启动4.4 查看映射到公网的隧道地址4.5 ssh公网…