Posts pythonTip 62 乘法运算
Post
Cancel

pythonTip 62 乘法运算

题目描述: 给你两个整数a和b(0 < a,b < 1000),按笔算的格式输出a乘以b(a是被乘数,b是乘数)的运算过程,

最后再输出一行 “********”(二十个星号)。

乘号用小写字母“x”表示,每行末尾不能有多余的空格。具体输出格式见下面的例子:

例1:

a=89, b=13,则输出:

1
2
3
4
5
6
7
8
  	  89
x     13
--------
	 267
	 89
--------
	1157
********************

例2:

a=2, b=2,则输出:

1
2
3
4
5
       2
x      2
--------
       4
********************

示例: 输入: a = 89

b = 13 输出:

1
2
3
4
5
6
7
8
  	  89
x     13
--------
	 267
	 89
--------
	1157
********************

分析: 讲真,看到这个文字的排版,这个题目我是直接放弃思考的。直觉告诉我就是一个格式控制,什么地方放多少空格之类的,不难。

但是这个排版,真的放弃了。随后我就看了别人的题解。

代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
n = m = 8               # n为每一行显示的字符总长度,m为进位后的一行总长度
y = b
print('%*d' % (n, a))   # 打印a,行的总长度为n
print('x%*d' % (n - 1, b))  # 打印x, 再打印b,b的总长度为n - 1
if y > 9:                   # 乘数为两位数时,需要输出过程
    print('-' * n)
    while y > 0:
        t, y = y % 10, y // 10
        print('%*d' % (m, t * a))
        m -= 1              # m - 1后,作为下一行的总长度
print('-' * n)
print('%*d' % (n, a * b))
print('*' * 20)
This post is licensed under CC BY 4.0 by the author.
Trending Tags
Contents

pythonTip 61 正方形拼接

pythonTip 63 平分果子

Trending Tags