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"
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137980 [질문] 최근 다음 검색어 질문입니다 wish buRn2244 19/09/27 2244
137979 [질문] 모니터 구입 문의 (4k? 144hz?) [6] 돼지샤브샤브3264 19/09/27 3264
137978 [질문] 일드 당신차례입니다. 재밌나요?? [3] 애플3924 19/09/27 3924
137977 [질문] 공부 잘하시는 분들 및 공무원 합격생 분들 질문있습니다. [6] 삭제됨4313 19/09/27 4313
137976 [질문] 네트워크 구성 관련 질문입니다 [1] qwertyy3736 19/09/27 3736
137975 [질문] 강남역 주변 동남아 식당 추천 부탁드립니다. [6] 혼다히토미2995 19/09/27 2995
137974 [질문] 코인세탁방 건조기 온도가 어느정도인가요? [3] 마담리프4007 19/09/27 4007
137973 [질문] 주식을 해보고 싶습니다. [6] 어빈4645 19/09/27 4645
137972 [질문] 영양제좀 챙겨 먹어볼까해서 알아보는중인데 추천부탁드립니다.. [4] 웃어른공격3985 19/09/27 3985
137971 [질문] 다이어트 질문입니다 [3] AminG3343 19/09/27 3343
137970 [질문] 소규모 이사문의(냉장고1,세탁기1) [2] 아르거스의사도2407 19/09/27 2407
137969 [질문] 조립컴 그냥 택배로 받으시나요? [23] 불같은 강속구9030 19/09/27 9030
137967 [질문] 파이어엠블렘 풍화설월? 입문해도 될지 질문입니다. [11] 제드6852 19/09/27 6852
137966 [질문] 감기에 좋은 음식이나 보양식음식.. [7] 방탄노년단4335 19/09/27 4335
137965 [질문] 기름이 손에 튀었습니다... [9] 랜슬롯3518 19/09/27 3518
137964 [질문] 마도잡다 정확한 의미, 유래 아시는 분 계신가요? [5] 궁금해요궁금해20680 19/09/26 20680
137963 [질문] 아이패드 게임 실행 오류.. moqq2953 19/09/26 2953
137962 [질문] 홈트레이닝할 때 아령은 누오덤벨 파워덤벨 중 어떤 게 좋을까요...? nexon3917 19/09/26 3917
137961 [질문] 아내를 위한 임산부 영양제를 찾고 있습니다 [8] ComeAgain3288 19/09/26 3288
137960 [질문] 호텔뷔페 중 대게 퀄리티 좋게 나오는 곳 있을까요? [12] This-Plus6434 19/09/26 6434
137959 [질문] 익플에서 게시물 쓸때 받침이 안써집니다. [4] 지수2384 19/09/26 2384
137957 [질문] 저도 다이어트 식단 봐주실수 있을까요? [6] 기나3222 19/09/26 3222
137956 [질문] 사울대입구역 근처 가성비 좋은 음식&술집 추천 부탁드립니다 [4] 도축하는 개장수3220 19/09/26 3220
목록 이전 다음
댓글

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