2017-05-28 60 views
-1

我很抱歉如果我的問題似乎是新手,但我已經遇到了障礙,當涉及到基於python(2.7)中的元組的字符串分配變量。使用字符串定義變量與元組

在過去,我沒有任何問題分配一個變量並使用一個字符串給它一個名字(例如:rowId = '%sDays' %workoutMode)。但在元組環境中,我遇到了一些問題。

我想從數據庫中提取三個不同的表格,並將相同的代碼應用於它們。在這種情況下,我想拉取數據並根據定義列表中的字符串打印數據。但我在基於字符串分配變量時遇到問題。這裏是我的代碼:

def workoutCycle(): 
    catagories = 'Legs', 'Arms', 'Back' 
    for catagory in catagories: 
     conn = sqlite3.connect('workoutData.db') 
     c = conn.cursor() 
     c.execute ('SELECT round(%sDays, 1), round(%sDaysTotal, 1) FROM Profile_%s' %(catagory, catagory, catagory)) 
     originalData = c.fetchall() 
     ('%sDays' %catagory, '%sDaysTotal' %catagory) = tuple(originalData[0]) 
     print originalData 
     print '%sDays' %catagory 
     print '%sDaysTotal' %catagory 

此代碼返回:

SyntaxError: invalid syntax 

我已經嘗試了不同的修改,我沒有運氣。有沒有特定的格式,我缺少的字符串/元組?

**********編輯**************

好像我也不是很清楚什麼,我試圖做的。本質上,我試圖創建一個循環來替換爲每個類別編寫代碼。因此,例如,我想打印有關「武器」中的數據,此代碼的工作:

def armCycle(): 
    conn = sqlite3.connect('workoutData.db') 
    c = conn.cursor() 
    c.execute ('SELECT round(ArmsDays, 1), round(ArmsDaysTotal, 1) FROM Profile_Arms') 
    #originalData = c.fetchall() 
    originalData = c.fetchall() 
    (ArmsDays, ArmsDaysTotal) = tuple(originalData[0]) 
    print originalData 
    print ArmsDays 
    print ArmsDaysTotal 

我試圖創建一個代碼,不僅僅是創建爲每個產品類別的功能多了幾分動感。我相信我會以錯誤的方式去解決這個問題。我很抱歉,我是編程新手。

+0

請包括完整的回溯。回溯幾乎可以肯定地顯示語法錯誤的位置。 –

+0

'rowId ='%sDays'%workoutMode'正在給'rowId'變量賦值''%sDays'%workoutMode'的值,這裏你要做的是相反的,而不是有效的Python語法。檢查'setattr()'是否要動態創建變量。 – zwer

+0

你試圖做什麼並不完全清楚。你爲什麼試圖像這樣定義一個元組? –

回答

1

它看起來像你想創建新的變量(ArmsDaysArmsDaysTotal)被命名包含值"Arms"變量category的基礎上。執行此操作的最簡單和常用的方法不是動態創建個別變量,而是使用dict。形成於完全按照你的方式構建的select語句中的列名相同的原理

c.execute ('SELECT round(%sDays, 1), round(%sDaysTotal, 1) FROM Profile_%s' %(category, category, category)) 
originalData = c.fetchall() 

my_dynamic_data = {} 

my_dynamic_data['%sDays' %category] = originalData[0][0] 
my_dynamic_data['%sDaysTotal' %category] = originalData[0][1] 

dict的鑰匙。然後,而不是

print '%sDays' %category 
print '%sDaysTotal' %category  

print my_dynamic_data['%sDays' %category] 
print my_dynamic_data['%sDaysTotal' %category]  

可以動態Python中創建新的變量,但如果你要問怎麼了,你不應該這樣做。你需要一個非常好理由不使用dict爲此。