在更改列表大小的情况下使用Python字符串格式

时间:2019-02-17 07:57:58

标签: python string list

如何在不提前准备{}位置的情况下打印字符串行。因为现在我的函数只需要6个位置,但是如果我更改输入(n,m),我将需要不同数量的{}。如何定义呢?

def all_pairs_sum(m,n):
    sum = 0
    mult = []
    for m in range(1,m+1):
        for n in range(1,n+1):
            l = m*n
            mult.append(l)
            sum = sum + m*n
            print(m," * ", n, " = ", l)
    print("{}+{}+{}+{}+{}+{} =".format(*mult))
    return sum

print (all_pairs_sum(2,3))

4 个答案:

答案 0 :(得分:1)

如果使用方法format(),则有一定数量的替换字段{}。您可以使用以下解决方案:

l = list(range(5))
print(' + '.join(str(i) for i in l), ' = ', sum(l))
# 0 + 1 + 2 + 3 + 4  =  10

答案 1 :(得分:1)

您可以使用Python 3.6中添加的f-string功能。另请注意,sum是Python标准库中的函数。最好不要用您的变量来命名。如您在示例中所见,我将其称为total

def all_pairs_sum(m,n):
    total = 0
    mult = []
    for m in range(1, m + 1):
      for n in range(1 , n + 1):
          l = m * n
          mult.append(l)
          total += l
          print(f"{m} * {n} = {l:>2d}")
    print(f"{' + '.join(map(str, mult))} = {sum(mult)}")
    return total

print(all_pairs_sum(2, 5))

输出:

1 * 1 =  1
1 * 2 =  2
1 * 3 =  3
1 * 4 =  4
1 * 5 =  5
2 * 1 =  2
2 * 2 =  4
2 * 3 =  6
2 * 4 =  8
2 * 5 = 10
1 + 2 + 3 + 4 + 5 + 2 + 4 + 6 + 8 + 10 = 45
45

答案 2 :(得分:0)

怎么样:

def get_msg_template(n):
    tmp =  '{}+' * n
    return tmp[:-1]

print(get_msg_template(4))

输出:

 {}+{}+{}+{}

答案 3 :(得分:0)

如果您要打印出总和值的字符串表示形式,则可以使用以下内容:

print("+".join(str(x) for x in mult))