查看单个帖子
旧 2025-11-13, 16:39     #2
478552055@qq.com 的头像
478552055@qq.com 478552055@qq.com 当前离线
正式会员
等级: 三袋长老
级别:20 | 在线时长:485小时 | 升级还需:40小时级别:20 | 在线时长:485小时 | 升级还需:40小时
 
Uid: 687332
注册日期: 2020-05-04, 18:50
年龄: 27
帖子: 176
感谢: 33
4 个帖子获得 4 次感谢
现金: 243金币
资产: 243金币
声望: 10 478552055@qq.com 向着好的方向发展
478552055@qq.com 478552055@qq.com 当前离线
正式会员
等级: 三袋长老
级别:20 | 在线时长:485小时 | 升级还需:40小时级别:20 | 在线时长:485小时 | 升级还需:40小时
478552055@qq.com 的头像
 
Uid: 687332
注册日期: 2020-05-04, 18:50
年龄: 27
帖子: 176
感谢: 33
4 个帖子获得 4 次感谢
现金: 243金币
资产: 243金币
声望: 10 478552055@qq.com 向着好的方向发展
默认

引用:
作者: zhouyuan_2002 查看帖子
genecode.py:


chrs='ABCDEFGHIJKLMNOPQRSTOVWXYZ'

nums='0123456789'

for i in range(0, 26):

for j in range(0, 26):

for k in range(1, 100):

tt='0'+str(k)

strs=chrs[i]+""+chrs[j]+tt[len(tt)-2:len(tt)]

print(strs)
这段代码的功能是生成 两位大写字母 + 两位数字 的组合序列(例如 AA01、AA02... ZZ99),但存在几个细节问题和可优化点,下面逐一分析并提供改进方案:
一、原代码存在的问题
字符集错误:chrs 中少了字母 U(原字符串是 ABCDEFGHIJKLMNOPQRSTOVWXYZ,缺失 U),导致生成的组合中永远没有以 U 开头或第二位为 U 的情况。
数字处理冗余:tt='0'+str(k) 再截取后两位的写法不够简洁,且 k 从 1 到 99 时,str(k) 本身长度为 1 或 2,直接用 zfill(2) 补零更高效。
循环嵌套格式问题:原代码没有正确缩进(Python 中循环嵌套必须缩进),运行会报错 IndentationError。
无用变量:nums 变量定义后未使用,属于冗余代码。
二、修正后的代码

# 修正字符集(补充缺失的 U),优化数字补零逻辑,规范缩进
chrs = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' # 补充 U 字母

# 三层循环生成:两位字母 + 两位数字(AA01 ~ ZZ99)
for i in range(26):
for j in range(26):
for k in range(1, 100): # k 取值 1-99,对应 01-99
# 数字补零为两位(1→01,10→10,99→99)
num_str = str(k).zfill(2)
# 拼接结果(字母i + 字母j + 两位数字)
result = chrs[i] + chrs[j] + num_str
print(result)
478552055@qq.com 当前离线   回复时引用此帖回复时引用此帖