如何将一系列int转换为用于变量的字符串?

时间:2017-12-21 22:38:48

标签: python variables range

所以我有一些变量在字符串的末尾使用数字。但是"我"当我使用str函数时,似乎没有转换为字符串。知道为什么会这样吗?

代码:

has_GroupConnection1 = True
has_GroupConnection2 = True
has_GroupConnection3 = True

GroupConnection1 = 45
GroupConnection2 = 88
GroupConnection3 = 55

for i in range(1,3):
    if str(has_GroupConnection[i]) == True:
         print(str(GroupConnection[i]))

6 个答案:

答案 0 :(得分:2)

我看到你尝试做了什么,但你不能这样做(大多数情况下,见下文)。你的代码按照以下方式去糖:

has_GroupConnection.__getitem__(i)
# foo[x] -> foo.__getitem__(x)

由于has_GroupConnection未在您的程序中定义,因此这将永远不会有效,而是会抛出NameError。不过你可以定义它。

has_GroupConnection = []
has_GroupConnection.append(None)  # 0th element
has_GroupConnection.append(True)  # 1st element
has_GroupConnection.append(True)  # 2nd element
has_GroupConnection.append(True)  # 3rd element
# or indeed has_GroupConnection = [None, True, True, True]
# or a dict will work, too...

# as above...
GroupConnection = [None, 45, 88, 55]

for i in range(1,3):  # note this is only [1, 2], not [1, 2, 3]
    if has_GroupConnection[i]:
         print(str(GroupConnection[i]))

我的第一句话过于简单化,你可以使用evallocals()来做,但这是一个坏主意,所以我不会告诉你如何做到这一点,并强烈告诫你不要这样做!它的丑陋,效率低下,以及糟糕的代码味道(你应该为自己的谷歌搜索而感到羞耻!)

答案 1 :(得分:1)

这是使用元组列表的另一种方式

group_connection = list()
group_connection.append((True, 45))
group_connection.append((True, 88))
group_connection.append((True, 55))

for i in range(0,len(group_connection)):
    if (group_connection[i][0] == True):
         print(str(i) + " has the connection number " + str(group_connection[i][1]))

输出

0 has the connection number 45
1 has the connection number 88
2 has the connection number 55

答案 2 :(得分:0)

这就是你要找的东西:

has_GroupConnection = [True] * 3
GroupConnection = [45, 88, 55]

for i in range(3):
    if has_GroupConnection[i]:
         print(GroupConnection[i])

输出结果为:

45
88
55

has_GroupConnectionGroupConnection都是现在的列表,因此您可以使用[]索引它们。我将循环改为从0到2运行。原始循环从1运行到2.我还消除了一些不必要的东西。

答案 3 :(得分:0)

这将是" a"解决问题的方法。

has_connections = [True, True, False]
group_connections = [45, 88, 55]

for h, g in zip(has_connections, group_connections):
    if h:
        print(g)

答案 4 :(得分:0)

我考虑在这里使用字典来存储这些值(嵌套用于'具有'和'连接'属性),因为您将拥有穿过钥匙没问题。

如果您需要包含特定数字,请使用字符串替换:

对于范围(1,3)中的i:

while connection-dict [' GroupConnection%s' %str(i)] ['有']:

print(dict [' GroupConnection%s'%str(i)] [' conn-number'])

答案 5 :(得分:0)

语法[]用于指定可迭代中的元素,如列表或字符串,或从dict中检索值。您正在尝试使用它来识别变量,但这不起作用。您应该使用dict,而不是:

group_connections = {
    1 : None,
    2 : 45,
    3 : 88,
    4 : 55      
}

然后,您可以遍历dict的密钥以获取所有GroupConnection s:

for grp in group_connections:
    if group_connections[grp]:
        print(group_connections[grp])

或者您可以使用dict.items()方法:

for grp_number, connection in group_connections.items():
    if connection:
        print(connection)

由于您的两个数据是相关的,因此将它们保持在一起更有意义,因此它们以某种方式相关。