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]