(조공첨부 ㅠㅠ)
난수 100개 생성해서 평균, 최대최소 구하는 과제인데요.
readlines랑 readline 두 가지 방법을 사용해서 구해야 합니다.
1.두 경우 모두 min 값을 구할 때 초기값이 그대로 나오는 에러.
2. readline 방법으로 max 값을 구했을 때 이상한 값이 튀어 나오네요.
3. readlines랑 readline 두 가지 방법의 avg가 다른 에러.
도움 좀 주세요... 굽신 ㅠ
(조공첨부 ㅠㅠ)
난수 100개 생성해서 평균, 최대최소 구하는 과제인데요.
readlines랑 readline 두 가지 방법을 사용해서 구해야 합니다.
1.두 경우 모두 min 값을 구할 때 초기값이 그대로 나오는 에러.
2. readline 방법으로 max 값을 구했을 때 이상한 값이 튀어 나오네요.
3. readlines랑 readline 두 가지 방법의 avg가 다른 에러.
도움 좀 주세요... 굽신 ㅠ
잘 베끼셨어야지
나같으면 평균구하는 구현체, 최소값 구하는 구현체, 최대값 구하는 구현체 등을 준비해둔 후에 숫자 읽어들이는 모듈에 모두 등록하고 각각의 숫자들을 읽을때마다 구현체들에게 통보해주는 식으로 결합도를 낮게 가져갈거임.
그러면 각각의 구현체들은 따로 테스트하기 편하고 숫자 읽어들이는 구현체는 파일이든 키보드든 숫자 읽어들이는 일만 하면되니 따로 테스트하기 편하고 좋음.
일단 최소 최대 저장하는 변수 이름부터 고쳐. min, max라는 기본 함수가 파이썬에 존재한다. 최소값, 최대값 구하는 함수임.
그리고 readline() 방법에서 min, max 구할 때 lines[i]가 아니라 line이랑 비교해야지. 짜다가 졸았냐?
그리고 min, max랑 값을 비교할 때 lines[i]나 line이랑 바로 비교해 버리면 문자열과 숫자의 비교가 되어 버려서 문자열끼리 비교하게 되고(문자열이 꼭 숫자 형태라는 보장이 없으므로(문자열이 "abc123" 같이 숫자로 바꿀 수 없을 수도 있으므로) → 파이썬은 자동으로 숫자를 문자열화해서 비교함) 문자열끼리의 비교는 아스키 코드 위치 비교, 즉 사전 위치 비교인데 "100"보다 작아야 하는데 "100"보다 작은 문자열은 0으로 시작하는 값이거나 "1", "10" 뿐임. 하지만 점수에는 0으로 시작하는 값이 없을 것이므로 에러가 나는 거. min, max랑 비교할 때 int(lines[i]), int(line)처럼 정수끼리 비교하게 고쳐야 함.
와 해결됐네요 감사합니다 ㅠㅠㅠㅠ