2010-04-09 73 views
2

我正在編寫一個python程序,該程序使用用戶在前一頁輸入的兩個數字計算拉丁方塊。了起來,「不能連接‘STR’和‘列表’對象」這裏是程序:」不能連接'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

out_str + =''.join(line)或類似的東西呢? 只需使用調試技巧man!哪一行失敗? 在任何一行插入「STOP」不加引號 - 解釋器將會彈出。如果一切都失敗了,會給你線路號碼。 – 2010-04-09 17:21:13

回答

4

range返回一個列表對象,所以當你說

line = calc_range(first_line_num, int1) 

您分配一個列表line。這就是爲什麼out_str += line引發錯誤。

您可以使用str()將列表轉換爲字符串,或者您可以通過不同的方式構建字符串以獲得您正在查找的結果。

+0

謝謝,這工作! :) – user313022 2010-04-10 08:24:09

1

這樣做out_str += line,你想添加一個列表(從calc_range)爲一個字符串我不知道。即使知道這應該是做什麼,但這就是問題所在。

1

你沒有說你從哪裏得到錯誤,但我猜測它是:

out_str += line 

第一個變量是一個字符串。第二個是數字列表。您不能將列表連接到一個字符串。我不知道你想要做什麼,但如何:但如何:

out_str += ", ".join(line) 

這將添加到逗號加入out_str的數字。

0

calc_range()返回一個列表;但是,您正嘗試將其添加到字符串(out_str)。

它看起來像你的代碼是未完成的 - 你不想做一些calc_range()返回的數字範圍?比如說,與形式有關的東西?

line = ''.join(num_1[index] for index in calc_range(first_line_num, int1)) 

我不知道這是你想要的 - 但也許這樣?

相關問題