交流群里讨论热烈的题目 用Python轻松搞定它!

简介: 学编程,很多题目可能并不像看起来那样简单,实践出真知,动手才能发现问题,多思考才能解决问题,切忌眼高手低!


一、前言



在叶庭云混迹的一个学习气氛挺好的交流群里,某一天一位铁子求教一道题,引发了群友们的热烈讨论,一起来看看吧!


手机截图下来图片有点儿大~~,用 opencv resize 处理一下,然后用电脑 QQ 截图,还有用马赛克保护群友头像隐私。


img1=cv.imread(r"D:\test\pic\jietu_01.jpg")
img1=cv.resize(img1, dsize=None, fx=0.5, fy=0.5)
img2=cv.imread(r"D:\test\pic\jietu_02.jpg")
img2=cv.resize(img2, dsize=None, fx=0.5, fy=0.5)
cv.imshow("img1", img1)
cv.imshow("img2", img2)
cv.waitKey(0)


题目如下:



看起来还挺容易的,字母–后面跟数字的话这个字母就 num 个,没有跟数字就一个。但实践出真知嘛,写代码测试才知道。


二、动手写代码


Python代码三行搞定?


str1="A3B5C8"ls1= [iifi.isalpha() elsestr1[index_-1] * (int(i) -1) forindex_, iinenumerate(str1)]
print("".join(ls1))


结果如下:


可事情好像没有那么简单,当后面跟的数字大于 10 的话,输出结果就不对了,如下所示:



那这样呢?


importredeffunc(s):
return"".join([c*int(count) forc, countinre.findall("(\D+)(\d+)", s)])
func("a10b3c10")


结果如下:


这下对了吧,后面跟的数字大于 10 的话,输出结果也对了,可细心的群友又发现了问题,像 abc10 这样输出结果不对诶!如下所示:



数字插入的位置有无,是否大于 10 都需要考虑到,不然输出会有问题,可能不能写得那么简洁优雅了,简单粗暴干掉它!


str2="a10b10c"ls= []
foriinrange(len(str2)):
num=""ifstr2[i].isalpha():   # 是字母# 查找后面跟的数字  拼出来forjinrange(i+1, len(str2)):
ifstr2[j].isdigit():
num+=str2[j]
# print(num)# 开始又是字母了   breakelse:
break# 字母重复 然后添加进列表 没有重复 直接添加ifnum:
ls.append(str2[i] *int(num))
else:
ls.append(str2[i])
# 输出print("".join(ls))


结果如下:



终于搞定啦~~



代码如下:


s="ddeeeeaaddccccc"# 2 4 2 2 5start_str=s[0]  # 初始字母count, ls=0, []
# 遍历foriinrange(len(s)):
ifs[i] ==start_str:  # 还是等于初始字母是  统计个数count+=1# 到最后一个字母  这里添加 因为后面已经无了ifi==len(s) -1:
ls.append(start_str+str(count))
else:
# 已经开始不为初始字母了  之前那个添加到列表# 更新初始字母和countls.append(start_str+str(count))
start_str, count=s[i], 1print("".join(ls))


结果如下:



总结:学编程,很多题目可能并不像看起来那样简单,实践出真知,动手才能发现问题,多思考才能解决问题,切忌眼高手低!

目录
相关文章
|
6月前
|
SQL 数据采集 算法
LeetCode 题目 66:加一【python5种算法实现】
LeetCode 题目 66:加一【python5种算法实现】
|
2月前
|
Java C++ Python
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
【面试宝典】深入Python高级:直戳痛点的题目演示(下)
|
2月前
|
设计模式 Unix Python
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
【面试宝典】深入Python高级:直戳痛点的题目演示(上)
|
6月前
|
SQL 算法 数据可视化
leetcode题目69:x的平方根【python】
leetcode题目69:x的平方根【python】
leetcode题目69:x的平方根【python】
|
6月前
|
存储 SQL 算法
leetcode题目70:爬楼梯【python】
leetcode题目70:爬楼梯【python】
|
6月前
|
存储 SQL 算法
leetcode题目68:文本左右对齐【python】
leetcode题目68:文本左右对齐【python】
|
6月前
|
存储 SQL 算法
LeetCode 题目 65:有效数字(Valid Number)【python】
LeetCode 题目 65:有效数字(Valid Number)【python】
|
6月前
|
SQL 算法 数据可视化
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
LeetCode题目92:反转链表ll 【python 递归与迭代方法全解析】
|
6月前
|
SQL 算法 数据可视化
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
LeetCode题目99:图解中叙遍历、Morris遍历实现恢复二叉树搜索树【python】
|
6月前
|
数据采集 SQL 算法
LeetCode题目75:颜色分类【python】
LeetCode题目75:颜色分类【python】