ㅇㅇ or int가 되면, ㅇㅇ이라는 조건과 int를 비교하게 되는데, 0, 빈컨테이너, 빈문자열 등을 제외하면 전부 True로 변횐되므로, int가 True로 변환됩니다. 따라서 ㅇㅇ or int는 뭘 해도 True가 나옵니다."
라는 게 무슨 의미인가요?여기서 ㅇㅇ는 리스트나 문자열 등 모든 걸 다 사용할 수 있다는 의미입미다.
저는 str or int 라는 조건을 넣었는데 리스트랑 딕셔너리까지 출력이돼서 유튜버님께 질문을 했더니 저런 답변이 왔습니다.문자열이나 정수만 출력하려고 한 건데 왜 리스트와 딕셔너리까지 출력이 됐는지 저는 도저히 모르게씁니다 진짜 제발 도와줏요
라는 게 무슨 의미인가요?여기서 ㅇㅇ는 리스트나 문자열 등 모든 걸 다 사용할 수 있다는 의미입미다.
저는 str or int 라는 조건을 넣었는데 리스트랑 딕셔너리까지 출력이돼서 유튜버님께 질문을 했더니 저런 답변이 왔습니다.문자열이나 정수만 출력하려고 한 건데 왜 리스트와 딕셔너리까지 출력이 됐는지 저는 도저히 모르게씁니다 진짜 제발 도와줏요
코드를 줘 봐...
character = { "name":"기사", "level": 12, "items" : {"sword":"불꽃의 검", "armor":"풀플레이트" }, "skill":["베기","세게 베기", "아주 세게 베기"]}#for 반복문을 사용합니다.for key in character: if type(character[key]) is int or str: print("{} : {}".format(key,character[key])) elif type(character[key]) is dict: pass else: pass입니다결과값은딕셔너리랑 리스트까지 다 나왔구영
다시 글로 올릴게요
저건 어떻게 해석되냐면, "type(..) is int" 또는 "str"가 참일 때 수행하라는 뜻인데 말야
if str: print('참') 하면 알겠지만 "str"은 항상 참이다
왜냐하면 str 자체가 클래스이며 클래스는 종류에 상관 없이 항상 참이기 때문이지
그런데 반대로 type(..) is str or int 해도 결과값이 같이나오는데 ㅜㅜ
if int: 도 참이야. int도 타입이니까 무조건 참이야
애초에 if int: 가 참이건 거짓이건 상관 없이 if int: 라는 조건을 네가 의도한 게 아니니까 프로그램에 오류가 있을 수밖에 없어
뭔가 이해는 갈려고해요! 그럼 int 라는 클래스가 true가 성립이 된다면 character[key]가 {}나 []로 구성돼 있어도 출력이되는건가요? true 라고 인식을 했기 때문에?
어. 그냥 if type(..) is str or True: 라고 쓴 거랑 완벽히 같은 동작을 함. 말도 안 되는 코드지
감사합니다..! 차라리 elif로 str와 int를 분리해서 조건문을 두개로 만들어야겠네요
그래도 되고, 이럴 때 쓰라고 isinstance라는 함수가 있음. if isinstance(character[key], [str, int]): 이렇게 씀
거기까진 아직 배우질않았는데 진짜 감사하빈다!!