메모장

파이썬 내장함수/메서드 [ 실습 ] 본문

Python/개념정리

파이썬 내장함수/메서드 [ 실습 ]

Itchild 2024. 5. 7. 16:24
728x90
반응형

 

# 실습 문제

1. 랜덤으로 1~5 사이의 정수를 생성해주세요.
2. 3 -> 3개의 정수를 사용자가 직접 입력합니다.
    이때 입력하는 값은 0이상 100이하의 정수이며,
    이 입력은 절대 틀리지않습니다.
3. 50 60 55 입력시,
3-1. 60점 1등 2번학생
3-2. 50점 3등 1번학생
    이렇게 출력해주세요.
    동점자 존재시 가장 마지막 학생을 출력합니다.
4. 사용자 정의 함수 func()을 사용하여
    3명의 평균점수는 55.0점입니다.
    이렇게 출력해주세요.
 
 

 

✔️ 슈도 코딩

1~5 사이의 랜덤으로 정수를 뽑는다.

뽑힌 정수만큼 배열 크기 생성 한다.

최대값 구하는 공식 사용 ! [0] 번 인덱스 번호를 최대값으로 가정 한다.

[0] 인덱스 최대값 보다 큰 수가 있다면 그 숫자가 최대값이 된다.

그때의 인덱스 위치를 알아야 하므로 index 현재 위치를 생성

동점자 일때는 가장 마지막 학생을 출력한다.

함수를 사용해서 뽑힌 정수의 배열 만큼의 점수를 입력 받은 상태의 평균을 구한다.

 

 

## 1~5 사이의 랜덤으로 정수를 뽑는다.
from random import randrange as r
number = r(1,6)
print('%d -> %d개의 정수를 입력하세요'%(number,number)) # 몇개가 생성되었는지 알려준다.
aList=[]

##뽑힌 정수만큼 배열 크기 생성 한다.
for i in range(1,number+1): # 생성된 개수에 따라 달라짐
    userInput = int(input('%d번째 입력 :'% i))
    aList.append(userInput)
    
sorted_aList = sorted(aList, reverse=True)

for i, score in enumerate(aList):
    rank = sorted_aList.index(score) +1
    print(f"{i+1}번 학생: {score}점, {rank}등")

# 합계
total = 0
def func():
    global total
    for i in aList:
        total += i

func()
average = total / len(aList)


print(f"\n{number}명의 평균점수는 {average:.1f}점 입니다. ") 

    
##함수를 사용해서 뽑힌 정수의 배열 만큼의 점수를 입력 받은 상태의 평균을 구한다.
 

 

 

⭐ 예전에 배웠던대로 최대값 구하는 공식을 사용 해보았지만 파이썬엔 이미 정렬이 가능한 함수들이 있다.

## 최대값 구하는 공식 사용 ! [0] 번 인덱스 번호를 최대값으로 가정 한다.
maxNum = aList[0]
index = 0
##[0] 인덱스 최대값 보다 큰 수가 있다면 그 숫자가 최대값이 된다.
##그때의 인덱스 위치를 알아야 하므로 index 현재 위치를 생성
##동점자 일때는 가장 마지막 학생을 출력한다. 같거나 클때
for i in range(1,len(aList)):
if maxNum <= aList[i]:
maxNum = aList[i]
index = i
 

 

 

⭐ 알아볼 함수 ⭐

 

✔️ sorted() 함수

▪️ 정렬할 때 사용하는 함수

 

▪️ reverse 옵션 (reverse 파라미터)

해당 파라미터를 이용하면 오름차순으로 정렬할지 내림차순으로 정렬할지 정할 수 있습니다.

디폴트로는 reverse=False로 오름차순으로 정렬이 됩니다.

sorted( ~~ , reverse=True)로 입력하게 되면 내림차순으로 정렬하여 반환합니다.

 

▪️ key 옵션 (key 파라미터)

sorted 함수의 key 파라미터는 어떤 것을 기준으로 정렬할 것인가? 에 대한 기준입니다.

즉, key 값을 기준으로 비교를 하여 정렬을 하겠다는 것인데, 이것을 정해 줄 수 있는 파라미터입니다.

sorted( ~~ , key=뭐뭐)로 입력하게 되면 해당 키를 기준으로 정렬하여 반환합니다.

 

 

✔️ enumerate() 함수

▪️ 리스트의 원소에 순서값을 부여해주는 함수

 

 

 

다른 풀이

# 실습 문제

##1. 랜덤으로 1~5 사이의 정수를 생성해주세요.
import random as r

def func(aList): # 인자를 넣으면 동작하도록 
    return sum(aList)/len(aList) # 총합구하는 함수 / List 길이 함수

randNum=r.randrange(1,6)
print('randNum=',randNum)
##2. 3 -> 3개의 정수를 사용자가 직접 입력합니다.
##    이때 입력하는 값은 0이상 100이하의 정수이며,
##    이 입력은 절대 틀리지않습니다.
numList=[]
for i in range(randNum):
    num=int(input('0이상 100이하의 정수 입력: '))
    numList.append(num)
print(numList)
##3. 50 60 55 입력시,
##3-1. 60점 1등 2번학생
##3-2. 50점 3등 1번학생
print('%d점 %d등 %d번학생' % (max(numList),1,1+numList.index(max(numList),0,len(numList))))
print('%d점 %d등 %d번학생' % (min(numList),randNum,1+numList.index(min(numList),0,len(numList))))
##    이렇게 출력해주세요.
##    동점자 존재시 가장 마지막 학생을 출력합니다.
##4. 사용자 정의 함수 func()을 사용하여
##    3명의 평균점수는 55.0점입니다.
##    이렇게 출력해주세요.
avg=func(numList) # 함수를 실행시키면 평균이 나온다. 
print('%d명의 평균점수는 %.1f점입니다.' % (randNum,avg))
 

 

✔️ sum() 함수

 

✔️ max() , min() 함수

 

✔️ index() 함수

▪️ 인덱스 번호 위치를 찾아주는 함수

▪️ 가장 최근의 것을 찾아준다.

 

 

 

⭐ index() 함수를 이용한 해결

▪️ index는 바로 앞에 있는 값을 찾아내기 때문에 사용할 수 없었다

▪️ index라는 함수 자체가 어디서 부터 어디까지 보겠다 ! 이런건 되는데 무조건 앞에서 부터 본다.

 

#reverse() 내장함수를 활용하여 해결

1️⃣ 반대로 뒤집고

2️⃣ index 위치를 찾은다음

3️⃣ 다시 뒤집어서 원상복귀

 

 

 

728x90
반응형