Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用字符串定义具有元组的变量_Python_String_Tuples - Fatal编程技术网

Python 使用字符串定义具有元组的变量

Python 使用字符串定义具有元组的变量,python,string,tuples,Python,String,Tuples,如果我的问题看起来是新手,我很抱歉,但在python(2.7)中,当涉及到基于元组字符串分配变量时,我遇到了一个障碍 过去,我在分配变量和使用字符串为其命名时没有遇到任何问题(例如:rowId='%sDays'%workoutMode)。但在元组环境中,我遇到了一些问题 我想从数据库中提取三个不同的表,并对它们应用相同的代码。在本例中,我希望根据定义列表中的字符串提取数据并打印它。但是我在基于字符串分配变量时遇到了问题。这是我的密码: def workoutCycle(): catago

如果我的问题看起来是新手,我很抱歉,但在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

我试图创建一个比为每个类别创建一个函数更具动态性的代码。我肯定我走错了方向。很抱歉,我是编程新手。

看起来您想要创建新的变量(
ArmsDays
ArmsDaysTotal
),这些变量是根据包含值
的变量
类别
命名的。最简单和常用的方法不是动态创建单个变量,而是使用
dict

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
的键的构成原理与在
select
语句中构造列名的方式完全相同。然后,而不是

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


您可以在Python中动态创建新变量,但如果您需要询问如何创建,您不应该这样做。你需要一个很好的理由不使用
dict

请包含完整的回溯。回溯几乎肯定会显示语法错误的位置。
rowId='%sDays'%workoutMode
正在为
rowId
变量赋值
'%sDays'%workoutMode
的计算结果,您在这里尝试的是相反的,不是有效的Python语法。如果要动态创建变量,请选中
setattr()
。你为什么要定义这样一个元组?我刚刚发布了一个关于我要做什么的进一步解释。谢谢@zwer,我将查看setattr()并查看是否有办法实现此功能。仅打印
原始数据[0][0]
原始数据[0][1]
有什么问题,为什么要将瞬态值转换为命名属性?
print my_dynamic_data['%sDays' %category]
print my_dynamic_data['%sDaysTotal' %category]