Sparta/Theory

[250820] 스파르타코딩 본캠프 12일차 (1) - Python 02 - if, for

junecho 2025. 8. 20. 15:19

🟡 Python 2차 강의 🟡

✅ 조건문                                                                  

🔰 if                                                                                                                              

  • 가장 기본적인 조건문. 조건이 참일 경우에만 코드 블록을 실행
  • 조건식은 반드시 불리언 값으로 평가될 수 있는 식 (True/False)
  • 파이썬에서는 0, None, “”(빈 문자열), [](빈 리스트), {}(빈 딕셔너리) 등도 False
if 조건식:
    # 조건식이 True일 때 실행할 코드

 

Ex)

age = 20

if age >= 18:  # age가 18 이상이면 조건은 True
    print("성인입니다.")

*>>> 
출력: 성인입니다.*

 

 

🔰 if - else                                                                                                                   

조건이 참일 때와 거짓일 때 각각 다른 코드를 실행하고 싶을 때 사용

if 조건식:
    # 조건이 True일 때 실행되는 코드
else:
    # 조건이 False일 때 실행되는 코드

 

Ex)

age = 16

if age >= 18:
    print("성인입니다.")
else:
    print("미성년자입니다.")

*>>>
미성년자입니다.*

 

 

 

🔰 if - elif - else                                                                                      

여러 조건을 순차적으로 검사 해야할 경우, if 뒤에 elif (else if) 문을 하나 이상 사용할 수 있음

elif 문은 이전 조건들이 모두 False 일 때 자신의 조건을 검사

마지막으로 모든 조건이 거짓이라면 else 실행

if 조건식1:
    # 조건1이 True일 때 실행할 코드
elif 조건식2:
    # 조건1은 False이고, 조건2가 True일 때 실행할 코드
elif 조건식3:
    # 조건1,2 모두 False이고 조건3이 True일 때 실행할 코드
else:
    # 위의 모든 조건이 False일 때 실행할 코드

 

Ex)

score = 85

if score >= 90:
    print("A 학점")
elif score >= 80:
    print("B 학점")
elif score >= 70:
    print("C 학점")
else:
    print("D 학점")
    
*>>>
B 학점*

 

 

🔰 연산자                                                                                                  

▶  논리 연산자

  •  and : 모든 조건이 True일 때만 True
  •  or : 하나라도 조건이 True이면 True
  •  not : 조건의 결과를 반전(True ↔ False)

▶ 비교 연산자

  •  == : x와 y가 같으면 True
  •  ≠ : x와 y가 다르면 True

 

Ex) 짝수/홀수 판별

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

if num % 2 == 0:
    print("짝수입니다.")
else:
    print("홀수입니다.")

*>>>
숫자를 입력하세요: 9
홀수입니다.*

 

Ex) 로그인 검증

correct_id = "admin"
correct_pw = "1234"

user_id = input("아이디를 입력하세요: ")
user_pw = input("비밀번호를 입력하세요: ")

if user_id == correct_id and user_pw == correct_pw:
    print("로그인 성공!")
elif user_id == correct_id and user_pw != correct_pw:
    print("비밀번호가 틀렸습니다.")
else:
    print("존재하지 않는 계정입니다.")
    
*>>>
아이디를 입력하세요: csa1215
비밀번호를 입력하세요: 1234
존재하지 않는 계정입니다.*

 

 

🔰                                                                                                            

  • pass 구문
x = 10
if x > 0:
    pass  # 조건이 True지만 아무 동작도 하지 않음
else:
    print("0 이하입니다.")

 

  • in / not in 연산자
fruits = ["apple", "banana", "cherry"]

if "apple" in fruits:
    print("사과가 있습니다.")   # 출력됨

if "orange" not in fruits:
    print("오렌지가 없습니다.")  # 출력됨

 

  • 삼항 연산자 (조건부 표현식)

한 줄로 간단한 조건문을 표현할 수 있는 조건부 표현식(ternary operator)를 지원

참일때값 if 조건식 else 거짓일때값

 

Ex)

score = 75
result = "합격" if score >= 60 else "불합격"
print(result)

>>>
합격

 

 

✅ 반복문                                                                  

🔰 for                                                                                                                             

주어진 범위나 반복 가능한(iterable) 객체의 요소를 순회하면서 실행

리스트, 튜플, 문자열, 범위(range) 객체 등과 함께 자주 사용

 

1) 기본 구조

for 변수 in 반복가능한객체:
    수행할 코드 블록

 

Ex) 리스트 순회

numbers = [1, 2, 3, 4, 5]

for i in numbers:
    print(i)
    
>>>
1
2
3
4
5

 

2) range() 함수와 함께 사용

  • 특정 범위의 정수 시퀀스를 생성하는 함수
  • 예를 들어 range(5)는 0부터 4까지의 정수를 만듦
  • range(start, end, step) 형태로 시작값, 끝값(끝값은 포함하지 않음), 증가 폭을 지정할 수 있으며 음수 step도 가능

Ex)

for i in range(5):
    print("현재 i의 값:", i)
    
