3일차

Kangdh·2026년 8월 13일

파이썬 교육

목록 보기
2/33

시작하기에 앞서

  • print( )는 출력을 담당하는 함수이다.

  • 문자열은 str, 정수는 int, 논리형은 bool(True/False)

  • X = 3이라는 코드의 뜻은 X라는 변수에 3이라는 값을 지정해준다는 뜻이다.

    • X = 3 다음으로 X = 5라는 코드가 있다면 X는 5라는 값이 지정되어있다.
    • 변수에는 하나의 값만을 지정할 수 있으며 가장 마지막 값이 지정된다.
  • print("a : { }".format( ))에서 .format( )은 앞의 { }를 채워주는 함수이다.
    다만 .format은 앞에서부터 순서대로 값을 채워준다.
    Ex) a = 10

    print("a:{a}".format(a))를 입력하면 a:10이라는 값이 출력된다.

Ex) a = 10
b = 20
print("a:{},b:{}".format(a,40,b))

a:10,b:40 와 같은 값이 출력된다.

  • =(이퀄)은 값을 넣어줄때 사용된다.
    ==은 수학에서의 =을 뜻한다.(같을때)
    != 은 같지않다는 것을 뜻한다.
    사칙연산은 +, -, *, %이며 각각 더하기, 빼기, 곱하기, 나누기를 뜻한다.
    <, >는 각각 미만과 초과를 뜻한다
    <= , >= 는 각각 이하와 이상을 뜻한다.

  • and는 그리고, or은 또는 이라는 뜻으로 and가 들어가있으면 조건 중 하나라도 False면 False가 되지만 or은 하나만 True여도 True가 될 수 있다.

    age = 60

    if age >= 60 or age <= 19:
    print("할인 대상입니다.)
    else:
    print("할인 대상이 아닙니다.)

    할인 대상입니다.

    age = 40

    if age >= 20 and age <= 59:
    print("할인 대상이 아닙니다.")
    elif age >= 60 or age <= 19:
    print("할인 대상입니다.")

    할인 대상이 아닙니다.

  • if조건문

    • if 뒤에 붙을 수 있으며, elif는 여러 if문을 한 덩어리로 만들어준다.

      age = 60

      if age <= 19:
      print("할인 대상입니다.")
      elif age >= 60:
      print("할인 대상입니다.")
      elif age > 19 or age < 60:
      print("할인 대상이 아닙니다.")

      할인 대상입니다.

    • if 뒤에 붙을 수 있으며, else는 if의 모든 경우의 수가 실패했을때 작동한다.

      age = 40

      if age >= 60 or age <= 19:
      print("할인 대상입니다.")
      else:
      print("할인 대상이 아닙니다.")

      할인 대상이 아닙니다.

    파이썬 3일차

    s = "안"+"녕"
    i = 10 + 20
    print(s)
    print(i)

    안녕
    30
    처럼 문자열에 +는 문자열을 합쳐준다.

    다만
    s = "안"+"녕"+10+20
    print(s)
    는 에러가 뜬다. 정수와 문자열은 계산될수 없다는 에러정보가 나온다.

    안녕 1020을 출력하고 싶으면

    s = "안"+"녕"+str(10)+str(20)
    print(s)

    라고 입력해야 안녕1020이 출력된다.

    s = "안"
    s = s + "녕"
    print(s)

    안녕 이 출력된다.
    마찬가지로

    s = "1"
    s = s + "2"
    s = s + "3"
    s = s + "4"

    print(s)
    1234라는 값이 출력된다.
    이 방법을 조금 더 활용하면

dan = 8

print("=={}단==".format(dan))
a = 1
print("{}{}={}".format(dan,a,dan1))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))
a = a+1
print("{}{}={}".format(dan,a,dana))

이와 같이 구구단에서도 사용할 수 있을거같다.

  • 언어의 횡이동을 하고싶다면 그 언어의 표현법을 기억하기.

while 반복문

  • 값이 False가 될때까지 계속해서 반복됨.

dan = 8
i = 1

if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1
if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1

if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1

if i <=3:
print("{}{}={}".format(dan,i,dani))
i = i+1

라는 코드를

dan = 8
i = 1

while i <= 3:
print("{}{}={}".format(dan,i,dani))
i = i + 1

로 바꿀수 있다.

  • i = i +1 와 i += 1 은 같은 뜻이다.마찬가지로 i = i - 1과 i -= 1은 같다.

  • 반복문의 3가지 구성요소 : 초기(값),(종료)조건,step(보폭(증가,감소값)과 방향(+,-)

i = 1

while i <= 5:
print(i)
i += 1

에서 i = 1은 초기(값)이고 while i <= 5는 (종료)조건, i += 1은 step(보폭)이다.

다중 반복문

  • 11 = 1부터 99=81까지 출력시키는 코드이다.
    dan = 1
    i = 1

while dan <= 9: # 첫번째 반복문
i = 0
while i <= 8: # 두번째 반복문
i+=1
print("{}{}={}".format(dan,i,dani))
dan += 1

!주의할 점 : step이 없다면 무한루프에 빠지게 될 수도 있다.

step을 줄여야한다.

3중 반복문까지 쓸수있도록 연습

break문

  • 무한루프에 빠지지않게 멈추게 해주는 역할.

    i = 1
    while True:
    print(i)
    i += 1

    이런 코드를 사용하면 while 반복문의 값이 계속해서 True이므로 무한대로 값이 나온다. 이런 현상을 막고자 break를 사용하는데

    i = 1
    while True:
    if i == 10:
    print(i)
    break
    i += 1
    을 사용하면 i가 10일때 루프가 멈추므로 출력은 1~10까지만 된다.

    continue

  • skip해주는 역할.

    i = 1
    while i <= 10:
    i += 1
    if i == 3:
    continue
    print(i)

    라는 코드를 작성하면 2부터 시작해서 11까지의 값이 출력된다. 하지만 이때 3은 생략된채로 나온다. continue는 이런 역할이다. 해당 값이 나오면 그 값은 생략한채로 while문으로 돌아가게 만드는 역할.

    input()

  • input은 사용자의 입력을 받아 출력할 수 있게 만들어주는 명령어. 하지만 그냥 넣었을때는 문자열로 취급하기때문에 정수로 쓰고싶다면 a = input() a = int(a)처럼 코드를 입력해줘야한다. 또는 a = input()을 입력한 후 계산하는 식에서 int(a)를 사용하여 정수로 바꿔줄수도 있다.

    Ex) i = input()
    print(5+int(i))

