지금 어려운 것은 당연하다. 숫자 변수 흐름이 예측이 안되어서 더 그렇다. 
코드와 가까워지게, 익숙해지게 최대한 다양한 코드를 많이 봐야 한다. 

함수 이름을 외우는 것보다 내가 어떤 동작을 설계할 것인지가 중요하다. 
스스로 생각하고 동작을 설계한 후 방법을 찾아보는 것도 좋다. 
혼자서 직접 작업을 해보는 습관을 꼭 들여야 한다. 



if문은 특정 조건에서 어떤 동작을 수행하게 하기 위해서 사용한다. 조건문은 동일한 행동을 반복하는 구문이다. ​조건문과 함께 가장 중요하다고 생각하는 것이 '반복문'이다. 머신러닝 등 많은 데이터를 처리할 때 동일한 형태로 모두 바꿔야 하는데... 하나하나 바꿀 수는 없다. 이럴 때 사용하는 것이 반복문이다. Python에서는 반복문에 while과 for를 사용한다. while문으로 쓴 것은 for문으로 만들 수 있고 (무한루프 제외) for문으로 쓴 것은 while문으로 만들 수 있다. ​while문은 무한루프 작동이나, 어떤 조건을 달성할 때까지 사용하기에 더 좋고 for문은 횟수가 정해져 있는 반복을 수행할 때 편리하며 다양한 상황에 활용하기도 좀더 좋다고 한다. 파이썬에서 for문으로는 무한반복문 작성을 하지 않는(못한?)다고 함 동작을 구현하는 방법은 여러가지다. 상황에 따라 더 적절한 것을 사용한다.

 

while 반복문

# while 반복문
"""
while 조건:
    반복할 코드
""" 
# 조건이 참(True)인 경우에 코드를 계속 반복 : 반복하다가 False가 나오면 아래로 내려감. 
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
print(7)
print(8)
print(9)
print(10)
# 위 내용을 while 반복문을 사용하여 아래와 같이 바꿀 수 있다. 

n=1
while n >= 10: 
    print(n)
    n += 1
# 변경되는 조건 부분(n >= 10)이 true면 반복됨

 

 

대입연산자

# += 연산자 
## 대입 연산자의 일종
## 더하기 연산 후 할당 
### n += 1은 n = n+1이라는 의미 
# 모든 산술연산자 동일하게 사용 가능
# -= 
# *=
# /=
# **=
# //=
# %=

# 이것도 가능하다. 
s1 = "안녕"
s1 += "하세요"

 

 

ex) while 반복문을 활용하여 10부터 1까지 순서대로 출력하세요. 

cnt = 10
while cnt > 0: # while cnt >= 1
    print(cnt)
    cnt -= 1
10
9
8
7
6
5
4
3
2
1

 

 

ex) 커피자판기를 만들자 1

money = 10000
price = 1000
while money >= price: # money - price >= 0
    print("커피를 구매했습니다.")
    money -= price
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.
커피를 구매했습니다.

 

 

ex) 커피자판기를 만들자 2

  • break 명령어. while for 반복문을 즉시 종료한다.
  • 자주 사용함 중요. 보통 특정 조건(if문)과 함께 사용한다. 
# 커피자판기를 만들자 2
money = 10000
price = 1000
coffee = 5 
while money >= price: # money - price >= 0
    print("커피를 구매했습니다.")
    money -= price
    coffee -= 1
    print("남은 커피 : ", coffee)
    if coffee == 0:
        break



ex) while 반복문을 활용하여 1부터 10까지 홀수만 출력한다. 1

# while 반복문을 활용하여 
# 1부터 10까지 홀수만 출력한다. 

a = 1
while a <= 10:
    if a % 2 == 1:
       print(a)
    a += 1 # 이거 들여쓰면 무한반복에 빠짐

 

 

ex) while 반복문을 활용하여 1부터 10까지 홀수만 출력한다. 2

● 반복문의 제일 처음으로 돌아감 
# while문 안의  if문의 조건이 True면 continue 만나서 print를 못 만나고 while로 돌아간다!!!
break continue 는 계속 잘 사용되는 키워드들이다. 기억해 두세요.. 
# 짝수 :  변수 % 2 == 0 
# 홀수 :  변수 % 2 == 1

 

b = 0 
while b <= 10:
    if b % 2 == 0:
        continue 
    b += 1
    print(b)
# 무한반복됨 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

ac = 0 
while ac < 10:
    if ac % 2 == 0:
        continue
    print(ac)
    ac += 1
# 무한반복됨 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

b = 0    
while b <= 9:
    b += 1
    if b % 2 == 0:
        continue  
    print(b)
# 결과는 이것만 맞아요~ 순서 자체도 방법이다. ooooooooooooooooooooo

 

 

무한 루프 infinite loop

