在Python中如何将99乘法口诀以字符串的形式赋值给一个变量?

我最近在做一个面试题,要求我通过99乘法口诀的赋值测试。

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乘法口诀的格式,还有一个右对齐的这边不贴了,后边会有链接)

clipboard.png
(这是需要通过的测试)
我现在能做的就是打印出来结果。不知道如何将这个整体以字符串的形式赋值给一个变量。暂时尝试过字符串拼接,能力有限,失败了。
附上github链接:https://github.com/Super1ZC/S...

阅读 3.8k
4 个回答

关键点:
向右对齐,左补空格使用rjust, 如单位数字补到2位,右对齐模式99表的行补位。
左边忽略空白使用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)
print('\n'.join(['  '.join([str(i * j) for j in range(1, i + 1)]) for i in range(1, 10)]))

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

看了一下,你这个double_nine函数并没有返回值啊

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题