自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(91)
  • 收藏
  • 关注

原创 判定表法设计测试用例

2022-01-05 14:56:08 384

原创 正交实验表设计测试用例001

2022-01-04 16:31:29 423

转载 文件合并工具

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 407

原创 图像置换加密

任务描述背景  之前实训学习了如何对字符进行加密,其实图像也可以加密,如下图所示。其中,% 表示求余运算,a 和 b 是此加密方法的密钥,在本关,a 取 1、b 取 2。任务  本关任务是实现函数enImg(path1, path2)函数,其功能是利用 Arnold 置换方法对图像 1 进行加密,并将加密结果保存为图像 2, 图像 1 和图像 2 的路径分别为path1和path2。相关知识  参照之前关卡的程序。  利用上面的公式将图像 1 中所有像素均移动 1 次,称为一次置换。一次

2021-11-27 21:12:51 2622

原创 图像边缘检测

任务描述背景  边缘检测是数字图像处理领域的一个常用技术,被广泛应用于图像特征提取、目标识别、计算机视觉等领域。边缘可以理解为像素值发生跃迁的地方,而边缘检测就是要找到这样的地方。如下图所示,对左图进行边缘检测,结果为右图。基于卷积运算可实现边缘检测,对图像 1(设分辨率为 w×h)进行边缘检测的方法如下:  1)将图像 1 转换成灰度图,仍称为图像 1;  2)新建图像 2,图像 2 为灰度图,分辨率与图像 1 相同;  3)对于图像 1 中坐标为 (x,y) 的像素 p,求 p 的卷积 c

2021-11-27 19:05:22 1111

原创 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 16120 1

原创 python字符画

背景  顾名思义,字符画就是由字符组成的“画”,效果如下图所示。  注: 可以点击页面右上角“文件目录”图标,选择src/step3/answer/step3_2.txt文件,查看字符画效果,如下图所示。如下图所示,屏幕上显示的字符会占据一个矩形区域,若矩形区域为白色、字符为黑色,则当这个字符笔画较少时,区域看起来会比较“白”,反之则较“黑”,而这种“黑”“白”程度就形成了一种特殊的“灰度”。一个字符所占的矩形区域可以看作是图像中的一个像素,则一个 m 行、每行 n 个字符的文本就相当于一个分

2021-11-27 13:41:10 5358 3

原创 python灰度图

任务描述背景  真彩色图像和灰度图像是数字图像的两种常见类型,如下图所示,左图是真彩色图像,右图是灰度图像。  在真彩色图像中,像素颜色是 RGB 颜色,每个颜色包含 R、G、B 三个颜色分量。而在灰度图像中,像素颜色只有一个分量,称为灰度值,其取值是 [0,255] 之间的整数,灰度值越小,灰度越暗(越黑),反之越亮(越白)。任务  本关任务是补全程序,使程序能将一幅真彩色图像转换成灰度图像。说明如下:  1)求得的灰度值需要转换成整数,请使用round函数取整,如round(3.7)是

2021-11-27 13:10:11 4370

原创 图像亮度调整

