Programming 기초/Python

[Python 기초 #5] 제어문 if, while, for

코딩상륙작전 2023. 4. 18. 17:56

* if 문

  • if 조건문 형식으로, 조건문이 참일 때 아래 문장을 실행한다. 여기서 if 문에 속하는 모든 문장은 같은 너비로 들여쓰기(identation)를 해주어야 한다.
  • 조건문 뒤에는 반드시 콜론(:)이 붙는다.(문법)
money = 2000
card = True
if money >= 3000 and card:
    print("택시를 타고 가라")
else:
    print("걸어 가라")
--------------------------------
걸어 가라

 

* x in s, x not in s

in not in
x in 리스트 x not in 리스트
x in 튜플 x not in 튜플
x in 문자열 x not in 문자열

* pass : 조건문에서 아무 일도 하지 않게 설정하고 싶을 때 

poket = ['paper', 'money', 'cellphone']

if 'money' in poket:
    pass	# 한 줄일 때는 콜론(:) 옆에 바로 이어서 써도 된다.
else: print("카드를 꺼내라")  
----------------------------------------------

 

* elif 다양한 조건을 판단할 때

poket = ['paper', 'cellphone']
card = True

if 'money' in poket:    # 주머니에 돈이 있으면
    print("택시를 타고 가라1")
    
elif card:  # 주머니에 돈이 없고 카드가 있으면
    print("택시를 타고 가라2")
    
else:   #주머니에 돈도 없고 카드도 없으면
    print("걸어 가라")
-------------------------------------------
택시를 타고 가라2

 

* 조건부 표현식

if score >= 60:
	message = "success"
else:
	message = "failure"

위 코드에 (가독성을 높이고자 한 줄로 줄이는) 조건부 표현식을 적용하면 아래와 같다.

조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우
message = "success" if score >= 60 else "failure"

 

 * while문

prompt = """
1. Add
2. Del
3. List
4. Quit

Enter number: """

number = 0
while number != 4:	# 4가 아니면 prompt 문자열을 다시 출력한다.
    print(prompt)
    number = int(input())	# input()은 입력받는 함수다.

 

* break문과 continue문

- break 문은 while문을 탈출한다.

- continue문은 처음으로 돌아간다.

coffee = 10
while True:
    money = int(input("돈을 넣어주세요 :"))

    if money == 300:
        print("커피 한 잔 나왔습니다. 남은 커피 양은 %d 입니다.\n" % (coffee-1))
        coffee -= 1
    elif money <= 300:
        print("돈이 부족합니다. 금액을 반환합니다.\n")
        continue	# 맨 처음으로 돌아간다.
    else:
        print("커피 한 잔 나왔습니다.")
        print("남은 커피 양은 %d 입니다. 거스름돈 : %d를 반환합니다.\n" % (coffee-1, money-300))
        coffee -= 1
    if coffee == 0:
        print("재고가 소진됐습니다. 판매를 종료합니다.")
        break	# while문을 탈출한다.
---------------------------------------------------------
돈을 넣어주세요 :200
돈이 부족합니다. 금액을 반환합니다.

돈을 넣어주세요 :300
커피 한 잔 나왔습니다. 남은 커피 양은 9 입니다.

돈을 넣어주세요 :400
커피 한 잔 나왔습니다.
남은 커피 양은 8 입니다. 거스름돈 : 100를 반환합니다.

...
...
...

돈을 넣어주세요 :1000
커피 한 잔 나왔습니다.
남은 커피 양은 0 입니다. 거스름돈 : 700를 반환합니다.

재고가 소진됐습니다. 판매를 종료합니다.

 

*for문

리스트나 튜플, 문자열의 첫 번째 요소부터 마지막 요소까지 차례로 변수에 대입된다.

a = [(1, 2), (3, 4), (5, 6)]
for i in a:	# a의 요소를 순서대로 i에 대입
    print(i)
    
for (first, last) in a:	#a 리스트의 요솟값이 튜플이기 때문에 각각의 요소가 자동으로 (first, last)변수에 대입된다.
    print(first + last)
-----------------------
(1, 2)
(3, 4)
(5, 6)
3
7
11

 

* for문과 함께 자주 사용하는 ragne 함수

- range 함수 : 숫자 리스트를 자동으로 만들어 주는 함수

- range(시작 숫자, 끝 숫자, 간격)

a = range(5)	# range(끝 숫자) 
print(a)
print(a[2])

a = range(1, 10)[4]
print(a)

a = range(1, 10, 2)
print(a[3])
-----------------------
range(0, 5)
2
5
7

 

* range(), len(), continue문을 활용한 예시

- len함수 : 리스트 안의 요소 개수를 돌려주는 함수

marks = [90, 25, 67, 45, 80]
for number in range(len(marks)):    # len()은 리스트 안의 요소 개수를 반환한다.
    if marks[number] < 60:
        continue  # 점수가 60점 미만이면 맨 처음으로 돌아간다.
    print("%d번 " % (number+1), end="")  # end=""를 붙이면 다음줄로 넘기지 않고 이어서 출력한다.
print("학생 축하합니다.")
print("Congratulation!!")
------------------------------
1번 3번 5번 학생 축하합니다.
Congratulation!!

 

* List comprehension(리스트 내포)

[표현식 for  항목1 in 반복 가능 객체1 if 조건1
             for  항목2 in 반복 가능 객체2 if 조건2
             for  항목n in 반복 가능 객체n if 조건n]
a = [1, 2, 3, 4]
result = [num*3 for num in a if num % 2 == 0]
print(result)
----------------------------
[6, 12]
# 구구단의 모든 결과
result = [x*y for x in range(2, 10)
          for y in range(1, 10)]
print(result)
-------------------------------------
[2, 4, 6, 8, 10, 12, 14, 16, 18, 3, 6, 9, 12, 15, 18, 21, 24, 27, 4, 8, 12, 16, 20, 24, 28, 32, 36, 5, 10, 15, 20, 25, 30, 35, 40, 45, 6, 12, 18, 24, 30, 36, 42, 48, 54, 7, 14, 21, 28, 35, 42, 49, 56, 63, 8, 
16, 24, 32, 40, 48, 56, 64, 72, 9, 18, 27, 36, 45, 54, 63, 72, 81]