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))
我正在尝试在我的代码中构建某种总和金字塔,但我无法在结束后打印任何内容=(在 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))