# 1. Language/🌊 Python

TIL # Python 예제

둥굴둥굴둥굴레차 2021. 2. 16. 15:22

 

약수란?

값을 특정 숫자로 나누었을 때(%) 나머지가 0인 경우!

N = 10
for i in range(1, N+1):
    if N%i == 0:
        print(i, end=' ')

# 1 2 5 10

 

자릿수 더하기 문제

자연수 number를 입력 받아, 각 자릿수의 합을 계산하여 출력하시오.

예시)

sum_of_digit(1234) #=> 10
sum_of_digit(4321) #=> 10
def sum_of_digit(number):
    print('---------------------')
    # 1. 변수 초기화
    total = 0

    # 2. 반복
    # 몫을 계속 나누다가 0/10 => 0,
    # 더이상 나눌 수 없는 False가 될 때까지 반복한다
    while number / 10:
        # number, remainder = divmod(number, 10)

        # 3. 몫과 나머지를 분리하기
        remainder =  number % 10
        number = number // 10  # 몫으로 나온 값은 다음에 나눌 수로 덮어쓰기
        # 4. 나머지 더하기
        total += remainder

    return total

2차원 배열

 

Index로 접근하여 2차원 배열 안의 모든 수의 총합을 구해라.

# numbers = [[1, 4], [10, 5], [20, 30]]

# 외부 리스트를 (Index 값으로) 순회하여 내부 리스트를 하나씩 꺼낸다.
for i in range(len(numbers)):  # range(3) -> 0, 1, 2
    # 내부 리스트를 (Index 값으로) 순회하여 숫자를 하나씩 꺼낸다.
    for j in range(len(numbers[i])):    # range(2) -> 0, 1
        # 최종 숫자 요소 접근 : 2차원_배열_이름[외부_리스트_인덱스][내부_리스트_인덱스]
        result += numbers[i][j]

return result

 

학생별 총합을 순서대로 출력하시오.

students = [
 [100, 80, 100],
 [90, 90, 60],
 [80, 80, 80]
]

def student_sum(students):
    i=0

    while i<len(students):
        j=0
        sum01=0 # 위의 전과목 sum해줬을 때와 유일하게 다른 부분! 
                # 이중for문, 이중 while문 일 때 두 번째에서 바로 결과값을 프린트해내면 된다.
        for j in range(len(students[i])):
            sum01+=students[i][j]
            j+=1
        i+=1
        print(sum01)
student_sum(students)


## 다른풀이
## index사용 안함
for student in students:
    result = 0

    for score in student:
        result += score

    print(result)


## 다른풀이
## for문 index 버전
def student_sum(students):
    for i in range(len(students)):  # i : 학생 리스트 인덱스
        print(students[i])
        result = 0

        for j in range(len(students[i])):  # j : 학생의 과목별 점수 리스트 인덱스
            result += students[i][j]  # 학생_데이터[학생_인덱스][학생의_과목_인덱스]

        print(result)

과목별 출력하시오.

for x in range(len(students[0])):  

    # 과목별 점수 총합
    total = 0

    # 학생 : 0-김지용, 1-김보민, 2-주원상
    for y in range(len(students)):  

        # 김지용의 국어점수, 김보민 국어점수, 주원상의 국어점수
        total += students[y][x]

    # 과목별 점수 Print
    print(total)