比目鱼2号
学python的伙伴们应该都写过乘法表代码,基本就是两个for循环,很简短的代码,轻松就能实现。但往往简单的代码,生成的乘法表并没有完全对齐,如下面的简单代码生成的结果:
for i in range(1, 10):
print()
for j in range(1, i+1):
print('%-d*%-d=%-d' % (j, i, i*j), end=' ')
箭头位置结果未完全对齐
当加大乘法表数据时,错位情况更明显
经分析,是因为数据的位数不同,所以造成错位。数据越大,位数相差也越大。如下图相差就非常明显。这样的效果明显是不满意的。
通过对代码进行优化,设置交互式功能,输入起止数字,生成结果能完成对齐。
def cfkj(num1, num2):
for i in range(num1, num2+1):
print()
print('%*d: ' % (len(str(num2)), i), end="")
for j in range(num1, i+1):
print('%-d*%-d=%-*d' % (j, i, len(str(num2*num2)), i*j),
end=' '*(len(str(num2))+2-len(str(i))))
if __name__ == "__main__":
strer = input('输入起止数字,中间用"-"隔开:')
beginer = int(strer[:strer.find("-")])
ender = int(strer[strer.find("-")+1:])
cfkj(beginer, ender)
print()
这下是不是看着顺眼了。
刚接触python,欢迎大侠指教!