[백준 파이썬 3052번]1차원 배열, 평균구하기 ★객체저장방법(map)★
2021. 7. 29. 17:09
728x90
반응형
import sys
import copy
while True: #N의 갯수 판독을위 한 while문
try: #입력값들이 없을경우 except 구문 실행하여 종료
N = int(sys.stdin.readline()) #N의 값 받아보기
if N<0 or N>1000:
print("N의 값 다시 입력하세요")
else: #N의값이 맞을경우
while True:
a= list(map(float,sys.stdin.readline().split(' ')))
#a객체에 map함수를 활용하여 float형태로 리스트에 빈칸띄우면 저장한다
if len(a) != N: #N의개수와 a리스트에 저장되어있는 요소의 개수가 다르다면
print("과목 개수가 {}개 입니다. 다시입력하세요.".format(len(a)))
elif len(a) == N: #N의 개수와 a리스트에 저장되어있는 요소의 개수가 같다면
for i in range(len(a)):
if a[i]<0 or a[i]>100:
print("점수의 범위는 0점이상 100점이하입니다. 다시입력하세요")
else:
break
except:
break
zozak = copy.deepcopy(a) #deepcopy를 하게되면 a객체와 zozak 객체는 다른 객체
#그냥 copy()를 하게되면 연동되어있는 객체가 된다.
chadae = max(a) #max함수를 통해 chadae변수에 저장
average = 0
for i in range(len(a)):
zozak[i] = (a[i]/chadae)*100
average += float(zozak[i])
print(zozak)
print("{:.6f}".format(average/ len(a))) #소수점6자리까지 float형태로 출력해라
11번째줄 a = list(map(float,sys.stdin.readline().split())) ==> 이부분 헷갈렸는데, 한 변수(객체)안에 여러개의 값들을 map함수를 활용하여 리스트화 하여 저장할수 있음을 기억해야겠다.
23번째줄 deepcopy() == >깊은 복사 와 copy()==>얕은 복사 의 차이점 꼭 기억하기!!!
31번째줄 format함수 표현법 잘기억하기!!!
728x90
반응형
'Python(백준) > 배열' 카테고리의 다른 글
[Python] 백준 2562번 최대값 (0) | 2022.09.14 |
---|---|
[백준 파이썬 4344번]1차원 배열, 평균은 넘겠지 ★객체LIST저장방법★but아직 미구현 (0) | 2021.07.31 |
[백준 파이썬 8958번]1차원 배열, OX 퀴즈 ★객체LIST저장방법★ (0) | 2021.07.30 |
[백준 파이썬 3052번]1차원 배열, 나머지 구하기 ★SET함수★ (0) | 2021.07.29 |
[백준 파이썬 2577번]1차원 배열, 숫자의개수 (0) | 2021.07.28 |