1) 문제점 발견
- Python을 이용하여 카드게임 ( war game )을 만드는 과정에서 for 문을 이용해 card 객체를 만드는 과정에서 실행할 때마다 객체가 만들어지는 순서가 달라지는 현상을 발견했다.
2) Code ( 실제 코드 )
suits = {'Hearts','Diamonds','Spades','Clubs'}
ranks = {'Two','Three','Four','Five','Six','Seven','Eight','Nine','Ten','Jack','Queen','King','Ace'}
for suit in suits:
for rank in ranks:
#Create Card Object
created_card = Card(suit,rank)
self.all_cards.append(created_card)
#간단하게 진행하기 위해 아래와 같이 값을 변경하여 시뮬레이션을 진행하였다.
suits = {'Hearts','Diamonds'}
ranks = {'Two','Three','Four','Five'}
3)반복문 실행 결과.
여러번 수행하면 변수 ranks 와 suits의 순서가 바뀌어 가면 for문에 대입 되고 있음을 알 수 있다.
4) 해결 방법
- ranks와 suits의 자료형을 set이 아닌 list 자료형으로 변경하니 예상했던 대로 순차적으로 값이 대입 되었다.
- 수정한 코드
suits = ['Hearts','Diamonds']
ranks = ['Two','Three','Four','Five']
- 실행 결과
실험 결과 예상했던 대로 list 순서대로 for문에 대입 되는 것을 확인 할 수 있었다.
5) 결과
for loop를 사용할 때 자료형이 set인 경우 순처적으로 대입되는 것이 아니라 대입할 때마다 랜덤으로 대입되고
list 자료형을 사용하면 순차적으로 대입된다!!!
또한 이 set 자료형의 성분이 str인 경우에는 이런 일이 발생하지만 자료형이 int인 경우에는 이런 일이 발생하지 않는 다는 것을 확인했다.
'Algorithm & Data Structure' 카테고리의 다른 글
[백준] 구간성분(10840번) - 해싱 (0) | 2022.10.10 |
---|---|
[Today I Learned] 알고리즘 기초와 배열 (0) | 2022.09.28 |
[백준] 그룹단어체커 (1316번) - Python (1) | 2022.09.28 |
txt 작업 ( readlines 메소드 / 공백 제거 ) (1) | 2022.09.21 |
[제어문] 친화수, 완전수 구하기 (4) | 2022.09.14 |