>>>
현재 i의 값: 0
현재 i의 값: 1
현재 i의 값: 2
현재 i의 값: 3
현재 i의 값: 4
for i in range(10, 0, -2):  # 10부터 1까지 짝수만
    print(i)
    
>>>>
10
8
6
4
2

 

3) 문자열 순회

text = "Python"
for i in text:
    print(i)
    
*>>>> 
P
y
t
h
o
n*

 

 

🔰 while                                                                                                                          

조건식이 참(True)인 동안 해당 코드 블록을 반복

조건이 참이면 while 블록 안의 코드들이 실행되고, 실행 완료 후 다시 조건을 평가

조건이 처음부터 False라면 반복문은 한 번도 실행되지 않음

while 조건:
    수행할 코드 블록

 

Ex) 1~5 출력하기

count = 1
while count <= 5:
    print(count)
    count += 1  # count를 1 증가시켜 조건 eventually False가 되도록 함
    
>>> 
1
2
3
4
5

 

 

🔰 break, continue                                                                                                         

  • break
    • 현재 반복문을 즉시 종료.
    • 반복 조건이 아직 참이더라도, break를 만나는 순간 반복문을 빠져나옴
  • continue
    • 현재 반복 순회를 건너뛰고 다음 반복으로 넘어감
    • 즉, 특정 조건일 때는 아래 코드를 실행하지 않고, 다시 반복문의 처음(조건 검사 단계)으로 이동

Ex) break 예시 - 1부터 10까지 숫자를 출력하되, 숫자가 5에 도달하면 반복을 종료

for i in range(1, 11):
    if i == 5:
        break
    print(i)
    
>>>
1
2
3
4

 

Ex) continue 예시 - 1부터 10까지 숫자를 출력하되, 5는 건너뛰고 싶다

for i in range(1, 11):
    if i == 5:
        continue
    print(i)

>>>
1
2
3
4
6
7
8
9
10

 

 

🔰                                                                                                                                      

  • 중첩 반복문

2차원 리스트(리스트의 리스트)나 행과 열을 처리해야 하는 경우 유용

 

Ex) 구구단 출력

for dan in range(2, 10):      # 2단부터 9단까지
    for num in range(1, 10):  # 각 단에서 1부터 9까지 곱하기
        print(f"{dan} x {num} = {dan * num}")
    print()  # 각 단이 끝나면 한 줄 공백
    
*>>>
2 x 1 = 2
2 x 2 = 4
...
2 x 9 = 18

3 x 1 = 3
3 x 2 = 6
...
9 x 9 = 81*

 

  • enumerate()

인덱스와 값을 동시에 얻을 수 있음

fruits = "apple"

for idx, fruit_char in enumerate(fruits):
    print(f"{idx}: {fruit_char}")
    
*>>>
0: a
1: p
2: p
3: l
4: e*

 

  • zip()

여러 리스트를 병렬로 순회

fruits = ["apple", "banana", "cherry"]
prices = [1000, 2000, 3000]

for fruit, price in zip(fruits, prices):
    print(f"{fruit}: {price}원")
    
*>>>
apple: 1000원
banana: 2000원
cherry: 3000원*

 

  • 반복문을 활용한 실용적 예시

Ex ) 합계 구하기

numbers = [10, 20, 30, 40, 50]
total = 0
for num in numbers:
    total += num  # total = total + num
print("리스트 내 숫자들의 합:", total)

*>>>
리스트 내 숫자들의 합: 150*

 

Ex) 특정 패턴 출력하기

# 사용자로부터 줄 수를 입력 받아 해당 줄만큼의 별을 출력
height = 5
for i in range(1, height+1):
    print("*" * i)
    
>>>
*
**
***
****
*****

 

 


🔰 과제                                                                                                  

실습 01

더보기
더보기

1)

age = int(input("나이를 입력하세요 : "))
rules = {'유아':0, '청소년':8000, '성인':12000, '시니어':6000}
rules_list = list(rules.items())

if 0 <= age <= 6:
    print(f"{rules_list[0][0]}입니다. 요금은 {rules_list[0][1]}원 입니다.")
elif 7 <= age <= 18:
    print(f"{rules_list[1][0]}입니다. 요금은 {rules_list[1][1]}원 입니다.")
elif 19 <= age <= 64:
    print(f"{rules_list[2][0]}입니다. 요금은 {rules_list[2][1]}원 입니다.")
elif 65<= age < 150:
    print(f"{rules_list[3][0]}입니다. 요금은 {rules_list[3][1]}원 입니다.")
else:
    print("잘못된 나이입니다.")

 

 

2) 

user_height = list(input("키를 입력하세요 : "))
kg = int(input("몸무게를 입력하세요 : "))
user_height.insert(1,'.')
height = float(''.join(user_height))
bmi = kg / (height**2)
print(bmi)

if height or kg > 0:
   if 0 <= bmi <= 18.5:
       print("저체중입니다.")
   elif 18.5 < bmi <= 23:
       print("정상입니다.")
   elif 23 < bmi <= 25:
       print("과체중입니다.")
   else:
       print("저체중입니다.")
else:
   print("잘못된 입력입니다.")

 

 

 3)

