PGR21.com
- PGR21 관련된 질문 및 건의는 [건의 게시판]을 이용바랍니다.
- (2013년 3월 이전) 오래된 질문글은 [이전 질문 게시판]에 있습니다.
통합 규정을 준수해 주십시오. (2015.12.25.)
Date 2019/09/26 10:49:09
Name 첸 스톰스타우트
Subject [질문] 파이썬 입문자 질문..
파이썬 입문자입니다.. 함수 부분 공부중인데

average(명령어,숫자1,숫자2,숫자3...)
이렇게 입력하면 명령어에 따라

1.입력된 전체 숫자의 평균값을 구하거나
2.전체 숫자 평균값에서 나머지를 버린 값을 구하거나
하는 함수를 짜봤는데요

def average(func,*args):
...     total = 0
...     result = 1
...     if func == '전체':
...             for i in args:
...                     total = total + i
...             result = total / len(args)
...             return result
...     if func == '정수':
...             for i in args:
...                     total = total + i
...             result = total // len(args)
...             return result


인터프리터에 이렇게 입력하니 잘 실행되기는 합니다. 근데 여기서 if문하고 for문하고 return result 가 중복되는데 해당 구문을 한번만 작성해서 함수가 작동되게 할수 있는 방법이 혹시 있을까요?
지금은 명령어가 두개뿐이지만 앞으로 명령어를 여러개 넣을 상황이 생기면 그때마다  계속 반복해서 적는건가 싶어서..

통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
낚시꾼
19/09/26 11:11
수정 아이콘
result 파트만 if문안에 넣으면 되지 않을까요
19/09/26 11:11
수정 아이콘
지금 이 경우에는 if문을 result에만 넣으면 되겠죠. for문은 위로, return문은 아래로 빼시구요.
한편, 나중에 프로그램이 더 복잡해지면 공통된 부분을 또 다른 함수로 만드는 것도 일반적인 방법입니다. 가령, def sum(args) 같이 합을 구하는 함수를 만들어두면, 비슷한 상황에서 for문을 안 써도 되겠죠?

그런데 사실 sum같이 널리 쓰이는 건 python에 이미 내장되어 있습니다 (..) 즉 for문을 통째로 sum(args) 로 바꾸셔도 잘 돌아갈겁니다.
철철대왕
19/09/26 11:12
수정 아이콘
다른게 result = total / len(args) 이것뿐인데 이 부분만 if 타면 될것같네요. 그리고 라인넘버가 있으면 좋을것 같슴미다.
19/09/26 11:13
수정 아이콘
(수정됨) 여기에 묻어가는 질문으로 저도 초보인데요.
def average(func,*args):
total = 0
result = 1
for i in args:
****total += 1
****if func == '전체':
********result = total / len(args)
****elif func == '정수':
****result = total // len(args)
return result
이렇게 하면 안되나요?
19/09/26 12:26
수정 아이콘
답은 나오겠지만 좋은 코드는 아닙니다. 결과적으로 맨 마지막에 계산하는 result만 의미가 있는데 중간에 의미없는 계산을 하게 되니까요.
월급루팡의꿈
19/09/26 11:16
수정 아이콘
for i in args:
total += i
if func=='전체:
result = total / len(args)
else:
result = total // len(args)
return result
하셔도 되요.
첸 스톰스타우트
19/09/26 11:45
수정 아이콘
모두들 답변 감사드립니다~~
궁금했던점이 해결되었네요 ^^
joshisland
19/09/26 18:15
수정 아이콘
>>> def average(func, *args):
... return sum(args) / len(args) if func == '전체' else int(sum(args) / len(args)) if func == '정수' else None

같이 값을 결정하는데 if문을 사용할 수 있습니다.

다른 예제: a = 42 if func == 'FourtyTwo' else "I don't know"
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137957 [질문] 저도 다이어트 식단 봐주실수 있을까요? [6] 기나2993 19/09/26 2993
137956 [질문] 사울대입구역 근처 가성비 좋은 음식&술집 추천 부탁드립니다 [4] 도축하는 개장수2910 19/09/26 2910
137955 [질문] 우리나라 반려동물의 가격이 싼 편인가요? [11] 개념적 문제3206 19/09/26 3206
137954 [질문] [LOL]이번 롤드컵떄는 객원해설 있겠죠? [6] 보라도리3976 19/09/26 3976
137953 [질문] 다니던 헬스장이 갑자기 문을 닫는답니다. 이때 환불 규정은 어떻게되나요? [6] 해바라기3604 19/09/26 3604
137952 [질문] 아기가 필요한 이유 [47] stowaway5242 19/09/26 5242
137951 [질문] pgr21의 13레벨은 어떤 상황인 겁니까? [2] 서양겨자3184 19/09/26 3184
137950 [질문] 사무용 컴퓨터 견적 지적 부탁드립니다. [1] 회회아비2600 19/09/26 2600
137949 [질문] 가슴 통증관련 문의 드립니다. [3] HOoN2741 19/09/26 2741
137948 [질문] 기업법(M&A)을 공부할 수 있는 책 추천부탁드립니다. Practice2608 19/09/26 2608
137947 [질문] 육식정글러 갱갱갱운영 어떻게 배울 수 있을까요?? [4] 커티삭3191 19/09/26 3191
137946 [질문] 애니메이션 제목 질뮨이요 [2] SaRangE2056 19/09/26 2056
137945 [질문] 영상에서 피사체에 맞춰 움직이는 자막은 어떻게 넣은 건가요? [5] 트와이스정연2841 19/09/26 2841
137944 [질문] 공유기가 먹통입니다 [3] 그대의품에Dive2641 19/09/26 2641
137942 [질문] 민방위 꿀팁좀 주세요.... 뭘로 시간을 때워야 하나요... [25] Secundo6498 19/09/26 6498
137940 [질문] 고구마와 감자 & 다이어트 [21] 서낙도3967 19/09/26 3967
137939 [질문] (약혐) 이게 무슨 날벌레 곤충인가요?? [1] 여자친구2468 19/09/26 2468
137938 [질문] [컴견적] 이륙허가 부탁드립니다. [6] Albert Camus2996 19/09/26 2996
137937 [질문] (겜알못) 풋볼매니저(FM) 재밌게 즐기는 법 질문드려요 [12] 코시엔6224 19/09/26 6224
137936 [질문] 50대 중년 정장 브랜드 추천부탁드립니다 [13] 정어리고래10975 19/09/26 10975
137935 [질문] 파이썬 입문자 질문.. [8] 첸 스톰스타우트2524 19/09/26 2524
137934 [질문] 미국대학->미국대학원 vs 한국대학->미국대학원 어느게 더 나을까요.? [29] 뒷산신령4414 19/09/26 4414
137933 [질문] 여기가 바로 서울 최고 맛집이다!! 하는 곳 아시는분 계신가요 [26] 봄날엔4125 19/09/26 4125
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로