728x90
반응형

def func_sum(a_lst): # 합계 함수. sum(a_lst)로 가능하나 for문 사용
n_sum = 0
for n in a_lst:
n_sum += n
return n_sum
def func_avg(a_lst): # 평균 함수. sum(a_lst) / len(a_lst)로 가능하나 for문 사용
n_sum = func_sum(a_lst)
return n_sum / len(a_lst)
def func_max(a_lst): # 최개값 함수. max(a_lst)로 가능하나 for문 사용
# n_max = max(a_lst)
n_max = 0
for n in a_lst:
if n > n_max:
n_max = n
return n_max
def func_mode(a_lst): # 최빈값 함수
dic = {} # 입력 정수를 키로 하는 딕셔너리를 만들기 위한 딕셔너리 변수
for n in a_lst:
if n in dic: # 딕셔너리에 정수가 있다면
dic[n] += 1 # 입력 받은 정수를 키로해서 +1을 함(이렇게 해서 각 정수가 몇 번 있는지 Count)
else:
dic[n] = 1 # 입력 받은 정수가 딕셔너리에 없다면 키로 하고 값은 1로 해서 신규 등록
n_max = 0 # 반복된 회수가 많은 정수(몇 번 나왔는지)
n_mode = -1 # 최빈값 횟수가 아닌 어떤 정수인지(문제에서는 사용되지 않음)
for k, v in dic.items(): # 딕셔너리의 items() 함수로 하면 키,값을 받을 수 있음
if v > n_max: # 요소값 즉 Count가 큰 값을 찾음
n_max = v
n_mode = k
return n_max
func_lst = [func_sum, func_avg, func_max, func_mode] # 리스트에 함수를 등록
prt_txt = ['입력된 수들의 합','입력된 수들의 평균','입력된 수들 중 최대값','최대 반복 수'] # 리스트에 출력할 문장 등록
while True:
in_lst = [] # 입력 받은 숫자를 저장할 리스트 변수
while True: # 임의의 개수만큼 입력 받기 위해 무한 반복
in_str = input('숫자를 입력하세요(숫자 입력 종료:e):') # 입력 받기
if in_str.isalpha(): # input()에서는 입력의 종료시 e 라고 하지만 숫자가 아니면 입력 받기 종료
break
else:
in_lst.append(int(in_str)) # 입력 받으면 문자열이기 때문에 int() 함수로 정수로 변환 후 리스트 변수에 추가
menu = int(input('1.합계 2.평균 3.최대값 4.최빈값 5.종료\n사용 메뉴 번호 : ')) # 함수 선택
if menu == 5: # 입력이 5이면 종료
print('프로그램 종료')
break
result = func_lst[menu-1](in_lst) # 함수들을 등록한 리스트(func_lst)에 입력 받은 숫자들을 인수로 넘김.
print(prt_txt[menu-1],':',result) # 출력시 출력문자열을 등록한 리스트(prt_txt)를 사용해서 출력

728x90
반응형
'프로그램' 카테고리의 다른 글
| [파이썬] 문제 : 1~100 사이의 임의의 수 맞추기 (0) | 2023.06.13 |
|---|---|
| [파이썬] 문제 : 1~100 자연수 중 10의 배수만 출력. 3의 배수 제외 (0) | 2023.06.13 |
| [파이썬] 문제 : 리스트 2개에서 공통원소 찾기 (0) | 2023.06.13 |
| [파이썬] 문제 : 리스트에서 값을 찾아 위치(인덱스) 출력 (0) | 2023.06.13 |
| [파이썬] 문제 : 문자열 입력 받아 대문자,소문자,공백,기타 문자 Count (0) | 2023.06.12 |
댓글