Python - If문

oceanzoo·2021년 5월 3일
0

if문을 익히기 위해서 예제 문제를 풀어보았다.
문제 출처: 문제에 기재 / 대학교 시절 c언어로 풀어봤던 예제

대학교 시절에 c언어 공부를 통해서 if문을 접해보았지만
파이썬을 통해서는 코드를 짜본 적이 없어서 다시 기초부터 정리해본다.

기본 구조

if 조건문:
	수행할 문장 1-1
	수행할 문장 1-2
	...
elif 조건문 N:
	수행할 문장 N-1
	수행할 문장 N-2
	...
else:
	수행할 문장 a-1
	수행할 문장 a-2
	...

예제

윤년인지 구별해주는 프로그램

연도를 입력하였을 때 윤년이면 '윤년입니다'를, 윤년이 아니면 '윤년이 아닙니다'를 출력하는 프로그램을 작성하시오.

* 윤년은 연도가 4의 배수이면서, 100의 배수가 아닐 때 또는 400의 배수일 때이다.

코드

no = int(input("연도를 입력하세요:"))
no >= 1 and no <= 400
if no % 4 == 0 and no% 100 != 0 or no % 400 == 0:
    print("윤년입니다")
else:
    print("윤년이 아닙니다")

피보나치 함수 구하기

정수로 값을 입력받았을 때, 그 값(항) 이하까지의 피보나치 수열을 출력하는 함수를 작성해보시오.

* 피보나치 수열의 기본 규칙은 처음 두 항은 1이고, 세 번째 항부터는 바로 앞의 두 항의 합이 된다.

코드

n = int(input("값을 입력하세요:"))

def fib(n):
    if n <= 1:
        return n
    else:
        return fib(n-1) + fib(n-2)

for i in range(n):
    print(fib(i+1),end=' ')

이 코드에서는 함수와 for문의 개념도 함께 사용해야한다.

  • return fib(n-1) + fib(n-2)는 n이 2이상일 때 n 이전의 값인 fib(n-1)과 그 전의 값인 fib(n-2)을 더한 값을 출력하도록 해준다.
  • 또한 n이하의 수열을 나타내기 위해 for문을 사용하였다.
    이때, 한 줄에 결괏값을 계속 이어서 출력하기 위해서 매개변수 end를 사용해 끝 문자를 지정하였다.

DashInsert 함수

문제 출처 : https://codingdojang.com/scode/529?answer_mode=hide

코드

numbers = list(map(int,input()))
answers = [str(numbers[0])]

for i in range(len(numbers)-1):
    if numbers[i] %2 ==0 and numbers[i+1] %2 == 0:
        answers.append('*')
    elif numbers[i] % 2 ==1 and numbers[i+1]%2 ==1:
        answers.append('-')
    answers.append(str(numbers[i+1]))

print("".join(answers))
  • map(function, iterables)
    반복 가능한 자료형(iterables)의 요소를 함수(function) 인자로 전달하여 반환시킨다.
    python3부터는 list형으로 반환하지 않기 때문에 list형으로 바꿔줘야한다.
    이 문제에서는 문자열이나 소수점이 있는 숫자를 정수로 바꿔주는 함수인 int를 사용해서 문자열을 숫자리스트로 바꿔주었다.
  • "구분자".join(list or tuple)
    list나 tuple 내의 문자열들을 하나의 문자열로 합칠 때 사용한다.
    즉, 자료형이 list에서 string으로 바뀌어 반환된다.
    구분자 없이 이어붙이기 위해 "".join(answers))를 사용했다.

✔️ 그렇다면 구분자로 구분된 하나의 문자열을 구분자를 기준으로 나누어 list 형태로 바꾸어줄 때 쓰이는 것은?
문자열.split("구분자")
즉, 자료형이 string에서 list로 바뀌어 반환된다.

예제

x = "a,b,c,d"
y = x.split(",")
print(y)

결과
['a', 'b', 'c', 'd']

또한 따로 따로 저장도 가능하다.

예제

text = "x,y,z"
a,b,c = text.split(",")
print(a)
print(b)
print(c)

결과
x
y
z

자료 출처: https://specialscene.tistory.com/64

profile
준비된 개발자를 위한 날갯짓 🦋

0개의 댓글