【发布时间】:2019-12-31 00:11:24
【问题描述】:
我在 python 中使用parameterized functions。我正在传递一些字符串值并访问它的值。
这是我的函数定义的样子:
import constants
def print_error_table(self, header1, errormsg, icon):
# for header1
print(constants.GREEN)
print(constants.REPORT_HEADER_ERR)
print(constants.DATE_TIME)
print(constants.SPACE)
start = "| | "+constants.ICON_BOX
header1_count = len(header1)
available_space_for_first_part = 37 - (len(start) + header1_count)
s = ""
print(constants.REPORT_ROOF)
print(constants.REPORT_COLUMNS)
print(constants.REPORT_FLOOR)
print(constants.REPORT_MIDDLE)
print(start),
print(" "+constants.NC+header1+constants.GREEN),
for i in range(available_space_for_first_part):
s += " "
print(s),
print("|"),
# right part
end = " "
end2 = "| |"
s2 = ""
icon_count = len(icon)
available_space_for_second_part = 31 - (len(end) + icon_count)
print(end),
print(icon),
for i in range(available_space_for_second_part):
s2 += " "
print(s2),
print(end2)
print(constants.REPORT_SHORT_HORIZONTAL_LINE)
print(constants.REPORT_MIDDLE_NO_MIDDLE_SEPTUM)
# print(len(constants.SPACE)) # 84
# print first 40 characters
start = "| |"
print(start),
s3 = ""
for i in range(12):
print(" "),
print(constants.RED),
msg = "1.) " + errormsg,
print(""+msg), # this is where my error is getting
print(constants.GREEN),
# print(constants.RED+constants.ICON_CROSS+msg+constants.GREEN),
for i in range(12, 57 - len(msg)-1):
s3 += " "
print(s3),
print("| |"),
print("")
print(constants.REPORT_MIDDLE_NO_MIDDLE_SEPTUM)
print(constants.REPORT_MIDDLE)
print(constants.REPORT_FLOOR)
print(constants.REPORT_FOOTER)
这是我从中调用此函数的另一个 python 文件。
error_message = "\"etcd\" is impaired\n"
print_error_table(self, "ETCD", error_message, constants.ICON_CROSS)
我得到这个错误:
文件“/home/jananath/Desktop/python-script/2/bitesizetrouble/report_error.py”,第 57 行,在 print_error_table 打印(“”+味精), TypeError: 无法连接 'str' 和 'tuple' 对象
问题是我传递的值(即error_message)没有作为string 传递,它是某种更改的文本,出于某种原因。
我之所以这么说是因为,在上面的(第一个)命令中,它显示的是 print(""+str(msg)),而不是这个,当我尝试 print(msg), 时,它会给出一些像这样的奇怪输出。
(`"etcd" 受损\n',)
您可以看到每边都有两个parenthesis。它来自哪里以及为什么我不能将传递给函数的字符串与另一个字符串连接起来(即print(""+str(msg))
更新:我正在使用 , 来停止 print() 打印新行。这是我在 python 2.7.5 中应该这样做的方式
【问题讨论】:
-
我注意到您的许多代码语句都以逗号结尾。如果您认为它在 C 或 javascript 等语言中的行为类似于分号,那么情况并非如此。尾随逗号通常会将其前面的对象转换为元组。尝试删除所有这些,尤其是
msg = "1.) " + errormsg,末尾的那个,看看是否有帮助。 -
如果你只是学习 Python,你可能应该放弃 Python 2 并专注于学习当前推荐和支持的语言版本,即 Python 3。
-
@Kevin 我正在使用
,停止print()打印新行。这是我在python 2.7.5中应该这样做的方式 -
@tripleee,不,我使用
python 2.7.5是有原因的。我无法改回最新版本。 -
尾随逗号是特定于
print的,但你已经将它撒在了很多它不这样做的地方。它创建了一个元组,现在你很生气你有一个元组。
标签: python