def is_working_day(*args) : #이 함수는 요일을 입력받아 그 요일중 휴일이 포함되어 있다면 True, 아니면 False를 반환한다.
list1 = list(args) #리스트화
seek_sat = list(filter(lambda x: '토' in x, list1)) #문자열 '토' 탐색
seek_sun = list(filter(lambda x: '일' in x, list1))
set1 = set(seek_sun + seek_sat)
if set1 & 휴일 == set() :
return False
else : return True
연습문제 풀면서 일단 이렇게 작성했는데요
if문에서 저렇게 직접 return false라고 치지않고 간단하게 false가 나오도록 줄일수 있나요? 있을것같은데 모르겠어서 궁금해요
return set & 휴일 != set()
return set1 & 휴일 != set()
아 if아래쪽은 다 지우고 set1이랑 휴일을 바로 비교해서 공집합이 아니면 true 공집합이면 false가 반환되는건가요?
그위쪽부분도 더줄일수있나요???
파이참 쓰는 거임?
네
def is_working_day(*arg): return arg[0] & set(filter(lambda x: ('sat' in x) or ('sun' in x), arg[0])) == set() 있을진 모르겠지만 조금 공부해보니 한 줄로 된다
TypeError: unsupported operand type(s) for &: 'str' and 'set' 라고 나오면서 안됩니다
holiday = set(("sat", "sun")) def is_working_day(*arg): return arg[0] & set(filter(lambda x: ('sat' in x) or ('sun' in x), arg[0])) == set() print(is_working_day({"mon", "tue"})) holiday = set(("sat", "sun")) 이게 풀코드얌 참고해서 만들어바
마지막 이거 빼셈 holiday = set(("sat", "sun")) 잘못 복사함
집합으로 입력해야 제대로 출력되는건가요? 아무 텍스트나 입력해도 set()로 묶는 작업도 한줄안에 추가하는것도 가능한가요?
아무 텍스트면 '월화수목금' 이런거?
스트링으로 적용되게 하려면 스트링만 작동되게 하던지 해야할거 같은데 둘다 하게 하려면 당연히 코드는 늘어남 검사하는 로직 자체도 집합으로 접근하면 안됨 문자열 비교로 접근해야지
뭘모르는건지 이해했어요 감사합니다
holidays = '토일' def is_working_day(days): return any([day in [holiday for holiday in holidays] for day in days]) print(is_working_day('월화목금토')) ㅇㅋ 집합하고 문자열을 같은 선상으로 보면 안됨 따로 구현 해야함 데이터를 넣는 문법부터 달라서... 둘다 호환되게 하려면 한쪽으로 변환을 거치던지 해야할 거야