【每周一坑】新个税计算器 + 【解答】数字水印

简介: 详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

根据全国人大常委会关于修改个人所得税法的决定,10月1日起,纳税人的工资、薪金所得将适用新的费用减除标准(通常说的“起征点”),由每月3500元提高到每月5000元,并适用新的个税税率表。


旧税率



新税率



那么新起征点和税率的实施,究竟可以让工薪阶层多拿多少钱?这就是我们今天的题目。


实现一个个税计算器
【输入】税前收入五险一金
【输出】新旧两种税率下的应纳税款税后收入


个税计算公式

应纳税所得额 = 税前收入 - 五险一金 - 起征点

应纳税额 = 应纳税所得额 × 税率 - 速算扣除数


效果演示:



附加题:

做成一个带窗口界面的程序。(GUI 模块使用可参考 tkinter - Python的门面担当


详细解答和参考代码将在下次栏目中给出,也可以其他同学在留言中的代码。

期待各位同学提交解答。

提交代码可以使用 paste.ubuntu.com

codeshare.io 等代码分享网站,只需将代码复制上去保存,即可获得一个分享地址,非常方便。



【解答】图像的指纹:数字水印


上一次的题目 【每周一坑】图像的指纹:数字水印 + 【解答】鸡兔同笼 中已经给出了基本的原理和开发思路,这里提供一份我的参考解答:


添加信息:


# coding:utf-8
from PIL import Image
# 字符串转二进制字符列表
def get_bits(s):
    bs = ''
    for c in s:
        bs += bin(ord(c))[2:].zfill(8)
    return list(bs)
def add_info(pic, info):
    # 读取图片
    img = Image.open(pic).convert('RGB')
    width, height = img.size
    # 转换加密字符
    bits = get_bits(info)
#     print(bits)
    # 添加信息
    pixels = list(img.getdata())
    new_pixel_list = []
    # 遍历图片像素
    for pixel in pixels:
        new_pixel = []
        # 每个像素3个颜色值
        for c in pixel:
            # 取出末位
            c = c // 2 * 2
            # 从加密字符串中取出第一位加在颜色值上
            if len(bits) > 0:
                c += int(bits.pop(0))
            new_pixel.append(c)
        # 把新的像素值加到列表中
        new_pixel_list.append(tuple(new_pixel))
    # 创建同样大小的新图片
    img_new = Image.new("RGB", (width, height))
    # 添加像素值
    img_new.putdata(data=new_pixel_list)
#     img_new.show()
    # 保存图片
    img_new.save('img/crypto.png')
add_info('img/new.png', 'learn python with crossin')


提取信息:


# 将二进制字符列表转为字符串
def decode_bits(bits_list):
#     print(bits_list)
    s = ''
    for bits in bits_list:
        c = chr(int(bits, 2))
        s += c
    return s
def get_info(pic):
    # 读取图片
    img = Image.open(pic).convert('RGB')
    # 提取信息
    pixels = list(img.getdata())
    bits_list = []
    bits = ''
    for pixel in pixels:
        for c in pixel:
            # 获取每个颜色的末位值拼接
            bits += str(c % 2)
            # 每8个字符进行处理
            if len(bits) == 8:
#                 print(bits)
                if bits == '00000000':
                    # 如果遇到全0就结束并返回解码值
                    return decode_bits(bits_list)                # 添加二进制字符串到列表中
                bits_list.append(bits)
                bits = ''
get_info('img/crypto.png')


方法有很多,我这里只是一个比较简单的实现方法。


也可以参考其他同学的实现:

@Mr. wang 使用了 列表解析 和 zip,代码更简洁;

@怀天远途 计算了可以添加信息的空间大小;

@黄涛 使用了 opencv;@☁ 使用了 numpy;

@花儿笑了 在单独运行解码部分会有点问题;

@鑫HEAD、@Schnee 也提交了解答,不过页面似乎过期了。


感谢各位同学的参与。

期待在下一期中看到你的代码!


回复关键字:

python :零基础入门课程目录

新手 :初学者指南及常见问题

资源 :超过500M学习资料网盘地址

项目 :十多个进阶项目代码实例

如需了解视频课程及答疑群等更多服务,请号内回复 码上行动

代码相关问题可以在论坛上发帖提问 bbs.crossincode.com

推荐阅读:

抖音 |押韵工具 | 虎扑 | 如何debug | 苹果 | 查天气 | 我用Python | 知乎 | 排序 | 电影票 | 技术宅 | 单词表 | 新手建议

相关文章
|
开发工具 git
Git commit操作之后找不到提交记录
Git commit操作之后找不到提交记录
|
安全 架构师 编译器
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
因为X86及其CISC架构生态的封闭性,中国市场对未来处理器的选择,将是更开放、更模块化的RISC架构。 鲲鹏处理器就是符合这个潮流的创新产品和生态,将直面一系列挑战,和Apple一样赢得这场挑战,来扭转X86的封闭性的乾坤,创造出中国的处理器新生态。
1790 0
鲲鹏开发重点-–扭转x86乾坤的挑战,ARM64内存模型
|
弹性计算 运维 Linux
地图在人物不在的存档修复
地图在人物不在的存档修复
|
机器学习/深度学习 算法
GBDT算法超参数评估(一)
GBDT(Gradient Boosting Decision Tree)是一种强大的机器学习技术,用于分类和回归任务。超参数调整对于发挥GBDT性能至关重要。其中,`n_estimators`是一个关键参数,它决定了模型中弱学习器(通常是决策树)的数量。增加`n_estimators`可以提高模型的复杂度,提升预测精度,但也可能导致过拟合,并增加训练时间和资源需求。
|
监控 算法 安全
如何优化区块链跨链效率
**摘要:** 面对跨链效率挑战,本文探讨技术优化和策略以提升区块链跨链性能。统一跨链标准、优化共识算法、利用侧链和中继链以及分布式账本技术是关键技术手段。同时,加强合作、优化激励机制和确保监管合规也是策略重点,旨在实现高效、稳定的跨链互联。
|
存储 固态存储 安全
阿里云服务器2核8G、4核16G、8核32G配置活动价格及实例规格选择参考
阿里云服务器2核8G、4核16G、8核32G配置有三十几种实例规格可选,2024年,经济型e、通用算力型u1、通用型g7和通用型g8y实例2核8G、4核16G、8核32G配置的云服务器有优惠,尤其是经济型e实例4核16G3M带宽100G ESSD Entry云盘配置,目前价格只要32.25元/1个月、96.75元/3个月,下面是2024年截至目前阿里云服务器2核8G、4核16G、8核32G配置最新活动价格及选择建议参考。
阿里云服务器2核8G、4核16G、8核32G配置活动价格及实例规格选择参考
|
算法 C++ 开发者
【Qt 常用枚举】Qt TextFormat 枚举的深入解析
【Qt 常用枚举】Qt TextFormat 枚举的深入解析
502 0
|
资源调度 JavaScript 前端开发
|
机器学习/深度学习
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
YOLOv8改进 | 主干篇 | EfficientViT高效的特征提取网络完爆MobileNet系列(轻量化网络结构)
984 0
|
数据采集 存储 关系型数据库
Python爬虫技术的应用案例:聚焦热点话题与趋势分析
Python爬虫技术的应用案例:聚焦热点话题与趋势分析