본문 바로가기
프로그래밍/파이썬기초

if조건문, 홀수짝수 판별, 약수구하기_파이썬 기초

by 조크리 2021. 3. 18.
반응형

파이썬 찐초보

 

 

오늘의 목표

1. 조건문 사용하기

2. 반복문 안에 조건문을 사용하기

3. 약수 찾는 알고리즘 구현하기

 

 

 

1. 반복문 활용 연습

 

그럼 지난 글에서 정리했던 반복문을 복습해보자.

 

먼저, 1부터 사용자가 입력한 수까지의 합을 출력하는 코드를 작성해보자. 

 

반복문을 사용하는 방법은 for와 while 두 가지가 있는데 먼저 while을 사용해보자. 

#sum, i 변수 생성
sum = 0
i = 1

#number변수 생성
number = int(input("숫자를 입력하세요 : "))
#while문 이용
while(i <= number):
  sum = sum + i
  i += 1
#sum값 출력
print(sum)

 

 

 

 

 

2. 조건문 알기

 

조건문은 특정 조건을 만족할 때, 만족하지 않을 때 어떤 일을 수행하게 하는 것을 의미한다. 

아래 그림처럼 어떠한 조건을 만족한다면 True 화살표를 따라가고 조건을 만족하지 않는다면 False화살표를 따라가서 그 곳에 쓰여있는 명령문을 수행하게 된다. 

 

출처 https://gunsystem.tistory.com/87

 

3. 조건문 예제 - 티켓 값 계산

 

티켓 값이 기본 3000원이고 20세 미만이면 20%를 할인해주는 프로그램을 만들어보자. 

 

입력 값 : 나이, 티켓 기본 값

출력 값 : 최종 티켓 값

수식 : 20세 미만인 경우 티켓 = 티켓 * 0.8 

 

age = int(input("나이를 입력하세요 : "))
ticket = 3000

if age < 20:
  ticket = ticket * 0.8

print("티켓 값은 %d원 입니다." %(ticket))

 

 

3-1 조건문 예제 - 홀수 짝수 판별 프로그램

이번에는 if와 else를 이용해보자.

만약 조건을 만족한다면 해당 명령어를 수행하고, 그렇지 않으면 다른 명령어를 수행한다. 

 

number = int(input("숫자를 입력하세요: "))

if number % 2 == 0:
  print("입력한 숫자 %d는 짝수입니다." %(number))
else:
  print("입력한 숫자 %d는 홀수입니다." %(number))

 

 

3-2. 조건문 예제 - 국어, 영어 점수의 평균과 그에 따른 평가 안내 

이번에는 if, elif, elif, else 를 활용해보자.

즉, 조건을 만족하면, 그렇지 않고 이 조건을 만족하면, 그렇지 않고 이 조건을 만족하면, 이도저도 아니면~

각각에 해당하는 명령어를 수행하는 것이다.

 

국어점수와 영어점수를 입력받고, 그 평균을 구한다.

평균이 90점 이상이면 매우 우수합니다. 평균이 80점 이상이면 우수합니다. 평균이 70점 이상이면 보통입니다. 

평균이 60점 이상이면 노력이 필요합니다. 그보다 낮으면 노력이 많이 필요합니다. 를 출력해보자. 

kor = eval(input("국어 점수 : "))
eng = eval(input("영어 점수 : "))

avg = (kor + eng)/2

if avg >= 90:
  result = "매우 우수합니다."
elif avg >= 80:
  result = "우수합니다"
elif avg >= 70:
  result = "보통입니다"
elif avg >= 60:
  result = "노력이 필요합니다"
else:
  result = "노력이 많이 필요합니다"

print("국어점수 %0.2f점과 영어점수 %0.2f점의 평균은 %02.f이고 평가는 %s입니다." %(kor, eng, avg, result))

위의 코드를 활용하면 A, B, C, D 등급으로도 나타낼 수 있고 수학, 과학 등 다른 과목을 추가할 수도 있다!

 

 

 

4. 반복문 안에 조건문 예제 - 4의 배수인 자연수 개수 구하기

