吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1275|回复: 13
收起左侧

[求助] 【python】重复度很高的两段代码精简的问题

[复制链接]
MyModHeaven 发表于 2022-6-11 08:44
本帖最后由 MyModHeaven 于 2022-6-11 08:45 编辑

Snipaste_2022-06-11_08-24-16.png

  • 如上图,上下两部分不同的都已标注(少标了一个处),共有三种,内容分别是:checkIn/checkOut, tabCheckIn/tabCheckOut, '入库'/'出库'
  • 函数可以提高代码的复用性,但是引用同一个函数的时候,变化的是变量。像这种情况,变化的是一条语句中间的某个对象,该怎么弄?(我还碰到过,几段重复性很高的代码中,变化的是某条语句的有无,这又该怎么搞?)
  • 代码如下:
[Python] 纯文本查看 复制代码
        item = self.checkIn.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "日期"))
        item = self.checkIn.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "编码"))
        item = self.checkIn.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "名称"))
        item = self.checkIn.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "内存"))
        item = self.checkIn.horizontalHeaderItem(4)
        item.setText(_translate("MainWindow", "颜色"))
        item = self.checkIn.horizontalHeaderItem(5)
        item.setText(_translate("MainWindow", "计量单位"))
        item = self.checkIn.horizontalHeaderItem(6)
        item.setText(_translate("MainWindow", "单价"))
        item = self.checkIn.horizontalHeaderItem(7)
        item.setText(_translate("MainWindow", "数量"))
        item = self.checkIn.horizontalHeaderItem(8)
        item.setText(_translate("MainWindow", "金额"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabCheckIn), _translate("MainWindow", "入库"))
        item = self.checkOut.horizontalHeaderItem(0)
        item.setText(_translate("MainWindow", "日期"))
        item = self.checkOut.horizontalHeaderItem(1)
        item.setText(_translate("MainWindow", "编码"))
        item = self.checkOut.horizontalHeaderItem(2)
        item.setText(_translate("MainWindow", "名称"))
        item = self.checkOut.horizontalHeaderItem(3)
        item.setText(_translate("MainWindow", "内存"))
        item = self.checkOut.horizontalHeaderItem(4)
        item.setText(_translate("MainWindow", "颜色"))
        item = self.checkOut.horizontalHeaderItem(5)
        item.setText(_translate("MainWindow", "计量单位"))
        item = self.checkOut.horizontalHeaderItem(6)
        item.setText(_translate("MainWindow", "单价"))
        item = self.checkOut.horizontalHeaderItem(7)
        item.setText(_translate("MainWindow", "数量"))
        item = self.checkOut.horizontalHeaderItem(8)
        item.setText(_translate("MainWindow", "金额"))
        self.tabWidget.setTabText(self.tabWidget.indexOf(self.tabCheckOut), _translate("MainWindow", "出库"))

免费评分

参与人数 2吾爱币 +2 热心值 +2 收起 理由
qazmc1314 + 1 + 1 谢谢@Thanks!
motto + 1 + 1 用心讨论,共获提升!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

child_lu 发表于 2022-6-11 08:51
1.带形参的函数
2.继承
忆白学渣 发表于 2022-6-11 08:51
 楼主| MyModHeaven 发表于 2022-6-11 08:57
忆白学渣 发表于 2022-6-11 08:51
把变量都弄成数组,直接循环

变化的不全是变量呢,比如:item = self.checkIn.horizontalHeaderItem(0) 变成了 item = self.checkOut.horizontalHeaderItem(0),这该怎么办啊?
忆白学渣 发表于 2022-6-11 09:01
我感觉不太好办哈哈,菜鸟建议,加个判断,不同情况进不一样的循环
带色的小马甲 发表于 2022-6-11 09:26
这样试试

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
MyModHeaven + 1 + 1 我很赞同!

查看全部评分

大爱九月 发表于 2022-6-11 10:08
可以考虑弄三个数组
{0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8}
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}  0是checkIn   1是checkOut
{"日期","编码"........)
全都一一对应,然后弄一个循环
判定第二个数组是0就checkIN,第一个数组是8了就多一个setTabText

大爱九月 发表于 2022-6-11 10:12
大爱九月 发表于 2022-6-11 10:08
可以考虑弄三个数组
{0,1,2,3,4,5,6,7,8,0,1,2,3,4,5,6,7,8}
{0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1}  0 ...

如果规则比较固定,直接两个数组就可以
{0,1,2,3,4,5,6,7,8}
{"日期",“编码”.....,"金额"}

然后固定循环18次(从1-18),小于等于9就是CheckIn,大于9就checkOut,循环次数%9==0就多一个setTabText
VoidreaverArer 发表于 2022-6-11 10:15
设置函数,带形参,然后引用即可
三滑稽甲苯 发表于 2022-6-11 12:49
MyModHeaven 发表于 2022-6-11 08:57
变化的不全是变量呢,比如:item = self.checkIn.horizontalHeaderItem(0) 变成了 item = self.checkOut. ...

函数也可以看成变量,放在list/tuple里
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 10:31

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表