我正在写一个python程序。该程序使用用户在上一页输入的两个数字计算拉丁方。但是一个错误不断出现,“无法连接'str'和'list'对象”这里是程序:
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
# enable debugging
import cgi
import cgitb
cgitb.enable()
def template(file, **vars):
return open(file, 'r').read() % vars
print "Content-type: text/html\n"
print
form = cgi.FieldStorage() # instantiate only once!
num_1 = form.getfirst('num_1')
num_2 = form.getfirst('num_2')
int1r = str(num_1)
int2r = str(num_2)
def calc_range(int2r, int1r):
start = range(int2r, int1r + 1)
end = range(1, int2r)
return start+end
int1 = int(int1r)
int2 = int(int2r)
out_str = ''
for i in range(0, int1):
first_line_num = (int2 + i) % int1
if first_line_num == 0:
first_line_num = int1
line = calc_range(first_line_num, int1)
out_str += line
print template('results.html', output=out_str, title="Latin Squares")
答案 0 :(得分:4)
range
返回一个列表对象,所以当你说
line = calc_range(first_line_num, int1)
您正在为line
分配一个列表。这就是out_str += line
抛出错误的原因。
您可以使用str()
将列表转换为字符串,也可以使用不同的方式构建字符串以获取您要查找的结果。
答案 1 :(得分:1)
通过执行out_str += line
,您尝试将列表(从calc_range)添加到字符串。我甚至都不知道应该做什么,但这就是问题所在。
答案 2 :(得分:1)
你没有说出你从哪个行得到错误,但我猜是:
out_str += line
第一个变量是一个字符串。第二个是数字列表。您不能将列表连接到字符串。我不知道你究竟要做什么,但是怎么样:
out_str += ", ".join(line)
这会将逗号加入的数字添加到out_str。
答案 3 :(得分:0)
calc_range()
返回一个列表;但是,您正在尝试将其添加到字符串(out_str
)。
看起来您的代码未完成 - 您不想对calc_range()
返回的数字范围做些什么吗?比方说,有形式的东西吗?
line = ''.join(num_1[index] for index in calc_range(first_line_num, int1))
我不知道这是不是你想要的 - 但也许是这样的?