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"
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137947 [질문] 육식정글러 갱갱갱운영 어떻게 배울 수 있을까요?? [4] 커티삭3192 19/09/26 3192
137946 [질문] 애니메이션 제목 질뮨이요 [2] SaRangE2056 19/09/26 2056
137945 [질문] 영상에서 피사체에 맞춰 움직이는 자막은 어떻게 넣은 건가요? [5] 트와이스정연2841 19/09/26 2841
137944 [질문] 공유기가 먹통입니다 [3] 그대의품에Dive2643 19/09/26 2643
137942 [질문] 민방위 꿀팁좀 주세요.... 뭘로 시간을 때워야 하나요... [25] Secundo6504 19/09/26 6504
137940 [질문] 고구마와 감자 & 다이어트 [21] 서낙도3969 19/09/26 3969
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] 정어리고래10978 19/09/26 10978
137935 [질문] 파이썬 입문자 질문.. [8] 첸 스톰스타우트2526 19/09/26 2526
137934 [질문] 미국대학->미국대학원 vs 한국대학->미국대학원 어느게 더 나을까요.? [29] 뒷산신령4415 19/09/26 4415
137933 [질문] 여기가 바로 서울 최고 맛집이다!! 하는 곳 아시는분 계신가요 [26] 봄날엔4126 19/09/26 4126
137932 [질문] 오래 서있는 직업은 어떤게 있을까요? [20] Secundo4383 19/09/26 4383
137931 [질문] 전해수기란거 진짠가요? [4] 그말싫4639 19/09/26 4639
137930 [질문] f코드...어떻하면 좋을까요... [12] 비오는거리2718 19/09/26 2718
137929 [질문] 혼밥 잘 못하시는 분들 있나요? [11] 질게만쓰는사람2900 19/09/26 2900
137928 [질문] 선물받은 물건을 파는게 옳은걸까요? [16] 벙아니고진자야4558 19/09/26 4558
137927 [질문] 남성 올인원 로션 추천해주세요!!! [14] 생힝4544 19/09/26 4544
137926 [질문] 운동화에서 쓰레기 냄새가 나는데 어쩌죠? [8] Proactive3024 19/09/26 3024
137925 [질문] 다이어트 이 정도 식단으로 하면 괜찮을까요? [4] 핸드레이크2565 19/09/26 2565
137923 [질문] 내장그래픽 구형컴에서 스타리마스터가 버벅대지 않으려면 어떻게...? [3] 공발업나코템플러2836 19/09/26 2836
137922 [질문] 삼알못)이각 곽사의 악행이 그렇게 심했나요? [2] valewalker3890 19/09/26 3890
목록 이전 다음
댓글

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