任务描述背景  亮度调整是数字图像处理基本操作之一,如下图所示。题外话:该图是图像处理领域知名度最高的图像之一,被广泛用于图像处理技术效果的测试,图中人物叫 Lena。  根据 RGB 颜色的原理可知,要调整一个颜色的亮度,可以将红、绿、蓝三个颜色分量都加上相同的调整量 n,n 是 [−255,255] 之间的整数,例如,当 n 为 50 时,RGB颜色 (148,65,93) 变为 (198,115,143),效果见下图。  任务  本关任务是实现函数enhancePixel(r, g,

2021-11-24 10:56:21 3715 1

原创 扩展到可视字符

任务描述  之前程序只能处理 26 个小写英文字母,而不支持其它字符,如大写字母、数字、标点等。但这些字符在实际使用中也会大量出现,需要进行支持,才能更好的保护信息。  本关任务是对凯撒加密方法进行扩展,使其能够进一步处理其它英文字符。相关知识可视字符  实际上,在 ASCII 编码表中总共包含 95 个可视字符,即下图红框中的字符。可视字符是能够在屏幕上显示出来,或者说能看得见的字符。剩下的 33 个字符是控制字符,是看不见的,如删除符、换行符等。可视字符基本上涵盖了所有常见的英文字符,包括

2021-11-23 22:07:41 552

原创 解密一段文本

任务描述  本关任务是对密文进行解密,还原出明文。相关知识  其实解密和加密的原理是一样的,都是循环偏移,只不过加密时是正向移动,而解密时是反向移动。所以只要知道加密时的偏移量,解密时反着移动相同的偏移量,即循环移动 −key 位就可以了。编程要求  Begin-End 区间给出的是上关的过关程序,能对文本text进行凯撒加密。修改代码,使其能够实现解密。测试说明  例如,测试集 1 的输入为:cvvcem vqpkijv!测试集 1 的输出为:cvvcem vqpkijv! -&gt

2021-11-23 22:01:33 340

原创 【无标题】

任务描述  完成了一个字符的加密,对一整段文本进行加密就比较简单了,只要对文本里面的字符逐一处理。  本关任务是加密一段文本。相关知识  在实现时,有个地方要注意一下,enChar函数只能处理小写英文字母,但在文本里面可能还有其它字符,如大写字母、数字、标点符号、空格等。  所以,在处理文本中的某个字符x时,要先判断一下,如果x是小写字母(即’a’<=x<=‘z’),就使用enChar函数加密,否则不加密(保持不变)。编程要求  在 Begin-End 区间实现Caesar(tex

2021-11-23 21:58:04 362

原创 加密一个小写字母(续)

任务描述  上关方法并不能正确处理所有小写英文字母,比如’y’偏移 2 位得到的是’{’。这是因为在 ASCII 编码表中,‘y’向后移动 2 位对应的字符就是’{’。而凯撒加密规定,如果偏移时超过了字符’z’,就重新从’a’开始,所以’y’偏移 2 位得到的应该是’a’。这种偏移方式称为循环偏移。  本关任务是利用循环偏移方式加密一个小写英文字母。相关知识循环偏移的实现  先不考虑 ASCII 码,给 26 个小写字母重新编号,‘a’~'z’的编号依次是 0~25。设某个字符 x 的编号是 xi

2021-11-23 21:52:09 724

原创 加密一个小写字母

任务描述  凯撒加密的过程是依次对明文中的每个字符进行处理。对于每个字符,按字母表顺序进行一定偏移,就得到了对应的密文字符。  如下图,当偏移量为 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 1098

原创 python浮点数

背景  定点整数只能表示二进制整数,如 −11,而定点小数只能表示仅包含小数部分的二进制纯小数,如 −0.1。但更多时候,数值是既包含整数部分又包含小数部分的二进制混合数,如 −11.1。要表示混合数,需要使用浮点数。  在本关中,假设阶码和尾数都用 8 位补码表示,则对于一个二进制混合数 x,如果 x=0,则其规格化浮点数是全 0,否则按如下方法计算:至此,彻底解决了计算机如何用 0 和 1 表示二进制数中 +、− 和 . 的问题。任务  本关任务是实现ZhenToFu(z)函数,其功能是

2021-11-23 17:16:02 5580 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 2475

原创 python补码

任务描述背景  上关提到,计算机底层一般采用补码表示数值。真实值对应的补码计算过程如下:真实值为正时,补码等于原码,如 +1001 的 8 位补码是 00001001;真实值为负时,反码加 1 即得补码,也就是将原码的数字部分按位取反后再加 1,如 −1001 的 8 位原码是 10001001,按位取反是 11110110,再加 1 得补码 11110111。  如果你不太熟悉该过程,可以参照上面的例题尝试以下计算:  可以看到,+0 和 −0 的补码相同,都是全 0,而原码和反码没有这一性

2021-11-23 10:50:26 4223

原创 python反码

任务描述背景  原码的优点是容易理解、便于转换,缺点是符号位不能参与加法运算。例如,真实值 −1 和 +1 相加结果是 0,若用 4 位原码进行运算,过程如下:−1 和 +1 对应的原码分别是 1001 和 0001;1001+0001=1010;1010 对应的真实值是 −10,计算结果错误。  所以,如果原码的符号位参与运算,则会得到错误结果,如果不参与运算,则要对符号位进行额外处理,这会增加硬件实现的复杂程度,降低计算速度。而加法运算是计算机最为核心的一个功能,其速度在很大程度上决定了整个

2021-11-23 10:23:35 2579

原创 python原码

背景  我们知道,计算机底层利用二进制表示数值,更准确的说,应该是利用 0 和 1 进行表示。“01 表示”和“二进制”是两个不同的概念,因为 01 表示用到的符号只有 0 和 1 两个,再无其它,而在二进制中,除了 0 和 1 之外,还有 +、− 和 .。因此,要让计算机能够表示二进制数,还需要进行一些处理,这便产生了“码制”的概念,而“原码”便是一种“码制”。  原码可以解决 +、− 的问题,它用 0 表示 +,用 1 表示 −,如二进制数 −1001 对应的原码是 11001,记作 [−1001]

2021-11-23 10:05:31 1213

原创 对汉字加解密

#对汉字加解密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 832

原创 对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 324

原创 小写字母加解密

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 121

原创 加密一个小写字母

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 214

原创 解析IP地址

背景  互联网上分布着很多设备,如电脑、手机、智能手表等。设备与设备之间会互相通信,如你给朋友发送一条微信语音信息,其实就是你的手机在与朋友的手机进行通信。  但是,这条信息为什么会准确到达你朋友的手机,而不是其他设备?这是因为网络上的每台设备都有一个唯一的网络地址。如果把网络信息看作日常生活中的信件,网络地址就是信件上的收件人地址,有了这个地址,信息就能准确到达网络上的某一设备。  网络地址有不同类型,如 MAC 地址、IP 地址、URL 等,本关针对的是 IP 地址。IP 地址目前主要有两个版本:

2021-11-17 18:54:27 5028

原创 二进制加法

########## 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 315

原创 逻辑运算-与或非异或

########## 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 224

原创 二进制计量单位

########## 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 501

原创 二进制到十六进制

########## 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 149

原创 二进制到十进制-输入为正数

########## 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 241

原创 算法复杂度-数值信息——除二取余

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 664

原创 绘制迫击炮弹运行轨迹

########## 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 1355

原创 绘制拟合出的直线

作者:周竞文([email protected])、徐建军来源:国防科技大学期中考试试题(2019 秋)领域:数学难度:★★★★★任务描述背景任务相关知识编程要求测试说明任务描述背景  人们经常会碰到 (x,y) 形式的二维数据。例如,青少年的年龄为 x、身高为 y,多个青少年的数据就形成了一系列的 (x,y);城市人口数量为 x、平均房价为 y,多个城市就对应了多个 (x,y);学生每天学习本门课程的平均时长为 x、课程的最终成绩为 y,则班上同学也会对应着许多的 (x,y)。

2021-11-15 17:52:01 586

原创 绘制大西洋中脊剖面轮廓

绘制大西洋中脊剖面轮廓700任务要求参考答案评论162作者:周竞文([email protected])、李暾来源:国防科技大学期末考试试题(2017 秋)领域:海洋、地理难度:★★★★任务描述背景任务相关知识编程要求测试说明任务描述背景  大西洋中脊是位于大西洋的一条海底山脊。如下图左部(来源:WriteWork)所示,它从北冰洋一直延伸到非洲南端附近,全长约 1.6 万公里,差不多贯穿地球南北,规模远超陆地上任何山脉。据测量,大西洋中脊宽度约为 1000 ~1300

2021-11-15 16:16:04 1003

原创 绘制钟形曲线

作者:周竞文([email protected])来源:国防科技大学期末考试试题(2018 秋)领域:数学难度:★★★任务描述相关知识编程要求测试说明任务描述  正态分布又称高斯分布,是科学和工程中使用最广泛的一种概率分布,其函数表达式为:其中,μ 为数据样本的平均值,σ 为数据样本的标准差。该函数对应的曲线因形状如钟而被称为钟形曲线。  μ=0、σ=1 时的正态分布叫做标准正态分布,公式为:本关任务是绘制标准正态分布的函数曲线。相关知识  无。编程要求  补全 Begin

2021-11-15 15:22:24 2019

原创 ※ 绘制炸弹轨迹 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 1133

原创 ※ 绘制炸弹轨迹 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 1588

原创 ※ 绘制炸弹轨迹 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 1170

原创 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 2564

原创 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 647

原创 绘制炸弹轨迹 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 1008

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除