“无法连接'str'和'list'对象”不断出现:(

时间:2010-04-09 17:15:27

标签: python

我正在写一个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")

4 个答案:

答案 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))

我不知道这是不是你想要的 - 但也许是这样的?