컴퓨터 프로그램은 대부분 무한 루프 위에서 실행되다가 종료 명령을 통해 종료된다고 보면 됨
파이썬에서는 while 조건식에 True를 입력해 항상 참이 되도록 하여 무한히 반복하게 한다. 
※ VSCoding에서 terminal 창에 커서 놓고 ctrl+C 하면 무한반복 종료됨. 

while True:
    user_input = input("종료하려면 1을 입력해 주세요.")
    if user_input == "1":
        break

 

 

ex) 무한 반복문으로 계산기 만들기

+ ,  - ,  * ,  /  연산 
2개의 수를 계산하는 계산기 

while True:
    print("""
    계산기
    =======
    1. 더하기(+)
    2. 빼기(-)
    3. 곱하기(*)
    4. 나누기(/)
    """)
    operator = input("계산을 선택하세요 : ")
    if operator  == "1": # 파이썬은 문자, 숫자, 리스트 등 데이터 타입을 맞춰줘야 한다.
        print("1 + 2 =", 1 + 2)
    if operator  == "2":
        print("1 - 2 =", 1 - 2)
    if operator  == "3":
        print("1 * 2 =", 1 * 2)
    if operator  == "4":
        print("1 / 2 =", 1 / 2)



ex) 어떤 계산을 할지, 어떤 숫자를 넣을지 입력할 수 있는 계산기를 만들어 보자. 
q를 입력하면 계산기가 종료되도록 한다.  

여러 개의 조건을 사용해야 할 경우 elif로 묶어주는 것이 경제적이다.

해당 조건을 실행하게 되면 그 뒤의 조건들은 실행하지 않고 처음으로 다시 돌아가거나 뒤로 가기 때문이다. 

while True:
    print("""
    계산기
    =======
    1. 더하기(+)
    2. 빼기(-)
    3. 곱하기(*)
    4. 나누기(/)
    """)

    num = 1
    operator = input("계산을 선택하세요 : ")
    a = int(input("숫자를 입력하세요."))
    b = int(input("숫자를 입력하세요."))

    if operator  == "1": 
        print(a, "+", b, "=", a + b)
    elif operator  == "2":
        print(a, "-", b, "=", a - b)
    elif operator  == "3":
        print(a, "*", b, "=", a * b)
    elif operator  == "4":
        print(a, "/", b, "=", a / b)
    elif operator == "q":
        break
# 여러 개의 if를 사용할 때는 elif로 묶어주는 게 좋다.

 

 

ex) 음료수 자판기를 만들어 보자 

# 사용자가 가지고 있는 돈을 입력받는다. 
# 구매할 수 있는 커피의 개수와 잔돈을 출력한다. 
# 구매할 수 있는 음료수의 개수와 잔돈을 출력한다. 
# 구매할 수 있는 콜라의 개수와 잔돈을 출력한다. 
# 커피는 500원 음료수는 700원 콜라는 930원 
# 물품의 개수는 무한하다고 가정한다. 
# while 반복문을 사용하여 작성한다. 

 

반복문과 리스트를 어떻게 함께 사용할지 !! 
변수들에게 대응을 할 수 있도록 일반화해서 작업한다. 

idx = 0
prices = [500, 700, 930]
money = int(input("돈:"))
while idx < len(prices) : # while idx < 3:
    price = prices[idx]
    print(money // price)
    print(money % price)
    idx += 1



ex) while 반복문을 사용 scores 리스트에 시험 점수 5개를 정수형으로 입력 받으세요. 

scores = []
aa = 0

while aa < 5:
    score = int(input("시험 점수 : "))
    scores.append(score)
    aa += 1
    print(scores)



ex) 구구단 2단을 출력해 보자

bb = 1

while bb <= 9:
    qq = bb * 2
    print(2,"*",bb,"=",qq)
    bb += 1 
bb = 1

while bb < 10:
    print(2,"*",bb,"=",bb*2)
    bb += 1



for 변수 in iterable값:
    반복할 코드
for문

iterable이터러블 뽑아내거나 슬라이싱 할 수 있는 데이터가 연결된, 반복 가능한 것들 
: 문자열, 리스트 등 

