
Python
老铁6666
软件测试
展开
-
华为机试HJ8 合并表记录
HJ8 合并表记录-Python题目解题思路代码结果题目解题思路1、题目中没有说有多组输入,不考虑循环2、结果列表先初始化3、键值对的处理简单,合并按位置加和即可4、要记录出现过的键,最后输出要决定显示哪些键值对代码n = int(input())# 初始化数据表arr = [0 for i in range(n)]# 保存所有出现的键inds = []for i in range(n): k, v = list(map(int, input().split()))原创 2021-08-07 20:42:42 · 420 阅读 · 0 评论 -
华为机试HJ65 查找两个字符串a,b中的最长公共子串
HJ108 求最小公倍数-Python题目解题思路代码结果题目解题思路1、先考虑最短的字符串可能就是较长的字符串的子串的可能性2、从较短字符串中截取尽可能长的子字符串,再取较长字符串中查找,如果能找到,则就是最长字串。最长就是较短字符串的长度先-1,再-2…循环就出来了,再考虑截取的位置有些答案是从最短开始计算的,耗时会比较大。。。代码def func(): s1=input() s2=input() if len(s1)>len(s2): s1原创 2021-08-04 22:59:10 · 1003 阅读 · 0 评论 -
华为机试HJ63 DNA序列
HJ63 DNA序列-Python题目解题思路代码结果题目解题思路题目中干扰内容比较多,理解到要找GC出现的比例最高即可。。。注意截取指定长度的字符串,否则也会报错的。有的答案添加了try…估计是因为没控制好循环条件,导致字符串截取超出长度了代码in_str = input()num = int(input())res = ''# 最大比例ratio_max = 0# 从第1个字符开始,最后不够指定个数就不必循环了for i in range(len(in_str) -num +原创 2021-08-04 22:16:50 · 435 阅读 · 0 评论 -
华为机试HJ108 求最小公倍数
HJ108 求最小公倍数-Python题目解题思路代码结果题目解题思路1、辗转相除求最大公约数。2、最小公倍数 = 两数之积 / 最大公约数代码# 辗转相除,求最大公约数def maxgys(a, b): if a < b: a, b = b, a while a %b != 0: a, b = b, a % b# print(a)# print(b) return bia, ib = li原创 2021-07-31 10:49:48 · 314 阅读 · 0 评论 -
华为机试HJ30 字符串合并处理
HJ30 字符串合并处理-Python题目解题思路代码结果题目解题思路1、先处理好转换对应关系的字典,转换规则见代码…其实就是严格按照题目要求逐步转换的2、输入的字符串先合并,再分别从奇偶位置取字符,成列表。3、两个列表交替,每次取一个字符,可以操作转换的转换,不在操作范围的不处理,合入结果字符串即可。直到两个列表都处理完代码import sysdic = {}hdic = {"0": "0", "1": "1", "2": "2", "3": "3", "4": "4", "5": "原创 2021-07-30 23:38:05 · 287 阅读 · 0 评论 -
华为机试HJ29 字符串加解密
HJ29 字符串加解密-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环处理2、根据题意组织字符和加密后字符的字典,这里细心些,一次搞定,检查会很麻烦。。。代码def func(): enc = {"a": "B", "b": "C", "c": "D", "d": "E", "e": "F", "f": "G", "g": "H", "h": "I", "i": "J", "j": "K", "k": "L", "l": "M", "m": "原创 2021-07-30 21:58:22 · 356 阅读 · 0 评论 -
华为机试HJ21 简单密码
HJ21 简单密码-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环处理2、条件不多,但是判断和替换会增加代码量,使用字典完成字符和加密后字符的对应关系设置3、输入字符串,逐个字符替换即可。代码def func(): dic = {"a": "2", "b": "2", "c": "2", "d": "3", "e": "3", "f": "3", "g": "4", "h": "4", "i": "4", "j": "5", "k": "5原创 2021-07-30 21:22:32 · 319 阅读 · 0 评论 -
华为机试HJ33 整数与IP地址间的转换
HJ33 整数与IP地址间的转换-Python题目解题思路代码结果题目解题思路1、整数转2进制:bin(x)2、2进制转整数:int(x, 2)3、字符串右对齐的左补全:s.rjust(补全到多少位数, “补全用的字符”)代码def func(): res = "" # 用点号切割 for i in list(map(int, input().split("."))): # 各网段转2进制后,用0补全8位 res += str(bin(原创 2021-07-26 22:23:27 · 506 阅读 · 0 评论 -
华为机试HJ27 查找兄弟单词
HJ27 查找兄弟单词-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、首先定义一个兄弟单词的判断函数:相等则返回False;字符串中的字符排序后相同则为兄弟单词3、循环所有待查字符串,统计所有兄弟单词4、所有兄弟单词,按字典排列。这是题目里的要求,所以审题很重要,这里卡了我3分钟。。。5、输出兄弟单词的数目6、输出指定序号的兄弟单词(序号要 -1),没有则不输出。这也是个细节要求代码def isbrother(sa, sb): # 相同的字符串不是兄弟单原创 2021-07-26 21:52:17 · 419 阅读 · 0 评论 -
华为机试HJ22 汽水瓶
HJ22 汽水瓶-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、以剩下的空瓶数大于2个为条件进行循环,每次都是3换1,再计算剩下的空瓶数。3、最后剩下2个空瓶的话,可以再喝1瓶4、记得:n=0,表示结束代码def func(): n = int(input()) res = 0 # 剩余空瓶数 resolved = 0 # 如果输入不符合指定范围,直接返回 if not 1 <= n <= 100:原创 2021-07-26 21:08:11 · 467 阅读 · 0 评论 -
华为机试HJ23 删除字符串中出现次数最少的字符
华为机试HJ23 删除字符串中出现次数最少的字符-Python题目解题思路代码结果题目解题思路1、输入的字符串,循环每个字符,查找字符串最少的,计入数组,记录最少次数2、最少次数相同的,一起记录;持续查找次数相对更少的,替换掉发现的字符列表和最少次数。代码def func(): s = input() res = [] mincount = 20 for c in s: # 已经统计过的字符,跳过 if res.count(c) =原创 2021-07-25 20:59:05 · 250 阅读 · 0 评论 -
华为机试HJ15 求int型正整数在内存中存储时1的个数
HJ15 求int型正整数在内存中存储时1的个数-Python题目解题思路代码结果代码优化题目解题思路1、输入转整数,用Python的bin方法转为二进制,再按字符串逐个检查等于1 的个数优化,代码res = 0for c in str(bin(int(input()))): if c == "1": res += 1print(res)结果代码优化print(str(bin(int(input()))).count("1"))...原创 2021-07-25 20:46:31 · 250 阅读 · 0 评论 -
华为机试HJ13 句子逆序
HJ11 数字颠倒-Python题目解题思路代码结果题目解题思路1、split后倒转,转list,再用空格间隔后输出列表倒序用reversed,要再转list代码# split后倒转,转list,再用空格间隔后输出print(" ".join(list(reversed(input().strip().split()))))结果...原创 2021-07-25 20:31:08 · 186 阅读 · 0 评论 -
华为机试HJ12 字符串反转
HJ12 字符串反转-Python题目解题思路代码结果题目解题思路1、输入直接倒序输出即可。。。和HJ11一样的。因为由input()函数读取到的就是字符串代码print(input()[::-1])结果原创 2021-07-25 20:14:11 · 191 阅读 · 0 评论 -
华为机试HJ11 数字颠倒
HJ11 数字颠倒-Python题目解题思路代码结果题目解题思路1、输入,转字符串,倒序输出即可。。。python可以很取巧代码print(str(input()[::-1]))结果原创 2021-07-25 20:09:56 · 332 阅读 · 1 评论 -
华为机试HJ99 自守数
HJ99 自守数-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、先创建一个判断是否素数的函数以备调用:素数判断,从1以后开始,如果到该数一半的位置有可以整除的数,则不是素数。3、从找到的所有素数中查找到可以加和后得到n 的素数组合,并计算差值,找到最小的素数组合即可代码while True: try: n = int(input()) cnt = 0 # 从0到n for i in range(n原创 2021-07-25 19:59:56 · 473 阅读 · 0 评论 -
华为机试HJ69 矩阵乘法
HJ69 矩阵乘法-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、主要是结果数组的初始化和各个元素的计算,分清楚行列。单维数组的初始化:[0 for i in range(x)]多维数组的初始化:[[0 for i in range(z)] for i in range(x)]3、代码def func(): x = int(input().strip()) y = int(input().strip()) z = int(input().s原创 2021-07-25 19:46:33 · 474 阅读 · 0 评论 -
华为机试HJ60 查找组成一个偶数最接近的两个素数
HJ60 查找组成一个偶数最接近的两个素数-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、先创建一个判断是否素数的函数以备调用:素数判断,从1以后开始,如果到该数一半的位置有可以整除的数,则不是素数。3、从找到的所有素数中查找到可以加和后得到n 的素数组合,并计算差值,找到最小的素数组合即可代码def issushu(n): # 从2开始到输入数值一半+1的位置 for i in range(2, n // 2 + 1): # 如果能被原创 2021-07-24 12:15:33 · 349 阅读 · 0 评论 -
华为机试HJ59 找出字符串中第一个只出现一次的字符
HJ59 找出字符串中第一个只出现一次的字符-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、一个数组sc,记录字符和对应出现的次数;一个字符串ca,记录出现过的字符。3、从输入的字符串中循环读取字符,没有在ca中出现的,是第一次出现的,就放入数组sc,并合入字符串ca;如果在ca中有,则是多次出现了,直接在数组对应key的值上加1,不必放入字符串ca了。4、最后循环数组sc,返回第一个值是1的key,即字符。没有找到,则返回-1代码def func(): s原创 2021-07-20 23:18:10 · 432 阅读 · 0 评论 -
华为机试HJ55 挑7
HJ55 挑7-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、循环查找到输入数值即可:字符串查找用in,能否整除——求余后判断是否==0。3、最后打印找到的数字的列表长度代码def func(): n = int(input()) # 结果数组 res = [] for i in range(7, n + 1): # 数值中有7,或者可以被7整除 if "7" in str(i) or原创 2021-07-20 22:59:50 · 251 阅读 · 0 评论 -
华为机试HJ90 合法IP
HJ90 合法IP-Python题目解题思路代码结果题目解题思路1、有多组输入,需要循环2、输入字符串先点分,不是4个部分的情况为异常情况,打印NO、退出。3、每个点分后的部分,判断是否在0-255之间,判断为异常情况,打印NO、退出。4、最后,无异常情况发现,打印YES、退出代码import redef func(): s = input() l = s.split(".") # 点分出不是4个部分 if len(l) != 4:原创 2021-07-17 21:28:50 · 535 阅读 · 0 评论 -
华为机试HJ96 表示数字
HJ96 表示数字-Python题目解题思路代码结果题目解题思路1、有多组输入,需要循环2、字符串挨个拿出,判断是否为数字。是数字,暂时保存的一个字符串中;不是数字,如果数字暂存字符串有内容,则前后加星号,先合并,再处理当前的非数字字符。最后多个字符为数字的话,最后再处理一次。代码def func(): s = input() # 结果字符串 res = "" # 保存找到的数字类型字符 nc = "" for c in s:原创 2021-07-17 20:40:06 · 592 阅读 · 0 评论 -
华为机试HJ102 字符统计
HJ102 字符统计-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、字符串中逐个拿出字符,在新字符串中放入,如果已经存在就不放入;统计在原字符串中出现的次数,字符、ASCII码和出现次数一起作为字典项写入列表。3、双重循环列表,按照出现次数从大到小,如果次数相等,则比较ASCII码——用列表是为了这里的循环和排序4、列表逐个拿出,合并为结果字符串。打印代码def func(): s = input() # 字段,按照字符保存个数 s原创 2021-07-15 22:46:40 · 355 阅读 · 0 评论 -
华为机试HJ14 字符串排序
HJ14 字符串排序-Python题目解题思路代码结果题目解题思路1、题目没有说明是多组输入,不需要循环2、第一行为后续字符串的个数,先拿出来,转为int类型,然后循环该数值的次数读取指定次数的输入,添加至列表3、双重循环列表,比较字符大小,小的考前。代码n = int(input())# 字符串的列表l = []# 按照第一行的数值,读取指定行数的输入,添加至字符串列表for i in range(n): l.append(input())# 双重循环,判断后边的字原创 2021-07-15 22:00:14 · 210 阅读 · 0 评论 -
华为机试HJ10 字符个数统计
HJ10 字符个数统计-Python题目解题思路代码结果题目解题思路1、题目没有说明是多组输入,不需要循环2、循环读取输入字符串中的字符,转换ASCII码(内置ord函数)后判断是否在0-127之间且不是换行符的,合入新字符串3、直接打印新字符串的长度代码import oss = input()# 新字符串,保存合格字符sn = ""# 循环读取输入字符串for c in s: # ASCII码在指定范围 if 0 <= ord(c) <= 127原创 2021-07-15 21:49:47 · 263 阅读 · 0 评论 -
华为机试HJ9 提取不重复的整数
HJ9 提取不重复的整数-Python题目解题思路代码结果题目解题思路1、题目没有说明多组输入,不需要循环2、字符串读取后,倒序挨个拿出,放在一个新的字符串中(当这个新字符串中不存在该字符时)代码s = input()sa = ""res = 0for c in s[::-1]: if sa.count(c) == 0: sa += cprint(sa)结果...原创 2021-07-15 21:37:44 · 215 阅读 · 0 评论 -
华为机试HJ45 名字的漂亮度
HJ45 名字的漂亮度-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、根据第一次读取的整数取后续指定个数的输入3、每个字符串,先按照字符计数,将数量从多到少排序,最高的数量加权26起,后续的加权降1,乘积后加和代码def func(): n = int(input()) # 按照指定行数读取 for i in range(n): # 保存出现的字符和个数 res = {} # 保存出现过原创 2021-07-14 23:22:47 · 324 阅读 · 0 评论 -
华为机试HJ46 截取字符串
HJ46 截取字符串-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、分别取两次输入,第一次为字符,第二次为int类型,返回字符串截取结果代码def func(): s = input() l = int(input()) print(s[:l]) while True: try: func() except: break结果...原创 2021-07-14 22:58:48 · 275 阅读 · 0 评论 -
华为机试HJ40 统计字符
HJ40 统计字符-Python题目解题思路代码结果题目解题思路1、多组输入,需要循环2、注入字符串,循环判断:英文字符在a-z或者A-Z之间,数字在0-9之间,空格直接判断,其他字符为总长度减去前三种字符类型的长度代码import osdef func(): s = input().replace(os.linesep, "") nc = 0 ne = 0 nd = 0 for c in s: if "a" &l原创 2021-07-14 22:42:37 · 203 阅读 · 0 评论 -
华为机试HJ38 求小球落地5次后所经历的路程和第5次反弹的高度
HJ38 求小球落地5次后所经历的路程和第5次反弹的高度-Python题目解题思路代码题目解题思路1、没有说有多组输入,不需要循环2、第一次落地,和第二次落地后经历的高度是一样的(高度为一半,一起一落)3、以后每次的高度为前一次的一半代码h = float(input())ah = hth = hfor i in range(4): ah += th th = th / 2 th = th / 2 print(ah)print(th)..原创 2021-07-14 22:24:36 · 199 阅读 · 0 评论 -
华为机试HJ36字符串加密
HJ36字符串加密-Python题目解题思路代码题目解题思路1、多组输入,按一般处理办法,循环2、第一行,密钥,处理办法:转大写后,直接合并26个大写字母,去重,再截取26位,得到密钥;然后组合大写字母和小写字母分别对应密钥的字符,得到完整密钥的字母对应关系3、第二行,加密内容,逐个字符处理,符合密钥对应关系的进行置换,不符合的保持原字符。最后,输出加密后的字符串代码def func(): ki = input() ki2 = "" k = "" an = "原创 2021-07-13 23:43:09 · 676 阅读 · 0 评论 -
华为机试HJ34图片整理
HJ34图片整理-Python考察内容:ASCII和字符互相转换题目功解题思路代码考察内容:ASCII和字符互相转换ord( c ) : 字符转ASCII码chr( a ) : ASCII码转字符题目我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下功解题思路先将输入的字符串挨个转换成ASCII,组成列表,排序列表,再按照排序后的列表,逐个转换成字符输出打印代码def func(): s = input() ns原创 2021-07-13 23:35:09 · 436 阅读 · 0 评论 -
python操作MySQL
Python操作MySQL数据库驱动MySQL官方驱动MySQL官方驱动_连接池PyMySQLPyMySQL_连接池驱动两个常用的模块:MySQL官方驱动pip install mysqlpyhttps://pypi.org/project/mysqlpy/MySQL官方驱动_连接池pip install pymysql-poolhttps://pypi.org/project...原创 2019-03-31 15:49:23 · 240 阅读 · 0 评论 -
Python环境依赖包迁移
Python环境依赖包迁移源机器1、依赖关系导出2、下载所有安装包目标机器1、创建并激活虚拟环境2、安装虚拟环境源机器1、依赖关系导出导出依赖关系到一个文档里 C:\python3.7.2\python.exe -m pip freeze > D:\python\requirements.txt文档的内容大致为:asn1crypto==0.24.0certifi==2019...原创 2019-03-31 12:43:02 · 1852 阅读 · 0 评论 -
Python3.7.中使用virtenv替代venv和virtualenv
venv + virtualenv = virtenvvenv的升级版virtenvPython APICommand line APIvenv什么情况下使用venv的升级版virtenvPython3.3以上的版本通过venv模块原生支持虚拟环境,可以代替Python之前的virtualenv我在Python3.7.2上没有安装venv,但是找到了virtenv:virtenv通过一个简单...原创 2019-03-26 22:31:37 · 1944 阅读 · 0 评论 -
一次报错引发的pip安装之旅
这里写自定义目录标题步子不要太大,学习还是要稳扎稳打- -!Anaconda对SSL的不支持被放弃的ez_setup.py厉害的get-pip.py步子不要太大,学习还是要稳扎稳打- -!Anaconda对SSL的不支持一切的出发点,始于这个报错,简单的调用request发了个https请求:urllib3.exceptions.SSLError: Can’t connect to HTT...原创 2019-03-17 11:21:12 · 1023 阅读 · 0 评论 -
Python之pip命令
Pillow使用报错引发的一次总结pip安装和校验命令命令的帮助pip安装和校验Python 2.7.9 + 或 Python 3.4+ 以上版本都自带 pip 工具。安装步骤参考:http://www.runoob.com/w3cnote/python-pip-install-usage.htmlpip --version 可以检验是否安装成功在引入包后使用时报错的处理,参考ht...原创 2019-03-16 20:42:33 · 1373 阅读 · 0 评论 -
Python中十进制、八进制、二进制、十六进制的转换
这里写自定义目录标题内置参数优先!进制简述相互转换内置参数优先!这里不秀编程技巧,只是记录下这些转换的办法。进制简述十进制:就是最常见的数值类型,123八进制:0o173,数字0加字母o(october)开头二进制:0b1111011,数字0加字幕b(binary)开头十六进制:0x7b,数字0加字母x(hex)开头相互转换先转换为十进制// 要转换,需要提供相应进制prin...原创 2019-03-14 15:59:06 · 4986 阅读 · 0 评论 -
Python time()函数返回的是1970-1-1 00:00:00 到现在的秒数
python 中time.time()获取到的是从1970-1-1 00:00:00 到现在的秒数(小数位还有6位)。需要获取毫秒数的时候:int(time.time()*1000),在一些有实效性要求的请求中可能需要这个与时间戳作用一样的毫秒数来标识一个精确的时间点。仅获取毫秒,则可以使用int(time.time()*1000)-int(time.time())*1000...原创 2018-11-27 17:21:30 · 6898 阅读 · 0 评论