while문 연습문제
while문을 사용해서 100이상의 자연수 중 가장 작은 23의 배수를출력하시오
코드
i = 100 - > 100이상의 자연수 이므로 시작하는 변수를 i로 지정
while i % 23 != 0: - > 23의 배수를 구해야 하기때문에 i를 23을 나눗셈 했을때 0이 아닌 경우
i += 1 - > i를 1씩 더해간다.
print(i) - > 아닌 경우 i 출력
정답 = 115
파보나치의 수열을 코드로 구현하고 50번째 항까지 구하세요!
파보나치 수열이란 첫 항과 두번째항은 1로 고정입니다. 그리고 3번 항부터는 앞 두 항의 합으로 계산합니다.
코드
i = 1 -> 항의 순서를 돌리기 위한 변수
current = 1 -> 두 번째 항
previous = 1 -> 첫 번째 항
while i < 50: -> 50번째 항이 되기 전까지 반복
temp = previous -> 이전의 항을 현재 항으로 지정해줘야 하기 때문에 임시항에 미리 저장
previous = current -> 현재항을 이전항에 저장
current = temp + previous -> 현재항은 임시항 temp와 previous의 합
i += 1 -> 조건이 만족할때 까지 i는 1씩 더해져감
리스트의 원소 중 홀수를 제거
numbers = [1, 7, 3, 6, 5, 2, 13, 14]
i = 0 -> 리스트의 첫항은 '0'으로 시작하기 때문에 시작하는 변수를 0으로 지정
while i < len(numbers): -> i가 리스트 안의 항의 수보다 작을 경우
if numbers[i] % 2 != 0: -> 만약 numbers의 항이 2로 나누 었을때 0이 아닌 경우
del numbers[i] -> numbers의 그 항을 삭제 한다.
else: -> 그 외의 경우에는
i += 1 -> i를 하나씩 더해 간다.
리스트의 원소 뒤집기
numbers = [2,3,5,7,11,13,17,19,23,29,31]
#변수설명
left = numbers의 왼쪽 항 번호
right = numbers의 오른쪽 항 번호
for left in range(len(numbers) // 2): -> left가 numbers의 항의 수보다 절반 만큼 그 수 안에 있을 경우
right = len(numbers) - left - 1 -> right는 총 항의 갯수에서 left를 빼고 1을 더 뺀 값이다.
1. 첫 번째 방법
temp = numbers[left] -> left의 값을 임시항인 temp에 저장한다
numbers[left] = numbers[right] -> right의 항번호를 left에 지정한다.
numbers[right] = temp -> 임시항 temp의 번호를 right에 지정한다.
2. 두번째 방법 - 튜플을 사용
numbers[left], numbers[right] = numbers[right], numbers[left]
print(numbers)
-> for 조건문에서 2로 나눠주는 이유는 나눠주지 않게 되면 2번 순환하기 때문에 원상태로 돌아오게 된다.