""" : 여러 줄 문자 표기법 

무한반복은 while에서만 가능하다. for문은 무한반복 안 됨
for는 꺼내서 반복하는 거라서.. 

for문에서 사용하는 값들은 기본적으로 정수다. 

첫번째 요소부터 마지막 요소까지 
변수에 대입하면서 반복된다. 

li_1 = ["one", "two", "three"]
for i in li_1: 
    print(i)

s1 = "hello"
for i in s1:
    print(i)



range() 

range는 파이썬 내장 함수다. 

 

range(끝 정수) 

0 ~ 끝 정수 - 1 레인지 객체가 만들어졌다

0 ~ 9까지 반복된다. 반복 횟수는 10회

for i in range(10):
    print(i)

 

 

range(시작, 끝)

시작 ~ 끝 - 1

1부터 10까지의 모든 정수가 출력된다. 

for i in range(1,11): 
    print(i)

 

 

range(시작, 끝, 스텝)

시작 ~ 끝 - 1 까지인데 스텝만큼 차이나게 

1부터 20까지 반복되는데 3을 더한 수들만 출력된다. 

for i in range(1, 21, 3):
    print(i)

 

reverse()

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
for number in numbers:
    print(number)

numbers.reverse()
for number in numbers:
    print(number)

객체 object 개념에 대해 알아둘 필요가 있다.


ex) for 문을 사용하여 2부터 30까지 출력해 보세요. 

for i in range(2, 31):
    print(i)


​​
ex) for 문을 사용하여 2부터 30까지 숫자 중 짝수만 출력해 보세요. (3가지 방법) 

● pass​  해당 구문 안에서는 아무것도 안하고 넘어갈 때. 반복문 조건문 등 미정일 때 활용하기 좋음 
● continue는 무조건 구문 처음으로 돌아감

for i in range(2, 31, 2): # 짝수만 가져오기 때문에 전체 다 출력해도 된다. 
    print(i)

for i in range(2, 31):
     if i % 2 == 1: # 홀수
          continue 
     else:
         print(i) # 홀수 아닌 것 == 짝수 출력

for i in range(2, 31):
     if i % 2 == 0: # 짝수 
         print(i)

 

 

ex) for 문을 사용하여 10부터 1까지 출력해보세요. 

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

for i in reversed(range(1, 11)):
    print(i)

for i in range(1, 11)[::-1]:
    print(i)
※ slicing 슬라이싱 [시작인덱스:끝인덱스:방향]

 


ex) for문 자판기를 만들어보자 1, 2, 3
3개의 출력값은 모두 같다. 

money = 10000
price = 1000
coffee = 5 
for i in range(5): # 0 ~ 4
    print("커피를 구매했습니다.")
    money -= price # money = money - price
    print("남은 커피 : ", coffee - 1 - i) # 4 ~ 0
money = 10000
price = 1000
coffee = 5 
for i in range(1, coffee + 1): # 1 ~ 5
    print("커피를 구매했습니다.")
    money -= price # money = money - price
    print("남은 커피 : ", coffee - i)
money = 10000
price = 1000
coffee = 5 
for i in range(coffee): 
    print("커피를 구매했습니다.")
    money -= price 
    coffee -= 1
    print("남은 커피 : ", coffee)



ex) 더 이상 사지 못할 때 구매 멈추기 

money = 2000
price = 1000
coffee = 5 
for i in range(5): # 0 ~ 4
    print("커피를 구매했습니다.")
    money -= price # money = money - price
    print("남은 커피 : ", coffee - 1 - i) # 4 ~ 0
    if money < price:
        break



ex) 음료수 가격

for문이 잘 사용되는 이유를 보여주는 예제

prices = [500, 700, 930]
money = int(input("돈:"))
for i in range(len(prices)): # i를 index의 숫자로 쓸 수가 있다. 
    price = prices[i]
    print(money // price)
    print(money % price)


for문과 while문의 다른 특성을 잘 알고 적절히 활용하는 것이 좋다. 
while문으로 쓴 것은 무한반복 외에 for문으로도 작성 가능하다. 
for문은 횟수가 정해져 있는 반복을 돌릴 때 좋다. 
range 객체 만들어서 for문 돌리는 것도 편리하고, 반복 횟수 파악할 때도 좋고, 
그 외에도 for문에 여러 장점이 있어서 많이 사용된다.  
while문의 경우 특정 시점까지, 뭔가가 달성될 때까지의 반복에 효과적이다.


가장 효율적인 for문 사용법
for 문은 리스트와 같은 iterable한 (반복 가능한) 형식으로 
prices에 있는 값들을 꺼내서 price에 임시로 하나씩 넣어서 계산해서 보여준다.

prices = [500, 700, 930]
money = int(input("돈:"))
for price in prices: 
    print(money // price)
    print(money % price)



ex) 시험점수 5개 입력 

scores = []
for i in range(5):
    score = int(input("시험점수:"))
    scores.append(score)



ex) 구구단 2단

for i in range(1, 10):
    print("2 *", i, "=", 2*i)


이중 for문  

ex) 구구단 전체 출력

안쪽의 작은 루프부터 시작한다.

가로(탭) 세로(줄) 위치 모두 중요하다!!!!!!!!

for i in range(2, 10):
    print(i,"단")
    for j in range(1, 10):
        print(i,"*", j, "=", i*j)
    print("-------------")

 

 

for 특정 횟수로 반복 / while 여전히 참이라면 반복

 

+ Recent posts