2017-12-21 31 views
-1

그래서 문자열 끝에 숫자를 사용하는 몇 가지 변수가 있습니다. 그러나 "i"는 str 함수를 사용할 때 문자열로 변환되지 않는 것 같습니다. 왜 이런 생각일까요?변수에 사용할 int의 범위를 문자열로 변환하려면 어떻게해야합니까?

코드 :

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])) 
+0

'GroupConnection1','GroupConnection2' 및'GroupConnection3'을 목록으로 대체하십시오. – Galen

+0

[동적 이름을 사용하는 변수 값에 액세스] (https://stackoverflow.com/questions/29177693/access-to-value-of-variable-with-dynamic-name)의 가능한 복제본 – Barmar

답변

2

난 당신이 이 할을 하려는지 볼 수 있지만, 당신은 (주로, 아래 참조) 할 수 없습니다. 코드는에 드 당을 같이 작성 : has_GroupConnection 이후

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

이 프로그램이 작동하지 않습니다에 정의되어 있지 않은 대신에 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])) 

내 첫 번째 문장, 지나친 단순화 당신 eval 또는 locals()을 사용하여이 작업을 수행하지만, 나쁜 생각, 그래서 내가 어떻게 작업을 수행하는 표시되지 않습니다 강하게 당신을 훈계합니다 그렇게하지 마라! 그것은 추한 비효율적, 그리고 끔찍한 코드 냄새 (그리고 당신은 그것을 인터넷 검색에 대해 생각을 위해 자신을 부끄러워해야!)

+0

@TomKarzes fixed, do not what 나는 생각하고 있었다. –

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로 실행되었습니다. 불필요한 것들도 제거했습니다.

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 
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) 
0

I합니다 ('가'와 '연결'속성에 대한 중첩)이 값을 저장하기위한 여기에서 사전의 사용과 같은 다음 키를 순환 아무런 문제가 없을 것을 생각 하는데요.

당신이 특정 번호를 포함해야하는 경우, 문자열 교체 사용 범위 내가 대한

을 (1,3) :

동안 연결 DICT [ 'GroupConnection %의'% STR (I) [] 갖는다 '

인쇄 (딕셔너리의 ['을 GroupConnection % S '% STR (I)] [구 []는 내의 요소를 지정하는 데 사용된다

0

'CONN 번호 ']) 반복 가능하거나 목록 또는 문자열과 같거나 dict에서 값을 검색 할 수 있습니다. 변수를 식별하는 데이 변수를 사용하려고하지만 작동하지 않습니다.당신은 아마 대신, dict 사용해야합니다

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

또는 당신이 dict.items() 방법을 사용할 수 있습니다

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

그런 다음 당신이 당신 GroupConnection의 모두를 얻을 수있는 dict의 키를 반복 할 수 있습니다 :

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

두 데이터가 서로 관련되어 있기 때문에 두 데이터가 서로 관련되어있어 관련성이 높습니다. 어떤 패션.