Python:字符串连接问题

Python: Issue with string concatenation

我正在尝试在我的代码中构建某种总和金字塔,但我无法在结束后打印任何内容=(在 python 2.7 中)

from __future__ import print_function
import time

YEAR_STR= time.strftime('%Y')
MONTH_STR=time.strftime('%m')

num = 1
for i in range(0, 5):
    num = 1
    for j in range(0, i+1):
        print("(ABC_"+YEAR_STR+MONTH_STR+str(num), end="+")
        num = num + 1
    print()

我得到的输出是:

(ABC_2017031+
(ABC_2017031+(ABC_2017032+
(ABC_2017031+(ABC_2017032+(ABC_2017033+
(ABC_2017031+(ABC_2017032+(ABC_2017033+(ABC_2017034+
(ABC_2017031+(ABC_2017032+(ABC_2017033+(ABC_2017034+(ABC_2017035+

但预期的输出是:

(ABC_2017031)/1
(ABC_2017031+ABC_2017032)/2
(ABC_2017031+ABC_2017032+ABC_2017033)/3
(ABC_2017031+ABC_2017032+ABC_2017033+ABC_2017034)4

等等....

我无法在打印语句中添加最后一个 )/num。这能做到吗?

你可以这样自己做:

  • 您将连接临时变量中的输出
  • 只有当它不是正在打印的行中的最后一个字符时,您才会添加“+”

    import time
    
    YEAR_STR= time.strftime('%Y')
    MONTH_STR=time.strftime('%m')
    
    
    for i in range(0, 5):
      num = 0
      tmp = ""  
      for j in range(0, i+1):
        num = num + 1  
        tmp += "ABC_"+YEAR_STR+MONTH_STR+str(num)
        if (j < i):
          tmp+="+"
    
      print("(%s)/%d"% (tmp, num))
    

输出:

(ABC_2017031)/1
(ABC_2017031+ABC_2017032)/2
(ABC_2017031+ABC_2017032+ABC_2017033)/3
(ABC_2017031+ABC_2017032+ABC_2017033+ABC_2017034)/4
(ABC_2017031+ABC_2017032+ABC_2017033+ABC_2017034+ABC_2017035)/5

end= 选项实际上只是以这种方式完成字符串。你实际上想要这样的东西:

for i in range(5):
    print("+".join(["(ABC_"+YEAR_STR+MONTH_STR+")" for num in range(0, i+1)]), end="/{}\n".format(i+1))