“无法连接”“str”“和”“list”“对象”继续出现:(

2024-09-28 20:41:05 发布

您现在位置: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")

Tags: import程序formenablelinerangeoutnum
3条回答

通过执行out_str += line,您试图将列表(从计算范围)添加到字符串。我甚至不知道这是怎么回事,但这就是问题所在。

range返回一个列表对象,所以当您说

line = calc_range(first_line_num, int1)

您正在将列表分配给line。这就是out_str += line抛出错误的原因。

您可以使用str()将列表转换为字符串,也可以使用不同的方法构建字符串以获得所需的结果。

你没说你从哪一行得到错误,但我猜是:

out_str += line

第一个变量是字符串。第二个是数字列表。不能将列表连接到字符串上。我不知道你到底想干什么,但是:

out_str += ", ".join(line)

这将把由逗号连接的数字加到out_str上

相关问题 更多 >