a = int(input("삼각형 변의 길이 1개를 입력하세요 : "))
b = int(input("삼각형 변의 길이 1개를 입력하세요 : "))
c = int(input("삼각형 변의 길이 1개를 입력하세요 : "))

if a < 0 or b < 0 or c < 0 or not a+b>c or not a+c>b or not b+c>a:
    print("삼각형이 아닙니다.")
else:
    if a**2 + b**2 == c**2 or a**2 + c**2 == b**2 or b**2 + c**2 == a**2:
        print("직각삼각형")
    elif a == b == c:
        print("정삼각형")
    elif a == b or a == c or b == c:
        print("이등변삼각형")
    else:
        print("일반삼각형")

 

실습 02

더보기
더보기

1)

# 내코드
user = int(input("정수를 입력하세요 : "))
mylist = []

for i in range(1, user+1):
    if user % i == 0:
        mylist.append(i)
    print(i)

print(mylist)
new = " ".join(map(str, mylist))
print(f"{user}의 약수 : {new}")
# 답코드
user = int(input("정수를 입력하세요 : "))

print(f"{user}의 약수 : end=' '")

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

 

 

2) 

user = list(map(str, input("문자열을 입력하세요 : ")))
print(user)
mylist = []

for i in range(len(user)-1, -1, -1):
    mylist.append(user[i])

print(''.join(mylist))

 

 

 3)

# 내코드
# 그냥 랜덤 숫자를 정답으로 하게끔 작성함
import random

user_num = int(input("정수를 입력하세요 (1~10) : "))
mylist = []

for i in range(1,11):
    mylist.append(i)

answer_num = random.choice(mylist)

while user_num != answer_num:
    if user_num != answer_num:
        print("틀렸습니다. 다시 입력하세요.")
    else:
        break
    user_num = int(input("정수를 입력하세요 (1~10) : "))
print("정답입니다!")
# 답코드
target = 7

while True:
    guess = int(input("정수를 입력하세요 (1~10) : "))
    if guess == target:
        print("정답입니다!")
        break
    else:
        print("틀렸습니다. 다시 입력하세요.")

 

미니과제

더보기
더보기
#####################################################################################
### 미니과제 조건문 5문제 ###
'''
# 01
num = int(input("입력 : "))

if num % 3 == 0 and num % 7 == 0:
    print("3과 7의 공배수입니다.")
elif num % 3 == 0 and num % 7 != 0:
    print("3의 배수입니다.")
elif num % 3 != 0 and num % 7 == 0:
    print("7의 배수입니다.")
else:
    print("3과 7의 배수가 아닙니다.")


# 02
user = input("입력 : ")
if user.isalpha() == True and len(user) >= 8:
    print("사용 가능한 비밀번호입니다.")
else:
    print("사용 불가능한 비밀번호입니다.")


# 03
num = int(input("입력 : "))

if num % 4 == 0 and num % 100 != 0 or num % 400 == 0:
    print("윤년입니다.")
else:
    print("윤년이 아닙니다.")


# 04
a, b = map(int, input("입력 : ").split(' '))
print(f"a = {a}, b = {b}")

if a != 0 and b != 0:
    if a/b > 1:
        print("a가 b보다 큽니다.")
    elif a/b == 1:
        print("두 수는 같습니다.")
    else:
        print("a가 b보다 작습니다.")
else:
    print("0으로 나눌 수 없습니다.")


#05
user = input("입력 : ")

if user.isalpha() == True:
    if user.islower() == True:
        print("전부 소문자")
    elif user.isupper() == True:
        print("전부 대문자")
    else:
        print("대소문자 섞여 있음")
else:
    print("알파벳 이외의 문자가 있습니다.")

'''

#####################################################################################
### 미니과제 반복문 9문제 ###
'''
# 01
num = int(input("입력 : "))

for i in range(1,num+1):
    print(i)


# 02
num = int(input("입력 : "))

for i in range(num, 0, -1):
    print(i)


# 03
for i in range(1,100):
    if i % 3 == 0:
        print(i)


# 04
num = int(input("입력 : "))

for i in range (1,num+1):
    if num % i == 0:
        print(i)


# 05
num = int(input("입력 : "))
cnt = 0

while num != 0:
    cnt = cnt + num
    num = int(input("입력 : "))

print(f"합계 : {cnt}")


# 06
num = int(input("입력 : "))

for i in range(1,num+1):
    print(f"{str(i)*i}")


# 07
import random

mylist = []
for i in range(1, 101):
    mylist.append(i)
picknum = random.choice(mylist)
print(picknum)

user_num = int(input("입력 : "))

while user_num != picknum:
    if user_num > picknum:
        print("너무 큽니다.")
    else:
        print("너무 작습니다.")
    user_num = int(input("입력 : "))
print("정답입니다!")


# 08
for i in range(2,10):
    for j in range(1,10):
        print(f"{i} x {j} = {i*j}")


# 09
userlist = list(map(int, input("입력 : ")))
print(userlist)
count = 0
sumnum = 0

for i in range(0, len(userlist)):
    sumnum += userlist[i]
    count += 1
print("합계 : ", sumnum)

'''
#####################################################################################
### 미니과제 도전과제 2문제 ###