- 博客(91)
- 收藏
- 关注
转载 文件合并工具
myFile.pyimport os'''获取dirpath文件夹下所有txt文件的路径'''def getTxtPaths(dirpath): paths = [ ] filenames = os.listdir(dirpath) for filename in filenames : filepath = os.path.join(dirpath,filename) if os.path.isfile(filepath) and fil
2021-12-06 21:34:20
480
原创 图像置换加密
任务描述背景 之前实训学习了如何对字符进行加密,其实图像也可以加密,如下图所示。其中,% 表示求余运算,a 和 b 是此加密方法的密钥,在本关,a 取 1、b 取 2。任务 本关任务是实现函数enImg(path1, path2)函数,其功能是利用 Arnold 置换方法对图像 1 进行加密,并将加密结果保存为图像 2, 图像 1 和图像 2 的路径分别为path1和path2。相关知识 参照之前关卡的程序。 利用上面的公式将图像 1 中所有像素均移动 1 次,称为一次置换。一次
2021-11-27 21:12:51
2804
原创 图像边缘检测
任务描述背景 边缘检测是数字图像处理领域的一个常用技术,被广泛应用于图像特征提取、目标识别、计算机视觉等领域。边缘可以理解为像素值发生跃迁的地方,而边缘检测就是要找到这样的地方。如下图所示,对左图进行边缘检测,结果为右图。基于卷积运算可实现边缘检测,对图像 1(设分辨率为 w×h)进行边缘检测的方法如下: 1)将图像 1 转换成灰度图,仍称为图像 1; 2)新建图像 2,图像 2 为灰度图,分辨率与图像 1 相同; 3)对于图像 1 中坐标为 (x,y) 的像素 p,求 p 的卷积 c
2021-11-27 19:05:22
1245
原创 python图像降噪
任务描述背景 图像在数字化和传输等过程中会产生噪声,从而影响图像的质量,而图像降噪技术可以有效地减少图像中的噪声。如下图所示,左图是一幅包含噪声的图像(图中的黑点即为噪声),右图是降噪后的结果(黑点显著减少)。中值滤波是一种常用的图像降噪方法,对于一幅带噪声的图像 1(设分辨率为 w×h),降噪方法如下: 1)将图像1转换成灰度图,仍称为图像1; 2)新建图像2,图像2为灰度图,分辨率与图像1相同; 3)对于图像 1 中坐标为 (x,y) 的像素 p,求 p 的中值 c,然后将图像 2
2021-11-27 18:43:09
16673
2
原创 python字符画
背景 顾名思义,字符画就是由字符组成的“画”,效果如下图所示。 注: 可以点击页面右上角“文件目录”图标,选择src/step3/answer/step3_2.txt文件,查看字符画效果,如下图所示。如下图所示,屏幕上显示的字符会占据一个矩形区域,若矩形区域为白色、字符为黑色,则当这个字符笔画较少时,区域看起来会比较“白”,反之则较“黑”,而这种“黑”“白”程度就形成了一种特殊的“灰度”。一个字符所占的矩形区域可以看作是图像中的一个像素,则一个 m 行、每行 n 个字符的文本就相当于一个分
2021-11-27 13:41:10
5560
3
原创 python灰度图
任务描述背景 真彩色图像和灰度图像是数字图像的两种常见类型,如下图所示,左图是真彩色图像,右图是灰度图像。 在真彩色图像中,像素颜色是 RGB 颜色,每个颜色包含 R、G、B 三个颜色分量。而在灰度图像中,像素颜色只有一个分量,称为灰度值,其取值是 [0,255] 之间的整数,灰度值越小,灰度越暗(越黑),反之越亮(越白)。任务 本关任务是补全程序,使程序能将一幅真彩色图像转换成灰度图像。说明如下: 1)求得的灰度值需要转换成整数,请使用round函数取整,如round(3.7)是
2021-11-27 13:10:11
4536
原创 图像亮度调整
任务描述背景 亮度调整是数字图像处理基本操作之一,如下图所示。题外话:该图是图像处理领域知名度最高的图像之一,被广泛用于图像处理技术效果的测试,图中人物叫 Lena。 根据 RGB 颜色的原理可知,要调整一个颜色的亮度,可以将红、绿、蓝三个颜色分量都加上相同的调整量 n,n 是 [−255,255] 之间的整数,例如,当 n 为 50 时,RGB颜色 (148,65,93) 变为 (198,115,143),效果见下图。 任务 本关任务是实现函数enhancePixel(r, g,
2021-11-24 10:56:21
3917
1
原创 扩展到可视字符
任务描述 之前程序只能处理 26 个小写英文字母,而不支持其它字符,如大写字母、数字、标点等。但这些字符在实际使用中也会大量出现,需要进行支持,才能更好的保护信息。 本关任务是对凯撒加密方法进行扩展,使其能够进一步处理其它英文字符。相关知识可视字符 实际上,在 ASCII 编码表中总共包含 95 个可视字符,即下图红框中的字符。可视字符是能够在屏幕上显示出来,或者说能看得见的字符。剩下的 33 个字符是控制字符,是看不见的,如删除符、换行符等。可视字符基本上涵盖了所有常见的英文字符,包括
2021-11-23 22:07:41
661
原创 解密一段文本
任务描述 本关任务是对密文进行解密,还原出明文。相关知识 其实解密和加密的原理是一样的,都是循环偏移,只不过加密时是正向移动,而解密时是反向移动。所以只要知道加密时的偏移量,解密时反着移动相同的偏移量,即循环移动 −key 位就可以了。编程要求 Begin-End 区间给出的是上关的过关程序,能对文本text进行凯撒加密。修改代码,使其能够实现解密。测试说明 例如,测试集 1 的输入为:cvvcem vqpkijv!测试集 1 的输出为:cvvcem vqpkijv! ->
2021-11-23 22:01:33
433
原创 【无标题】
任务描述 完成了一个字符的加密,对一整段文本进行加密就比较简单了,只要对文本里面的字符逐一处理。 本关任务是加密一段文本。相关知识 在实现时,有个地方要注意一下,enChar函数只能处理小写英文字母,但在文本里面可能还有其它字符,如大写字母、数字、标点符号、空格等。 所以,在处理文本中的某个字符x时,要先判断一下,如果x是小写字母(即’a’<=x<=‘z’),就使用enChar函数加密,否则不加密(保持不变)。编程要求 在 Begin-End 区间实现Caesar(tex
2021-11-23 21:58:04
444
原创 加密一个小写字母(续)
任务描述 上关方法并不能正确处理所有小写英文字母,比如’y’偏移 2 位得到的是’{’。这是因为在 ASCII 编码表中,‘y’向后移动 2 位对应的字符就是’{’。而凯撒加密规定,如果偏移时超过了字符’z’,就重新从’a’开始,所以’y’偏移 2 位得到的应该是’a’。这种偏移方式称为循环偏移。 本关任务是利用循环偏移方式加密一个小写英文字母。相关知识循环偏移的实现 先不考虑 ASCII 码,给 26 个小写字母重新编号,‘a’~'z’的编号依次是 0~25。设某个字符 x 的编号是 xi
2021-11-23 21:52:09
929
原创 加密一个小写字母
任务描述 凯撒加密的过程是依次对明文中的每个字符进行处理。对于每个字符,按字母表顺序进行一定偏移,就得到了对应的密文字符。 如下图,当偏移量为 2 时,字符’a’按字母表顺序向后移动 2 位,对应的就是字符’c’,所以’a’对应的密文就是’c’。类似地,‘b’对应的是’d’、‘c’对应的是’e’,等等。如果偏移后超过了字母表的范围,就从头开始。比如’y’偏移 1 位是’z’,再往后偏移 1 位,后面没有字符了,就又从’a’开始,所以’y’偏移两位对应的是’a’,而’z’偏移两位得到的是’b’。
2021-11-23 21:40:08
1333
原创 python浮点数
背景 定点整数只能表示二进制整数,如 −11,而定点小数只能表示仅包含小数部分的二进制纯小数,如 −0.1。但更多时候,数值是既包含整数部分又包含小数部分的二进制混合数,如 −11.1。要表示混合数,需要使用浮点数。 在本关中,假设阶码和尾数都用 8 位补码表示,则对于一个二进制混合数 x,如果 x=0,则其规格化浮点数是全 0,否则按如下方法计算:至此,彻底解决了计算机如何用 0 和 1 表示二进制数中 +、− 和 . 的问题。任务 本关任务是实现ZhenToFu(z)函数,其功能是
2021-11-23 17:16:02
6441
1
原创 python定点数
任务描述背景 第 1 关提到,二进制中除了 0 和 1,还有 +、− 和 .,而计算机底层只有 0 和 1。之前关卡解决的是如何用 0 和 1 表示正负号的问题,从本关开始要进一步解决小数点的问题。 问题的难点在于不能直接用 0 和 1 表示小数点这个符号。例如,若用 1 表示小数点,则二进制数 101.01 对应的表示为 101101,计算机无法区分哪个 1 是小数点,用 0 或其它 01 串表示都存在类似问题。 解决方法是固定小数点的位置。例如,可以做如下规定,在 8 位原码中,小数点位置
2021-11-23 14:35:25
2793
原创 python补码
任务描述背景 上关提到,计算机底层一般采用补码表示数值。真实值对应的补码计算过程如下:真实值为正时,补码等于原码,如 +1001 的 8 位补码是 00001001;真实值为负时,反码加 1 即得补码,也就是将原码的数字部分按位取反后再加 1,如 −1001 的 8 位原码是 10001001,按位取反是 11110110,再加 1 得补码 11110111。 如果你不太熟悉该过程,可以参照上面的例题尝试以下计算: 可以看到,+0 和 −0 的补码相同,都是全 0,而原码和反码没有这一性
2021-11-23 10:50:26
4668
原创 python反码
任务描述背景 原码的优点是容易理解、便于转换,缺点是符号位不能参与加法运算。例如,真实值 −1 和 +1 相加结果是 0,若用 4 位原码进行运算,过程如下:−1 和 +1 对应的原码分别是 1001 和 0001;1001+0001=1010;1010 对应的真实值是 −10,计算结果错误。 所以,如果原码的符号位参与运算,则会得到错误结果,如果不参与运算,则要对符号位进行额外处理,这会增加硬件实现的复杂程度,降低计算速度。而加法运算是计算机最为核心的一个功能,其速度在很大程度上决定了整个
2021-11-23 10:23:35
2789
原创 python原码
背景 我们知道,计算机底层利用二进制表示数值,更准确的说,应该是利用 0 和 1 进行表示。“01 表示”和“二进制”是两个不同的概念,因为 01 表示用到的符号只有 0 和 1 两个,再无其它,而在二进制中,除了 0 和 1 之外,还有 +、− 和 .。因此,要让计算机能够表示二进制数,还需要进行一些处理,这便产生了“码制”的概念,而“原码”便是一种“码制”。 原码可以解决 +、− 的问题,它用 0 表示 +,用 1 表示 −,如二进制数 −1001 对应的原码是 11001,记作 [−1001]
2021-11-23 10:05:31
1429
原创 对汉字加解密
#对汉字加解密def enChar(x,key): # 加密 xid = ord(x)-first_ascll # 明文编号 yid = (xid+key) % n # 密文编号 y = chr(first_ascll+yid) # 求出密文字符 return yfirst_ascll = 0 # 起始字符n = 65536 # 字符总数def Caesar(text,key): result = '' for x in text:
2021-11-18 21:04:56
944
原创 对ASCLL码表中95个可视化字符的支持
#对ASCLL码表中95个可视化字符的支持def enChar(x,key): # 加密 xid = ord(x)-first_ascll # 明文编号 yid = (xid+key) % n # 密文编号 y = chr(first_ascll+yid) # 求出密文字符 return yfirst_ascll = ord(' ') # 起始字符n = 95 # 字符总数def Caesar(text,key): result = ''
2021-11-18 20:53:59
385
原创 小写字母加解密
def enChar(x,key): # 加密 xid = ord(x)-first_ascll # 明文编号 yid = (xid+key) % n # 密文编号 y = chr(ord('a')+yid) # 求出密文字符 return yfirst_ascll = ord('a') # 起始字符n = 26 # 字符总数def Caesar(text,key): result = '' for x in text: #
2021-11-18 20:51:49
201
原创 加密一个小写字母
def enChar(x,key): xid = ord(x)-ord('a') # 明文编号 yid = (xid+key)%26 # 密文编号 y = chr(ord('a')+yid) # 求出密文字符 return ys = enChar('a',200)print(s)
2021-11-17 20:10:21
275
原创 解析IP地址
背景 互联网上分布着很多设备,如电脑、手机、智能手表等。设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信。 但是,这条信息为什么会准确到达你朋友的手机,而不是其他设备?这是因为网络上的每台设备都有一个唯一的网络地址。如果把网络信息看作日常生活中的信件,网络地址就是信件上的收件人地址,有了这个地址,信息就能准确到达网络上的某一设备。 网络地址有不同类型,如 MAC 地址、IP 地址、URL 等,本关针对的是 IP 地址。IP 地址目前主要有两个版本:
2021-11-17 18:54:27
5426
原创 二进制加法
########## Begin ##########def add(a, b): la = [i for i in a] lb = [i for i in b] if len(a) < len(b): for i in range(len(b)-len(a)): la.insert(0, '0') else: for i in range(len(a)-len(b)): lb.inse
2021-11-17 16:59:35
504
原创 逻辑运算-与或非异或
########## Begin ##########def AND(a,b): c = '' for i,j in zip(a,b): if i==j and i=='1': c = c + '1' else: c = c + '0' return cdef OR(a,b): c = '' for i,j in zip(a,b): if i==j and i=='0
2021-11-17 16:05:24
277
原创 二进制计量单位
########## Begin ##########def unit_convert(a): if a >= 2**40: b = f'{round(a/2**40, 1)}T' elif a >= 2**30: b = f'{round(a/2**30, 1)}G' elif a >= 2**20: b = f'{round(a/2**20, 1)}M' else: b = f'{roun
2021-11-17 15:34:44
603
原创 二进制到十六进制
########## Begin ##########ds = {}ds['0000'] = '0'ds['0001'] = '1'ds['0010'] = '2'ds['0011'] = '3'ds['0100'] = '4'ds['0101'] = '5'ds['0110'] = '6'ds['0111'] = '7'ds['1000'] = '8'ds['1001'] = '9'ds['1010'] = 'A'ds['1011'] = 'B'ds['1100'] = 'C'
2021-11-17 14:58:59
190
原创 二进制到十进制-输入为正数
########## Begin ##########def BinToDec(b): s = 0 L = str(b).split('.') if len(L) == 2: # 有小数 l = [int(i) for i in L[0]] lx = [int(i) for i in L[1]] l,lx = l[::-1],lx[::-1] for i in range(len(l)-1,-1-len
2021-11-17 11:19:53
278
原创 算法复杂度-数值信息——除二取余
cache = [1, 1] #用于存储已算出的项,第i号元素对应第i+1项,最开始时存放了第1、2项def F(n): if len(cache)>=n: #先到列表中查询,若列表中包含了F(n) return cache[n-1] #则直接返回F(n) else: #否则计算F(n) Fn = F(n-1)+F(n-2) #计算F(n)的方法与之前相同 cache.append(Fn
2021-11-16 14:34:29
757
原创 绘制迫击炮弹运行轨迹
########## Begin ##########import numpy as npimport matplotlib.pyplot as pltdef calBombTrace(d, v0=50, n=30): g = 9.8 tmax = 2*v0*np.sin(np.radians(d))/g t = np.linspace(0, tmax, n) xt = v0*t*np.cos(np.radians(d)) yt = v0*t*np.sin(np
2021-11-16 13:55:50
1678
原创 绘制拟合出的直线
作者:周竞文(jwzhou@nudt.edu.cn)、徐建军来源:国防科技大学期中考试试题(2019 秋)领域:数学难度:★★★★★任务描述背景任务相关知识编程要求测试说明任务描述背景 人们经常会碰到 (x,y) 形式的二维数据。例如,青少年的年龄为 x、身高为 y,多个青少年的数据就形成了一系列的 (x,y);城市人口数量为 x、平均房价为 y,多个城市就对应了多个 (x,y);学生每天学习本门课程的平均时长为 x、课程的最终成绩为 y,则班上同学也会对应着许多的 (x,y)。
2021-11-15 17:52:01
673
原创 绘制大西洋中脊剖面轮廓
绘制大西洋中脊剖面轮廓700任务要求参考答案评论162作者:周竞文(jwzhou@nudt.edu.cn)、李暾来源:国防科技大学期末考试试题(2017 秋)领域:海洋、地理难度:★★★★任务描述背景任务相关知识编程要求测试说明任务描述背景 大西洋中脊是位于大西洋的一条海底山脊。如下图左部(来源:WriteWork)所示,它从北冰洋一直延伸到非洲南端附近,全长约 1.6 万公里,差不多贯穿地球南北,规模远超陆地上任何山脉。据测量,大西洋中脊宽度约为 1000 ~1300
2021-11-15 16:16:04
1242
原创 绘制钟形曲线
作者:周竞文(jwzhou@nudt.edu.cn)来源:国防科技大学期末考试试题(2018 秋)领域:数学难度:★★★任务描述相关知识编程要求测试说明任务描述 正态分布又称高斯分布,是科学和工程中使用最广泛的一种概率分布,其函数表达式为:其中,μ 为数据样本的平均值,σ 为数据样本的标准差。该函数对应的曲线因形状如钟而被称为钟形曲线。 μ=0、σ=1 时的正态分布叫做标准正态分布,公式为:本关任务是绘制标准正态分布的函数曲线。相关知识 无。编程要求 补全 Begin
2021-11-15 15:22:24
2468
原创 ※ 绘制炸弹轨迹 V——绘制多条轨迹
########## Begin ##########import numpy as npimport matplotlib.pyplot as pltdef calBombTrace(h, v0): g,n = 9.8,30 tmax = (2*h/g)**0.5 t = np.linspace(0, tmax, n) xt = v0*t yt = h-1/2*g*t**2 return xt, ytH = [3000, 2000, 1000]V0
2021-11-15 13:56:29
1221
原创 ※ 绘制炸弹轨迹 V——绘制多条轨迹
import numpy as npimport matplotlib.pyplot as plt########## Begin ##########def calBombTrace(h, v0): g = 9.8 tmax=(2*h/g)**0.5 t=np.linspace(0,tmax,30) xt=v0*t yt=h-0.5*g*t**2 return xt, yt########## End ##########xt, yt = calB
2021-11-15 11:36:03
1774
原创 ※ 绘制炸弹轨迹 IV——更简单地绘制一条轨迹
import numpy as npimport matplotlib.pyplot as plth, v0, g = 3000, 200, 9.8n = 30tmax=(2*h/g)**0.5########## Begin ##########t=np.linspace(0,tmax,30)xt=v0*tyt=h-0.5*g*t**2########## End ##########plt.plot(xt,yt,'r-')plt.grid('on') plt.axis([0, 5
2021-11-15 10:45:16
1228
原创 python绘制光滑曲线
import matplotlib.pyplot as plt #导入绘图库########## Begin ##########import numpy as npx = np.linspace(0, 2*np.pi, 10) #取10个横坐标y = np.sin(x) #计算10个纵坐标########## End ##########plt.plot(x, y, 'r-') #plot函数支持numpy数组plt.show()
2021-11-15 10:36:34
2652
原创 python绘制心形
import numpy as npimport matplotlib.pyplot as pltt = np.linspace(0, 2*np.pi, 100)x =16*np.sin(t)**3 #求n个xy =13*np.cos(t)-5*np.cos(2*t)-2*np.cos(3*t)-np.cos(4*t) #求n个yplt.plot(x, y, 'r-') #绘制plt.axis([-25, 25, -20, 15])plt.show()
2021-11-15 10:35:48
765
原创 绘制炸弹轨迹 IV——更简单地绘制一条轨迹
import matplotlib.pyplot as plth, v0, g = 3000, 200, 9.8n = 30tmax=(2*h/g)**0.5delta = tmax/(n-1)########## Begin ##########T = [i*delta for i in range(n)]xt = [v0*t for t in T]yt=[h-0.5*g*t**2 for t in T]########## End ##########plt.plot(xt,yt,'
2021-11-15 10:18:06
1109
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人