오늘 못 풀었던 문제

  • 1부터 5까지의 합을 출력해주세요

s = 0
i = 1
while i <= 5:
s += i
i += 1
print(s)

15

가 답이다.
첫번째로 s라는 변수를 추가할 생각을 못하고 두번째로 1+2~+5까지 식을 구현하지 못했다. 코드를 해석해보면 s=0이라는 값을 주고 i = 1이라는 값을 준 다음 i가 5가 될때까지 반복시킨다. i가 1이 되고 루프를 돌아서 2가 되는데 이때 s는 i값을 + 시키므로 1부터 5까지 i값이 증가하면서 루프를 돌면 s는 1+2+3+4+5가 되는 것이다. 그리고 print(s)로 1부터 5까지 더한 값을 출력시키는것이다.

메모장으로 식은 다 만들어놨지만 코드로 구현하지 못한것과 어떻게 응용해야하는지 아직 미숙한거 같다.

1부터 100까지의 수 중에서 짝수의 합을 출력해주세요. while, if, %

두번째 문제같은 경우는 위 문제와 원리는 비슷하다.

s = 0
i = 1
while i <= 100:
if i%2 == 0:
s += i
i += 1
print(s)

2550

라는 코드가 나온다. 이번엔 짝수의 합을 구하라고 했으니 i%2 == 0이라는 조건을 걸어 i값에서 2를 나누면 0이 나오는 수들을 찾고 s += i 로 i값들을 더해준다. 그러면 2+4+6+8~+100까지 될테니 이 값을 다 더하면 2550이라는 값이 나온다.

1부터 100까지의 수 중에서 짝수이고 3의 배수가 아닌 수의 합을 출력해주세요. while, if, %

s = 0
i = 1

while i <= 100:
if i%2 == 0 and i%3 != 0:
s += i
i += 1
print(s)

1734

세번째 문제도 첫번째와 비슷하며, 이번엔 짝수이고 3의 배수가 아닌 수의 합을 구하라고 하였으니 if i%2 == 0으로 i값중 짝수를 찾게 만들고 i%3 !=0으로 3의 배수가 아닌 값을 찾게 만든다. 문제중 "짝수이고 3의 배수가 아닌 수" 라고 하였으니 두 조건 모두를 충족시켜야 하므로 and를 써서
if i%2 == 0 and i%3 != 0이라는 조건을 만들어준다.
나머지는 전 문제와 전전 문제처럼 계산된다. 따라서 답은 1734가 나온다.

3문제 다 그리 어려운 문제는 아닐 수 있겠지만, 처음 문제인 일정범위의 합을 구하는 코드를 구현하는데 있어서 어려움을 겪어 못푼 문제들이다. 주말간에 생각한 식을 코드로 구현하는 연습을 더더욱이 해야할 것 같다.

추가 문제들

구구단 1단~9단을 9*9=81까지 출력해주세요

dan = 1

while dan <= 9:
print("=={}단==".format(dan))
i = 1
while i <= 9:
print("{}{}={}".format(dan,i,dani))
i += 1
dan += 1

라는 코드가 나온다. while 반복문 안의 while 반복문은 안쪽 while 반복문이 끝나면 바깥 while문이 실행되므로 dani중 dan이 1이고 i가 1~9까지 반복된 다음 dan이 2로 증가하기 때문에 11 = 1 ~ 9*9=81까지 출력된다.

구구구단을 출력하세요

111=1
112=2
~
999= 729

dan = 1

while dan <= 9:
print("=={}단==".format(dan))
i = 1
while i <= 9:
j = 1
while j <= 9:
print("{}{}{}={}".format(dan,i,j,danij))
j += 1
i += 1
dan += 1

문제에 대한 코드는 이렇다.
전체적인 구성은 전 문제인 구구단을 출력할때와 비슷한데 뒤에 n이 더 추가된 형식이다. while dan과 while i는 전 문제와 동일하게 dan i를 구현한 것이고 이번 문제는 곱셈을 세 개의 숫자와 해야하므로 while j를 추가하여 dan i j로 구현하였다.

여기까지 배우면서

아직 한참 부족한거 같다는 생각이 든다. 예전부터 개념은 이해해도 응용력을 요구하는 문제들은 풀지 못해 일찍이 수학을 포기했었다. 지금도 응용면에서 애먹고 있지만 계속 복습을 해보면서 내가 못하는 곳을 숙달하겠다는 생각으로 공부를 진행해보겠다.

0개의 댓글