이번에는 어떤수를 입력받은 뒤 1부터 그 숫자까지의 자연수 중에서 4의 배수는 몇 개인지 구하는 프로그램을 작성해보자.

 

이 경우 반복문 안에 조건문이 들어가게 되는데 for나 while 둘 다 가능하다. 변수의 개수를 줄이기 위해

for반복문을 활용해보자! 

 

먼저 number변수를 만들어서 사용자에게 숫자를 입력받아야한다.

그 다음 4의 배수의 개수를 의미하는 변수 count를 만든다.

 

이제 for문에 i라는 변수를 생성해서 범위를 1부터 사용자가 입력한 number+1까지로 설정한다. 

range()의 경우 끝 값 -1 까지가 범위라서 사용자가 입력한 number +1 을 해줘야 사용자가 입력한 number까지 살펴볼 수 있다. 

만약에 i % 4의 값이 0이라면 i는 4의 배수일 것이고 count는 1증가시킨다. (4의 배수일때만 count값 1 증가)

 

for 반복문이 모두 종료되면 맨 아래 print()안에 있는 명령문을 출력한다! 

 

number = int(input("숫자를 입력하세요 : "))
count = 0

for i in range(1, number + 1):
  if (i % 4 == 0):
    count += 1

print("1부터 %d까지의 숫자 중 4의 배수는 총 %d 개 입니다." %(number, count))

같은 방법으로 5의 배수를 구할 수도 있다. 

 

 

4-2. 반복문 내 조건문 - 홀수만 더하기 

 

이제 숫자를 입력받아서 1부터 입력받은 숫자 중 홀수만 뽑아낸 뒤

그 홀수를 모둔 더한 홀수의 총 합을 계산하는 프로그램을 만들어보자. 

 

이 경우 number변수는 사용자가 입력한 값

odd는 홀수인 자연수의 합으로 놓고

 

if 문 안에 odd 변수 값에 i를 더하도록 한다. 

number = int(input("숫자를 입력하세요 : "))
odd = 0

for i in range(1, number + 1):
  if (i % 2 != 0):
    odd += i

print("1부터 %d까지의 숫자 중 홀수인 자연수의 총 합은 %d입니다." %(number, odd))

같은 방법으로 하면 짝수인 자연수의 합도 구할 수 있다. 

 

그럼 홀수의 합과 짝수의 합을 더하는 프로그램은 어떨까?

 

위의 두 코드를 합쳐주기만 하면 된다!

number = int(input("숫자를 입력하세요 : "))
even = 0
odd = 0

for i in range(1, number + 1):
  if (i % 2 == 0):
    even += i
  else:
    odd += i 

print("1부터 %d까지의 숫자 중 짝수인 자연수의 총 합은 %d입니다." %(number, even))
print("1부터 %d까지의 숫자 중 홀수인 자연수의 총 합은 %d입니다." %(number, odd))

 

 

4-3. 반복문 내 조건문 - 어떤 수의 약수 판별하고 구하기

 

이번에는 어떤 수를 입력받은 뒤 그 수의 약수를 출력해보자!

 

number = int(input("숫자를 입력하세요 : "))

for i in range(1, number + 1):
  if (number % i == 0):
    print("%i는 약수입니다." %(i))

  

자, 이번에는 약수입니다, 약수 아닙니다!

이렇게 그 수까지의 자연수를 모두 판별하도록 해보자!

 

이렇게 if-else를 사용하면 사용자가 입력한 숫자까지의 모든 자연수를 약수인지, 아닌지 판별하게 된다. 

 

그럼 마지막 과제!!

 

어떤 수의 약수의 개수를 출력하는 프로그램을 만드세요.

 

 

오늘 글에서 배운 약수 구하는 방법과 개수구하는 방법을 서로 엮어야 해결이 가능하다~!

 

예시 답안은 요기↓

 

number = int(input("숫자를 입력하세요 : "))
count = 0 

for i in range(1, number + 1):
  if (number % i == 0):
    count += 1

print("%d의 약수는 %d개 입니다."%(number, count))

 

 

 

오늘의 목표!

1. 조건문

2. 반복문 내 조건문

3. 약수 구하기

 

정리 끝~!!

 

 

반응형