2017-05-28 44 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为此。