我最近为游戏Apple Clicker写成就系统,加上后整个程序的代码竟然超过2200行,窗口启动时间也很慢,主要是if...else...使用的太多。于是查了查缩短代码的方法,总结如下:
示例一
if get > 10 :
num = 1
else:
num = 0
可以简化为:
num = 1 if param > 10 else 0
示例二
if param > 10 :
num = 1
elif param == 10:
num = 2
else:
num = 0
可以简化为:
num = 1 if param > 10 else 2 if param == 10 else 0
多行语句可以用分号“; ”隔开。
示例三
这是成就系统的一小部分:
if apple_amount >= 1 and achievement_1_get == 0:
- achievement_1_on = 1
- else:
- achievement_1_on = 0
- if apple_amount >= 100 and achievement_2_get == 0:
- achievement_2_on = 1
- else:
- achievement_2_on = 0
- if apple_amount >= 1000 and achievement_3_get == 0:
- achievement_3_on = 1
- else:
- achievement_3_on = 0
- if apple_amount >= 10000 and achievement_4_get == 0:
- achievement_4_on = 1
- else:
- achievement_4_on = 0
- if apple_amount >= 100000 and achievement_5_get == 0:
- achievement_5_on = 1
- else:
- achievement_5_on = 0
- if apple_amount >= 1000000 and achievement_6_get == 0:
- achievement_6_on = 1
- else:
- achievement_6_on = 0
- if apple_amount >= 10000000 and achievement_7_get == 0:
- achievement_7_on = 1
- else:
- achievement_7_on = 0
- if apple_amount >= 100000000 and achievement_8_get == 0:
- achievement_8_on = 1
- else:
- achievement_8_on = 0
- if apple_amount >= 1000000000 and achievement_9_get == 0:
- achievement_9_on = 1
- else:
- achievement_9_on = 0
- if apple_amount >= 10000000000 and achievement_10_get == 0:
- achievement_10_on = 1
- else:
- achievement_10_on = 0
- if apple_amount >= 100000000000 and achievement_31_get == 0:
- achievement_31_on = 1
- else:
- achievement_31_on = 0
- if apple_amount >= 1000000000000 and achievement_32_get == 0:
- achievement_32_on = 1
- else:
- achievement_32_on = 0
- if apple_amount >= 10000000000000 and achievement_33_get == 0:
- achievement_33_on = 1
- else:
- achievement_33_on = 0
- if apple_amount >= 100000000000000 and achievement_34_get == 0:
- achievement_34_on = 1
- else:
- achievement_34_on = 0
- if apple_amount >= 1000000000000000 and achievement_35_get == 0:
- achievement_35_on = 1
- else:
- achievement_35_on = 0
修改后变成这样:
achievement_1_on = 1 if apple_amount >= 1 and achievement_1_get == 0 else 0
achievement_2_on = 1 if apple_amount >= 100 and achievement_2_get == 0 else 0
achievement_3_on = 1 if apple_amount >= 1000 and achievement_3_get == 0 else 0
achievement_4_on = 1 if apple_amount >= 10000 and achievement_4_get == 0 else 0
achievement_5_on = 1 if apple_amount >= 100000 and achievement_5_get == 0 else 0
achievement_6_on = 1 if apple_amount >= 1000000 and achievement_6_get == 0 else 0
achievement_7_on = 1 if apple_amount >= 10000000 and achievement_7_get == 0 else 0
achievement_8_on = 1 if apple_amount >= 100000000 and achievement_8_get == 0 else 0
achievement_9_on = 1 if apple_amount >= 1000000000 and achievement_9_get == 0 else 0
achievement_10_on = 1 if apple_amount >= 10000000000 and achievement_10_get == 0 else 0
achievement_31_on = 1 if apple_amount >= 100000000000 and achievement_31_get == 0 else 0
achievement_32_on = 1 if apple_amount >= 1000000000000 and achievement_32_get == 0 else 0
achievement_33_on = 1 if apple_amount >= 10000000000000 and achievement_33_get == 0 else 0
achievement_34_on = 1 if apple_amount >= 100000000000000 and achievement_34_get == 0 else 0
achievement_35_on = 1 if apple_amount >= 1000000000000000 and achievement_35_get == 0 else 0
既简洁、易读又省行数,初学者可能比较难理解,但用一用就熟悉了。
把所有if...else...修改后,整个程序的长度只剩1600多行了,效果还是很显著的。
如果你有意见或建议,请参加我们的投票 ⬇️ 或者在评论区发表评论~
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)