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"
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회
137955 [질문] 우리나라 반려동물의 가격이 싼 편인가요? [11] 개념적 문제3417 19/09/26 3417
137954 [질문] [LOL]이번 롤드컵떄는 객원해설 있겠죠? [6] 보라도리4389 19/09/26 4389
137953 [질문] 다니던 헬스장이 갑자기 문을 닫는답니다. 이때 환불 규정은 어떻게되나요? [6] 해바라기3784 19/09/26 3784
137952 [질문] 아기가 필요한 이유 [47] stowaway5605 19/09/26 5605
137951 [질문] pgr21의 13레벨은 어떤 상황인 겁니까? [2] 서양겨자3341 19/09/26 3341
137950 [질문] 사무용 컴퓨터 견적 지적 부탁드립니다. [1] 회회아비2980 19/09/26 2980
137949 [질문] 가슴 통증관련 문의 드립니다. [3] HOoN3101 19/09/26 3101
137948 [질문] 기업법(M&A)을 공부할 수 있는 책 추천부탁드립니다. Practice3185 19/09/26 3185
137947 [질문] 육식정글러 갱갱갱운영 어떻게 배울 수 있을까요?? [4] 커티삭3520 19/09/26 3520
137946 [질문] 애니메이션 제목 질뮨이요 [2] SaRangE2291 19/09/26 2291
137945 [질문] 영상에서 피사체에 맞춰 움직이는 자막은 어떻게 넣은 건가요? [5] 트와이스정연3041 19/09/26 3041
137944 [질문] 공유기가 먹통입니다 [3] 그대의품에Dive2992 19/09/26 2992
137942 [질문] 민방위 꿀팁좀 주세요.... 뭘로 시간을 때워야 하나요... [25] Secundo8825 19/09/26 8825
137940 [질문] 고구마와 감자 & 다이어트 [21] 서낙도4358 19/09/26 4358
137939 [질문] (약혐) 이게 무슨 날벌레 곤충인가요?? [1] 여자친구2631 19/09/26 2631
137938 [질문] [컴견적] 이륙허가 부탁드립니다. [6] Albert Camus3361 19/09/26 3361
137937 [질문] (겜알못) 풋볼매니저(FM) 재밌게 즐기는 법 질문드려요 [12] 코시엔6603 19/09/26 6603
137936 [질문] 50대 중년 정장 브랜드 추천부탁드립니다 [13] 정어리고래11449 19/09/26 11449
137935 [질문] 파이썬 입문자 질문.. [8] 첸 스톰스타우트2752 19/09/26 2752
137934 [질문] 미국대학->미국대학원 vs 한국대학->미국대학원 어느게 더 나을까요.? [29] 뒷산신령4771 19/09/26 4771
137933 [질문] 여기가 바로 서울 최고 맛집이다!! 하는 곳 아시는분 계신가요 [26] 봄날엔4352 19/09/26 4352
137932 [질문] 오래 서있는 직업은 어떤게 있을까요? [20] Secundo4577 19/09/26 4577
137931 [질문] 전해수기란거 진짠가요? [4] 그말싫4887 19/09/26 4887
목록 이전 다음
댓글

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