鍍金池/ 問(wèn)答/Python/ 在Python中如何將99乘法口訣以字符串的形式賦值給一個(gè)變量?

在Python中如何將99乘法口訣以字符串的形式賦值給一個(gè)變量?

我最近在做一個(gè)面試題,要求我通過(guò)99乘法口訣的賦值測(cè)試。

1
2 4
3 6 9
4 8 12 16
5 10 15 20 25
6 12 18 24 30 36
7 14 21 28 35 42 49
8 16 24 32 40 48 56 64
9 18 27 36 45 54 63 72 81(這是99乘法口訣的格式,還有一個(gè)右對(duì)齊的這邊不貼了,后邊會(huì)有鏈接)

clipboard.png
(這是需要通過(guò)的測(cè)試)
我現(xiàn)在能做的就是打印出來(lái)結(jié)果。不知道如何將這個(gè)整體以字符串的形式賦值給一個(gè)變量。暫時(shí)嘗試過(guò)字符串拼接,能力有限,失敗了。
附上github鏈接:https://github.com/Super1ZC/S...

回答
編輯回答
筱饞貓

不知道是否可以借助 io 操作。

2017年3月16日 15:53
編輯回答
失心人

關(guān)鍵點(diǎn):
向右對(duì)齊,左補(bǔ)空格使用rjust, 如單位數(shù)字補(bǔ)到2位,右對(duì)齊模式99表的行補(bǔ)位。
左邊忽略空白使用lstrip,如行首的空格是不需要的。
字符串批量拼接使用join,如字符間隔空格,行間n分隔。

def double_nine(n=9, right=False):
    length = len(str(n**2))
    if right == False:
        return ''.join([' '.join([str(i * j).rjust(length) for j in range(1, i + 1)]).lstrip()+'\n' for i in range(1, n+1)])
    if right == True:
        first = ' '.join([str(i).rjust(length) for i in range(1, n+1)]).lstrip()
        other = [' '.join([str(i*j).rjust(length) for j in range(i, n+1)]).lstrip().rjust(len(first))+'\n' for i in range(2, n+1)]
        return ''.join([first+'\n'] + other)
2017年2月1日 09:24
編輯回答
老梗

看了一下,你這個(gè)double_nine函數(shù)并沒(méi)有返回值啊

2017年5月14日 18:10
編輯回答
傻丟丟
print('\n'.join(['  '.join([str(i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))
2017年6月30日 00:29