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

交流群里讨论热烈的题目 用Python轻松搞定它!_第1张图片

公众号后台回复“图书“,了解更多号主新书内容

     作者:叶庭云

     来源:修炼Python

祝各位读者朋友假期愉快!

交流群里讨论热烈的题目 用Python轻松搞定它!_第2张图片

一、前言

交流群里讨论热烈的题目 用Python轻松搞定它!_第3张图片

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

手机截图下来图片有点儿大~~,用 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)
交流群里讨论热烈的题目 用Python轻松搞定它!_第4张图片

题目如下:交流群里讨论热烈的题目 用Python轻松搞定它!_第5张图片看起来还挺容易的,字母--后面跟数字的话这个字母就 num 个,没有的话就一个。但实践出真知嘛,写代码测试才知道。

二、动手写代码

Python代码三行搞定?

str1 = "A3B5C8"
ls1 = [i if i.isalpha() else str1[index_ - 1] * (int(i) - 1) for index_, i in enumerate(str1)]
print("".join(ls1))
结果如下: 交流群里讨论热烈的题目 用Python轻松搞定它!_第6张图片

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

交流群里讨论热烈的题目 用Python轻松搞定它!_第7张图片

那这样呢?

import re 

def func(s):
    return "".join([c * int(count) for c, count in re.findall("(\D+)(\d+)", s)])

func("a10b3c10")

结果如下:

交流群里讨论热烈的题目 用Python轻松搞定它!_第8张图片这下对了吧,后面跟的数字大于 10 的话,输出结果也对了,可细心的群友又发现了问题,像 abc10 这样输出结果不对诶!如下所示:

交流群里讨论热烈的题目 用Python轻松搞定它!_第9张图片

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

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

结果如下:

叉会儿腰,终于搞定啦~~

交流群里讨论热烈的题目 用Python轻松搞定它!_第10张图片

代码如下:

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

print("".join(ls))

结果如下:

交流群里讨论热烈的题目 用Python轻松搞定它!_第11张图片

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


◆ ◆ ◆  ◆ ◆

麟哥新书已经在当当上架了,我写了本书:《拿下Offer-数据分析师求职面试指南》,目前当当正在举行活动,大家可以用相当于原价5折的预购价格购买,还是非常划算的:


数据森麟公众号的交流群已经建立,许多小伙伴已经加入其中,感谢大家的支持。大家可以在群里交流关于数据分析&数据挖掘的相关内容,还没有加入的小伙伴可以扫描下方管理员二维码,进群前一定要关注公众号奥,关注后让管理员帮忙拉进群,期待大家的加入。
管理员二维码:
猜你喜欢
● 卧槽!原来爬取B站弹幕这么简单● 厉害了!麟哥新书登顶京东销量排行榜!● 笑死人不偿命的知乎沙雕问题排行榜
● 用Python扒出B站那些“惊为天人”的阿婆主!● 你相信逛B站也能学编程吗

你可能感兴趣的:(sdl,openssh,ipad,列表,qml)