본 캠프 TIL

12월24일 TIL

meoca1257 2024. 12. 24. 15:19

코드업 으로 알게된 내용

1.

print(' "!@#$%^&*()\' ')

"!@#$%^&*()'

원래는 "!@#$%^&*()'이라는 내용을 출력하려면 " "!@#$%^&*()' " 이렇게 되면 좋을텐데 안된다 

근데 백슬래쉬 \  를 써주면 가능함 " "!@#$%^&*()\' " 

2. 이해안됨 시발 백슬래시 \ 쓰는법 너무 어려움  [기초-출력] 출력하기07(py)

"C:\Download\'hello'.py" 출력해야함

print('"C:\Download\'hello'.py"\')

오답

print('"C:\\Download\\\'hello\'.py"')

정답

 

3. 

print("Hello\nWorld")

위 코드를 정확히 그대로 출력하시오.(공백문자 주의)

print('print("Hello\\nWorld")')

 

**** 정수 int 소수 float 사용

a=float(a)          ///        a=int(a)

 

4.

a,b=input().split()
print(b,a)

z vc

vc z

'z vc' 입력 값 'vc z' 도출된 결과 

*** split()을 사용하면 input으로 입력할 때 빈칸에 따라 a,b로 나눠서 값을 지정해줌 

ex)

a,b,c,d=input().split()
치면 입력창에다가 '1 2 3 4' 넣어주면 

print(a,b,d,c) 결과로 1 2 4 3 가 나옴

 

5.

computer science computer science computer science          가 정답임

 

a="computer science "
a*3

'computer science computer science computer science'

' ' 나와서 안됨

정답

a=input()

print(a, a, a)

 

6. 6020지문

주민번호는 다음과 같이 구성된다.
XXXXXX-XXXXXXX

왼쪽 6자리는 생년월일(YYMMDD)이고, 오른쪽 7자리는 성별,출생지역,확인코드로 구성되어있다.
주민번호를 입력받아 형태를 바꿔 출력해보자.

 

입력 예시

000907-1121112

출력 예시

0009071121112

 

a,b=input().split('-')
print(a,b)

오답 이렇게 출력됨

000907 1121112

 

정답

b=input()
b=b.replace("-", "")
print(b)

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

데이터 분석 파이썬 3주차 

  • 3주차
    • 파이썬의 다양한 기능을 수행할 때 사용하는 조건문, 반복문 이해하기
    • 조건문과 반복문을 어느 상황에 써야 되는지 알맞게 이해하고 필요한 기능을 수행하는 코드 작성
    • 파이썬 조건문, 반복문 예시 풀기
  • 체크리스트(★   내가 중점적으로 업데이트할 내용    )
    • [ ] 파이썬 가상 환경 중에서 내가 원하는 환경 아무거나 1개라도 다룰 수 있다 -> COLAB 가능
    • [ ] 파이썬에 대한 개념을 이해하고 있고 왜 써야 하는지 이해하고 있다-> 엑셀보다 간단하고 빠르게 데이터 분석을 하기 위해 파이썬은 프로그래밍 언어
    • [ ] 파이썬 변수의 역할이 무엇인지 설명할 수 있고 자료형에 대해서 이해하고 있다 -> 변수:값을 저장하는 공간, 자료형 : 타입 종류 스트링 인트 투플 불린 딕셔너리 등 
    • [ ] 파이썬 리스트, 튜플, 딕셔너리에 대한 내용을 이해하고 있고 차이점을 설명할 수 있다 -> 리스트 () 튜플 [] 딕셔너리 {:} 
    • [ ] 파이썬 조건문, 반복문에 대한 내용을 이해하고 있고 필요한 상황에 알맞게 사용할 수 있다 -> for문, while문 
    • [ ] 파이썬 함수에 대한 내용을 이해하고 있고 함수를 내가 원하는 대로 작성할 수 있다
    • [ ] 파이썬을 가지고 데이터를 불러오고 1개 이상의 기능을 수행하는 파이썬 코드를 작성할 수 있다

3-1) 이번에 배울 것

조건문과 반복문은 직관적인 이름답게 특정 조건에서만 코드가 실행되게 하거나 일정하게 반복하는 코드를 작성할 때 사용되는 문법

 

데이터를 가공할 때 특정 조건에 따라 가공하는 일이 많고 보통 이러한 작업은 반복 수행이 많기 때문에 조건문과 반복문을 함께 쓰는 경우가 많습니다. 뿐만 아니라 대용량의 데이터를 AI 모델에 하나씩 집어 넣을 때, AI 모델을 여러번 반복할습할 때에도 반복문이 사용됩니다.

 

설명

데이터 분석시 특정 데이터의 조건을 부여

머신러닝의 반복되는 학습

큰 용량의 데이터를 한번에 메모리에 넣지 않고 여러번 나누어서 넣을 때

 

목적

데이터 가공, AI모델 사용

 

결과물

 

기대효과

  1. 본격적인 데이터 분석을 시도할 수 있는 수준이 되었어요!
  2. 왠만한 파이썬 프로그래밍을 수행할 수 있어요! ddd

 

3-2) 조건문 (엑셀 if와 비슷)

1) 조건문 이란?

조건문 : 프로그램의 흐름을 제어하는 중요한 요소 중 하나입니다.

이것은 특정 조건이 참(True)인 경우에만 특정 코드 블록을 실행하도록 합니다.

파이썬에서 조건문은 if, elif (else if의 줄임말),else  키워드를 사용하여 구성됩니다.

 

if 조건:                      " : " 이 무조건 들어가야함
    # 조건이 참일 때 실행될 코드
elif 다른조건:
    # 다른 조건이 참일 때 실행될 코드
else:
    # 위의 조건이 모두 거짓일 때 실행될 코드

 

변수 x의 값이 양수인지, 음수인지, 아니면 0인지를 판별하여 각각에 맞는 메시지를 출력하는 예시를 따라해 봅시다!

 

x = 10    # x는 변동값
if x > 0:
  print("양수입니다.")
elif x < 0:
    print("음수입니다.")
else:
    print("0입니다.")

 

2) 들여쓰기(TAB) 및 띄어쓰기(SPACE)의 중요성

조건문에서는 들여쓰기 및 띄어쓰기가 매우 중요합니다! 이에 대한 중요성도 함께 예시를 통해 알아보도록 합시다 

 

* 들여쓰기(Indentation): 텍스트나 코드에서 각 줄의 시작 부분을 일정하게 공백 또는 탭으로 밀어넣는 것을 의미합니다. 주로 가독성을 높이기 위해 사용되며, 특히 프로그래밍에서 코드 블록을 구분하는 중요한 역할

 

 

올바른 들여쓰기

 

x = 10

if x > 5:
    print("x는 5보다 큽니다.")
else:
    print("x는 5보다 작거나 같습니다.")

 

 

이 예시에서는 if 문과 else 문이 서로 다른 인덴트 수준에 위치합니다. 이것은 각각의 블록이 어디서 시작하고 끝나는지 명확하게 보여줍니다.

 

 

잘못된 들여쓰기

 

x = 10

if x > 5:
print("x는 5보다 큽니다.")
else:
print("x는 5보다 작거나 같습니다.")   

=> 오류남

 

이 예시에서는 들여쓰기를 사용하여 블록이 서로 어떻게 연결되어 있는지 명확하게 보여줍니다. 첫 번째 if 문의 내부에 두 번째 if 문이 있는 것을 알 수 있습니다.

 

 

들여쓰기의 중요성

 

#

x = 10
if x > 5:
    print("첫 번째 블록 시작")
    if x < 15:
        print("두 번째 블록 시작")
else:
    print("첫 번째 블록 끝")

if x > 5: 조건이 참인 경우에만  if x < 15: 조건이 실행됨

 

#

x = 10
if x > 5:
    print("첫 번째 블록 시작")
if x < 15:
        print("두 번째 블록 시작")
else:
    print("첫 번째 블록 끝")

이렇게 되면 독립적인 if x > 5: 조건이 실행되고 if x < 15: 이것 또한 독립적으로 실행됨

 

 

3) 연산자

파이썬에서 조건을 판단하기 위해 비교 연산자를 사용합니다.

  • > : 초과
  • < : 미만
  • >= : 이상
  • <= : 이하
  • == : 같음
  • != : 같지 않음
  • += 덧셈 대입 연산자, 기존 변수에 값을 더하는 작업을 수행하는 연산자 (추가)

 

 

조건을 결합할 때 사용하는 논리 연산자도 알아두면 유용합니다.

  • and : 모두 참일 때 참
  • or : 하나 이상이 참일 때 참
  • not : 조건을 부정

 x가 양수이고 짝수인지를 판별하여 그에 맞는 메시지를 출력하는 예시를 따라해 봅시다!

 

x = 10

if x > 0 and x % 2 == 0:

    print("양의 짝수입니다.") 

 

****오류 

1.

2.

if x > 0 and x % 2 == 0 뒤에 : 빠짐

3.

4.

 

**가능

 

 

4) 조건문의 다양한 예시

  • 논리 연산자를 사용하는 다중 조건식
  • 이 예시에서는 논리 연산자 and, or를 사용하여 여러 개의 조건식을 결합합니다

#

x = 10
y = 5

if x > 5 and y < 10:
    print("x는 5보다 크고, y는 10보다 작습니다.")
elif x <= 5 or y > 10:
    print("x는 5보다 작거나 같거나, y는 10보다 큽니다.")
else:
    print("다른 조건")

 

 

  • 아래의 예시에서는 각각 and, or, not 연산자를 사용하여 다중 조건식을 활용한 예시를 보여줍니다.

#

x = 10
y = 7

if x > 5 and y < 10:
    print("x는 5보다 크고, y는 10보다 작습니다.")

if x < 5 or y > 10:
    print("x는 5보다 작거나, y는 10보다 큽니다.")

if not (x == 5):
    print("x는 5와 같지 않습니다.")

 

  • 조건문은 중첩하여 사용할 수 있습니다.

#

x = 10

if x > 5:
    print("x는 5보다 큽니다.")
    if x < 15:
        print("x는 15보다 작습니다.")
    else:
        print("x는 15보다 큽니다.")
else:
    print("x는 5보다 작거나 같습니다.")

 

#

x = 10
if x > 0:
    if x % 2 == 0:
        print("양의 짝수입니다.")
    else:
        print("양의 홀수입니다.")
else:
    print("음수 또는 0입니다.")

 

5) 조건문의 짧은 표현 (이게 더 어려워)

  • 조건문을 한 줄로 간략하게 표현할 수도 있습니다.
  • 아래의 코드에서는 조건식이 참일 경우 "양의 짝수"를, 거짓일 경우 "음수 또는 0"을 출력합니다.

#

x = 10
result = "양의 짝수" if x > 0 and x % 2 == 0 else "음수 또는 0"
print(result)

 

**** 이걸 자세하게 표현해보자

오류

 

 

 

6) 조건문이 실전에서 사용되는 예시 : 분석 결과에 따른 의사 결정

  • 데이터 분석을 통해 도출된 결과를 바탕으로 의사 결정을 내릴 때도 조건문을 사용합니다.
  • 예를 들어, 특정 제품의 판매량이 일정 기준을 넘는다면 추가 생산이 필요하거나, 고객의 특성에 따라 마케팅 전략을 변경해야 할 경우에 조건문을 활용할 수 있습니다.

# 판매량에 따른 생산량 결정 예시
sales = 1000

if sales > 1000:
    print("추가 생산이 필요합니다.")
elif sales <= 1000:
    print("현재 생산량이 적당합니다.")

 

***연습

# sales=10000 이거도 가능
sales = 10000

if sales > 12000:
  print("개꿀")
else:
  print('아쉽네요')

아 아쉽네 ㅇㅇ..

 

3-3) 반복문 - for 문

1) for문 이란?

  • 파이썬의 for 반복문은 데이터 분석 및 다른 프로그래밍 작업에서 매우 유용합니다.
  • 이를 쉽게 이해하기 위해 기본적인 개념과 함께 다양한 예시를 제공할 텐데, 우선 for 반복문의 구조를 이해해야 합니다.

#

for 변수 in 반복할_데이터:
    코드_블록

  • 여기서 "반복할_데이터"는 리스트, 튜플, 문자열 등과 같은 반복 가능한(iterable) 데이터 타입이 될 수 있습니다.
  • "변수"는 각 반복(iteration)마다 현재 값을 가지는 변수입니다.

2) for문 기본 사용법

 

리스트 순회하기

#

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

이 코드는 "apple", "banana", "cherry"를 순서대로 출력합니다.

 

문자열 순회하기

#

for letter in "hello":
    print(letter)

이 코드는 "h", "e", "l", "l", "o"를 순서대로 출력합니다. 

 

range() 함수와 함께 사용하기

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

이 코드는 0부터 4까지의 숫자를 출력합니다.

* for i in range(5): 는 for i in range(0,5): 와 동일하게 적용됨 그리고 코드 적용법칙 맨 오른쪽 숫자 5 삭제됨

** range() 함수

 range(시작값, 끝값,간격값)

ex) range(5,10) -> 5,6,7,8,9 // range(5,10,2) -> 5,7,9 // range(4,10,2) -> 4,6,8 // range(3) -> 1,2 // range(0,3) -> 0,1,2

 

# 0부터 시작하여 5 이전까지의 정수 시퀀스 생성
for i in range(5):
    print(i, end=' ')
# 출력: 0 1 2 3 4

근데 end=' ' 왜 씀????

 

딕셔너리 순회하기

person = {"name": "John", "age": 30, "city": "New York"}
for key, value in person.items():
    print(key, " : ", value)

이 코드는 딕셔너리의 키와 값 쌍을 출력합니다.

 

**굳이 items 어쩌구 안쓰고 for 문 쓰는 이유: 표현 방식의 차이가 있어 용도가 달라짐

차이점:

  • person.items()는 결과를 반환하지만 출력하지 않으며, 이 결과를 다른 연산에 사용할 수 있습니다.
  • for 반복문과 함께 print()를 사용하면, 결과를 바로 출력할 수 있습니다.

결론:

  • 첫 번째 예시 (person.items())는 값을 반환하지만 출력을 하지 않으며, 그 결과를 다른 곳에서 사용하거나 처리하려는 경우에 적합합니다.
  • 두 번째 예시 (for key, value in person.items())는 반복문을 사용하여 즉시 출력하는 경우에 적합합니다.

 

items 어쩌구 -> 

 

 

for 문 어쩌구 -> 

 

3) 조건문과 함께 사용하기

 

3-1) 짝수만 출력하기

for i in range(1, 11):
    if i % 2 == 0:
        print(i)

2,4,6,8,10 출력

 

3-2) 1부터 100까지의 숫자 중 3의 배수 출력하기

# 조건문과 반복문을 복합적으로 활용하여 1부터 100까지의 숫자 중 3의 배수 출력
for i in range(1, 101):
    if i % 3 == 0:
        print(i)

 

3-3) 리스트에서 특정 값 걸러내기

numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = []
for num in numbers:
    if num % 2 == 0:
        even_numbers.append(num)
print(even_numbers)

[2, 4, 6, 8, 10]

 

3-4) 구구단 출력하기

# 조건문과 반복문을 복합적으로 활용하여 구구단 출력
for i in range(2, 10):
    print(f"{i}단:")
    for j in range(1, 10):
        print(i, "x", j, " = ", i * j)

 

이건 영상보고 공부해야함 이해 부족 ..  

1. 왜 f'{i}단: 이라고 쓰는거지? 그냥 {i}단: 이여도 되는거 아닌가?

-> 일단 {i}단이라고 넣으면 진짜 {i}단으로 출력됨 f라는 녀석이 무슨 함축된 거시기임

**f"{i}단:"**에서 f는 f-string을 의미하며, {i}는 **변수 i**의 값을 문자열 안에 삽입하겠다는 뜻

적당히 이해함 그래도 복습은 챙기자 !

 

3-5) 별표로 직각 삼각형 그리기 (놀기)

# 조건문과 반복문을 복합적으로 활용하여 별표로 직각 삼각형 그리기
size = 10 # 삼각형의 크기를 입력

for i in range(1, size + 1):
    print("*" * i)

*

**

***

****

*****

******

*******

********

*********

**********

 

3-6) 문자열에서 특정 문자 제거하기

sentence = "Hello World"
result = ""
for char in sentence:
    if char != "o":
        result += char
print(result)

Hell Wrld

이 코드는 문자열에서 "o"를 제외한 모든 문자를 새로운 문자열에 추가하여 출력합니다.

해석 : sentence, result 라는 변수를 지정 / char 이라는 놈이 sentence 를 기준하에 / "o"와 같이 않으면 / result 변수에 추가한다           *** != 같지 않다 // += 덧셈 대입 연산자, 기존 변수에 값을 더하는 작업을 수행하는 연산자

 

3-7) 딕셔너리에서 특정 조건에 맞는 항목 출력하기

ages = {"John": 30, "Jane": 25, "Doe": 35, "Alice": 20}
for name, age in ages.items():
    if age > 25:
        print(name, " is older than 25")

John is older than 25

Doe is older than 25

이 코드는 딕셔너리에서 값이 25보다 큰 경우에 대해 이름과 함께 메시지를 출력합니다.

 

 

4) 이중 for문 사용

  • 이중 for문을 사용하면 중첩된 데이터 구조를 탐색하거나 이차원 데이터를 처리할 수 있습니다.
  • 이를 통해 데이터를 보다 복잡하게 처리하고 원하는 패턴을 찾을 수 있습니다.

4-1) 구구단 출력하기

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

 

for i in range(2, 10):
    print(f"{i}단:")
    for j in range(1, 10):
        print(i, "x", j, " = ", i * j)              **보단 쉽네 대신 출력값이 2단 2x1=2 ... 이 아니라 2x1=2... 이네

 

4-2) 별(*)로 삼각형 만들기

size = 5
for i in range(size):
    for j in range(i + 1):
        print("*", end="")
    print()

 

size = 5
for i in range(1, size + 1):
    print("*" * i)                                   **보단 어렵네 둘 다 결과는 똑같고

 

4-3) 별(*)로 역삼각형 만들기

size = 5
for i in range(size, 0, -1):
    for j in range(i):
        print("*", end="")
    print()

 

 

3-4) 반복문 - while 문

1) while 이란?

  • 파이썬의 반복문 중 하나인 while문은 조건을 만족하는 동안 코드 블록을 반복적으로 실행합니다.
  • while문은 특정 조건이 참(True)일 때에만 실행되며, 조건이 거짓(False)이 될 때까지 반복됩니다.
  • 이를 통해 어떻게 사용되는지 간단한 설명과 함께 몇 가지 예시를 살펴보겠습니다.

파이썬 while문의 구조

while 조건:
    코드_블록

  • 여기서 "조건"은 불리언(boolean) 값(True 또는 False)을 반환하는 표현식입니다.
  • 조건이 True로 평가될 때까지 코드 블록이 반복적으로 실행됩니다.

2) while문의 기본 사용법

2-1) 1부터 5까지 출력하기

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

해석 : i의 변수는 1이다 // i가 5보다 작거나 같을 때까지 i를 출력한다 // 맞을때마다 i 변수값은 계속해서 +1씩 해준다

출력 :

1

2

3

4

 

2-2) 사용자 입력 받기

user_input = ' '
while user_input != 'quit':
    user_input = input("Type 'quit' to exit: ")
    print("You typed:", user_input)

해석 : user_input 변수는 ' ' 이다 // user_input이 'quit'가 아닐 때까지 출력한다 // user_input에 나가기 위해선 quit라고 타이핑하라는 공란을 만든다 . // 마지막에 공란에 기재한 내용대로 니가 타이핑한 내용은 " "다 로 출력한다 // 여기서 quit라고 공란에 입력하면 니가 타이핑한것은 "quit"다 하고 끝남

 

2-3) 무한 루프와 break문

(무한 루프를 짜실 때는 반드시 ‘break’와 같은 반복을 끝내는 장치를 잘 만들어 두셔야 합니다! colab에서는 어느정도 시간이 지나면 자동으로 끊기겠지만, 본인 컴퓨터에서 그렇게 돌렸다간……..)

while True:
    user_input = input("Type 'quit' to exit: ")
    if user_input == 'quit':
        break
    print("You typed:", user_input)

 

 

****참고!) 반복문에는 break, pass, continue와 같이 특정 조건에 따라 반복 동작을 제어할 제어문을 함께 자주 사용합니다!

  • break, pass, **continue**는 각각 반복문의 동작을 중단하거나 다음 반복으로 이동하거나 아무 동작을 하지 않고 다음으로 넘어가는 데 사용됩니다.
  • break 예시

# 사용자가 'quit'을 입력할 때까지 반복하여 숫자를 입력받고 합을 출력
total = 0
while True:
    num = input("숫자를 입력하세요 (종료하려면 'quit' 입력): ")
    if num == 'quit':
        break
    total += int(num)

print("합:", total)

  • 위 예시에서 break 문은 사용자가 'quit'을 입력할 때 반복문을 종료시킵니다.

 

  • pass 예시

# 홀수를 출력하는 코드에서 짝수일 경우에는 아무 작업도 수행하지 않고 넘어감
numbers = [1, 2, 3, 4, 5]
for num in numbers:
    if num % 2 == 0:
        pass
    else:
        print(num, "은 홀수입니다.")

  • 위 예시에서 pass 문은 아무런 동작을 하지 않고 다음 반복을 계속합니다. 홀수를 출력하는 반복문에서 짝수일 경우 아무 작업도 하지 않고 다음 반복을 진행합니다.

 

  • continue 예시 (넘겨버려라~~~)

# 1부터 10까지의 숫자 중 짝수를 출력
num = 0
while num < 10:
    num += 1
    if num % 2 == 1:
        continue
    print(num)

해석 : 만약 돌려서 나머지가 1이 나오면 넘겨버려 그래서 나머지가 1이 안나오면 프린트 해버려

 

 

3-4) 조건에 따른 특정 동작 반복

count = 0
while count < 3:
    print("Hello")
    count += 1

Hello

Hello

Hello

 

3-5)  조건에 따른 특정 동작 반복 

num = 5
factorial = 1
while num > 0:
    factorial *= num
    num -= 1
print("Factorial of 5 is:", factorial)

Factorial of 5 is: 120

 

뭔 말임????????

 

아 팩토리얼 

5! = 5*(5-1)*(5-2)*...*1 = 5*4*3*2*1 = 120

 

factorial *= num:

  • factorial = factorial * num와 동일한 의미

3-5) Quiz

 

 

1. 답 : d (정답)

2. 답: (오답 -> 짝수 홀수 구하는게 아니라 양수 음수 였음 문제 안읽냐 인간아 .. )

x= int(input("Type a number"))

if x % 2 == 0:

   print("짝수")

else:

   print("홀수")

 

오답노트

-> 짝수 홀수 구하는게 아니라 양수 음수 였음 문제 안읽냐 인간아 .. 

(오답)

x= int(input("Type a number"))

if x >= 0:

   print("양수")

else:

   print("음수")

 

오답노트 2

-> int(input("Type a number")) 에서 int를 넣어버려서 소숫점을 넣으면 오류가 뜨거든

x=float(input("Type a number"))

if x >= 0:

   print("양수")

else:

   print("음수")

 

오답노트 3

-> 0도 양수로 취급해버림

x = float(input("Type a number: "))

if x > 0:

    print("양수")

elif x < 0:

    print("음수")

else:

    print("0")

1. 답 (정답)

b,d

2. 답 (오답)

for i in range(1, 11):
    if i % 2 == 1:
        print(i)

 

오답노트 1

-> 값을 바로 출력만 하지 리스트를 생성하지 못함 

x = []

for i in range(1,11):

     if i % 2 == 1:

        x.append(i)

x

 

답 : b , d(return은 뭔데?) 일단정답 애매함  (강의 자료상 정답 d)

문제 해설 : 아마 continue문을 사용할 때 break문을 추가해서 기재하면 무한루프 탈출은 탈출이니

continue문을 통해 무한루프 탈출이 가능하다는 것으로 해석했을 것

 

 

답: (정답 나는 반복문 중 while 을 사용해서 정답 도출함)

i = 1
while i <= 100:

    if i % 15 == 0:

       print("Fizz&Buzz")

    elif i % 3 == 0:

        print("Fizz")

    elif i % 5 == 0:

        print("Buzz")

    else:

        print(i)

    i += 1

 

강의자료 정답 for문 사용

for i in range(1, 101):
    if i % 3 == 0:
        print("Fizz")
    elif i % 5 == 0:
        print("Buzz")
    else:
        print(i)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

손보미 튜터님 데이터 분석 파이썬 세션 -2

c=['Hello',['python',3 ], (12,10) , {"hi":"!@#", "13":14} ,1 ]

## 인덱싱과 슬라이싱에서 각각의 출력값을 구해주세요.
c[-1:]  => [1]
c[2:-1] => [ (12,10) , {"hi":"!@#", "13":14}]
c[3:3] => [ ]
c[-3:3] => [ (12,10)]

if 조건A:
    처리A
elif 조건B:
    처리B
else:
    처리C
처리D

 

조건문 실행 흐름 설명

  1. 조건문은 위에서 아래로 순차적으로 평가됩니다.
  2. if: 먼저 if 조건A가 참인지 확인합니다. 참이면 처리A를 실행하고 나머지 조건은 평가되지 않습니다.
  3. elif: if 조건A가 거짓이라면, elif 조건B가 참인지 확인합니다. 참이면 처리B를 실행하고, 이후 조건은 평가되지 않습니다.
  4. else: 모든 if와 elif 조건이 거짓이라면, 처리C를 실행합니다.
  5. 조건문 블록이 끝난 후, 처리D는 항상 실행됩니다.

점수가 70점 이상이면 합격, 미만이면 불합격인 시험입니다. 빈 칸에 들어갈 조건으로 알맞은 것은?

score = 85
if ____:
    print("합격입니다.")
else:
    print("불합격입니다.")

정답 : score >= 70

 

1.2 연산자 (그 외 비트연산자 논리 연산자도 있음 이건 기초연산자)

  • True , False Boolean 자료형을 다루려면 연산자를 이용하면 됩니다.
  • SQL과 비슷하게 파이썬에도 기본적인 연산자를 지원합니다
    • == : 등호, (= 는 변수 할당에 사용되었으므로)
    • *: 곱하기, / : 나누기, + 더하기, - 빼기, **: 거듭제곱
    • % (mod): 나눈 나머지
    • // 나눈 몫

퀴즈1

# 1번 문제
print(10 // 3)  
# 예상 출력: __3__

# 2번 문제
print(10 % 4)  
# 예상 출력: __2__

# 3번 문제
print(3 ** 2)  
# 예상 출력: __9__

 

 

퀴즈2 - 주어진 값이 짝수이면 짝수라고 출력하는 함수를 만들어라

  • 짝수린?
    • 2로 나누었을 때 0이면 짝수이다.(개념적 지식)
  • 코드 구현

n = 4
if n % 2 ==0:
print('짝수입니다')
else:
print('홀수입니다')

 

1.3. 문제 풀어보기: 조건문

# 초기 리스트
tests = [13, (23, 14), {"a": 1, "b": 13}, 'happy', 5]

# 조건문
if tests[0] == 1:     (거짓)
    tests.pop()
    
elif tests[2] == len(tests):    (거짓)
    tests.append("balanced")
    
elif "happy" in tests:             (참)
    index = tests.index("happy")
    tests[index] = tests[index].replace("happy", "excited")       -> happy 삭제 excited 대체
    
elif type(tests[2])==dict:        (참) 단, elif "happy" in tests: 조건문이 참이라 쓸모 없음
tests[-3]= sum(test[-3].values())              -> 14
        
else:
    pass
    
print("변경된 리스트:", tests[-3:])

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

정답

# 초기 리스트
tests = [13, (23, 14), {"a": 1, "b": 13}, 'happy', 5]

# 조건문
if tests[0] == 1: # 13 == 1, 실행되지 않음
    tests.pop()
    
elif tests[2] == len(tests): # {"a":1, "b":13} == 5 , 실행되지 않음
    tests.append("balanced")
    
elif "happy" in tests: # 'happy'가 'excited'로 바뀜
    index = tests.index("happy")
    tests[index] = tests[index].replace("happy", "excited") 
    
elif type(tests[2])==dict: # True 조건이지만 실행되지 않음 co
tests[-2]= sum(item.values())
        
else:
    pass
    
print("변경된 리스트:", tests[-3:])

# 변경된 리스트: [{'a': 1, 'b': 13}, 'excited', 5]

 

2. for 반복문

2.1. 문법

print('*')
print('*')
print('*') 

# 세 번 * 을 프린트하는 반복문 
for i in range(3):
print('*')

 

문법은 다음과 같습니다.

for (iterator) in (Sequence Type):
(실행구문1)

 

일반적으로 iterator는 반복자라고 번역됩니다만, 반복문 안에서만 사용되는 변수입니다.

 

프로그래밍에서 중요한 원칙은 한 구문 안에서 선언된 변수는 밖에서 사용되지 않아야합니다. 설마 가능하더라도 서로 배제하기 위해서 서로 다른 변수명을 선언하는걸 권장드립니다.

 

for문에서 반복할 수 있는 자료형은 리스트, 문자열 자료형, range() 내장 함수 등이 가능합니다.

for i in '가나다':
print(i)
'''



'''

 

  • range 함수는 내장함수로 나누자면 3가지 문법이 있습니다. (기본적으로 같은 문법입니다)
    • range(0,3): 시작(default 0) 부터 2(3-1)까지 만들기: 0,1,2
    • range(1,4) : 시작(1) 부터 3(4-1)까지 만들기: 1,2,3
    • range(2,6,2) : 시작(2)부터 5(4-1)까지 2 씩 뛰어가며 만들기: 2,4

2.2. 실제 문제 풀어보기: for 반복문

주어진 문자열에서 모음(a, e, i, o, u)의 개수를 세어보는 반복문을 완성하세요

 

text = "This is a sample string for counting vowels."
vowels = "aeiouAEIOU"
count = 0

for char in ___text___:
    if __char__ in vowels:  
        count += 1

print("문자열 내 모음 개수:", count)

 

정답 :

text = "This is a sample string for counting vowels."
vowels = "aeiouAEIOU"
count = 0

for char in text:
    if char in vowels:  
        count += 1

print("문자열 내 모음 개수:", count)

 

 

2.3. 기타 구문 : continue, break, pass

  • pass : 코드가 비어있는 것과 같습니다. ( 전체 코드 pass 돌릴때 def aa: pass )
  • continue : 하기 코드를 무시하고 즉시 다음 루프를 실행합니다.

for i in range(3):
print(i)
if i == 0:
continue
'''
1
2
'''

 

 break : 현재 돌고 있는 루프를 깹니다.

for i in range(3):
break
print(i)
'''
(아무것도 출력되지 않습니다.)
'''

 

2.4 리스트 컴프리헨션

  • 리스트 컴프리헨션(List Comprehension)은 리스트를 간결하고 Pythonic하게 생성하는 방법입니다. 기존의 for 반복문과 조건문을 한 줄로 표현할 수 있어 가독성과 효율성이 높아집니다.

 

리스트 컴프리헨션 예제

result=[]
for x in range(1,6):
result.append(x**2) 

print(result)

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

[x ** 2 for x in range(1, 6)]   *** 이게 리스트 컴프리헨션

[1, 4, 9, 16, 25]

 

2.5 문제 풀어보기: list comprehension

  • for 반복문에서 작성한 코드를 리스트 컴프리헨션으로 변환해보세요.

text = "This is a sample string for counting vowels."
vowels = "aeiouAEIOU"
count = 0

for char in __text____:
    if __char__ in vowels:  
        count += 1

print("문자열 내 모음 개수:", count)

 

# 모음만 필터링
count = len([char for char in text if char in vowels])
print("문자열 내 모음 개수:", count)

 

3. While 반복문

3.1. 문법

While은 조건문과 반복문의 조합입니다. While내에서 선언된 구문은 조건을 만족할 때까지 영원히 수행됩니다.

while (조건문):
(실행구문)

 

예컨대 다음 구문은 영원히 반복합니다.

while True:
print('파이썬 넘나 어렵...')

 

그래서 보통은 외부 변수를 선언하여 limit를 겁니다.

n = 0
while n <3:
print('while 3번만 실행')
n = n + 1

 

** 입문자 입장에서 while은 저는 잘 알려주지 않습니다. 먼저 while은 특유의 조건문 부분 때문에 원하는 만큼 반복 횟수를 정하기 어렵습니다. 만약 무한번에 가깝도록 구문을 반복하고 싶으면 for문의 횟수를 매우 크게 늘려서 수행하는 걸 권장드립니다. 그럼에도 불구하고 while문을 써야하는 상황(데이터를 지속해서 요청해야한다던지) 이 오면 그때 쓰는 편입니다.

(while 잘 안쓰고 for문이랑 list comprehension 을 자주 씀)

3.3 문제 풀어보기: While 반복문

문제 설명

용사는 몬스터를 물리치기 위해 특정 조건을 만족해야만 공격할 수 있습니다. 몬스터의 체력이 짝수일 때만 공격이 가능하며, 공격이 이루어질 때마다 체력은 2씩 감소합니다. 몬스터의 체력이 0이 되면 "몬스터가 쓰러졌습니다!"라는 메시지를 출력하며 게임이 종료됩니다.

제한사항

  • 몬스터의 초기 체력은 항상 짝수로 주어집니다.
  • 몬스터의 체력이 0 이하가 되면 게임은 종료됩니다.
  • 각 턴마다 몬스터의 체력 상태와 행동을 출력해야 합니다.

# 몬스터의 초기 체력 입력
monster_hp = int(input("몬스터의 체력을 입력하세요: "))

# 초기값이 홀수일 경우 처리
if monster_hp % 2 != 0:
    print("적이 너무 강합니다. 공격할 수 없습니다.")
else: 
    # 체력이 짝수일 경우 몬스터 공격 진행
    while monster_hp > 0:
        print(f"몬스터 체력: {monster_hp}")
        print("용사가 몬스터를 공격합니다! (체력 -2)")
        monster_hp -= 2

    # 몬스터 체력이 0이 되었을 때
    print(f"몬스터 체력: {monster_hp}")
    print("몬스터가 쓰러졌습니다!")

 

3.4. 문제풀어보기: 종합

문제 설명

1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,

3의 배수인 경우는 출력하지 않도록 만들어보자.

입력

정수 1개를 입력받는다.(1 ~ 100)

출력

1부터 입력한 정수까지 출력합니다. 단, 3의 배수는 제외하고 출력합니다.

입력 예시   예시 복사

10

출력 예시

1 2 4 5 7 8 10

 

x = int(input("정수를 입력하시오"))

if x % = 0:

   pass

else:

   print(x)        :::::::::: 몰라!!!!!!!!!!!!!

 

정답 (for 문)

n = int(input("정수를 입력하세요 (1 ~ 100): "))
result = []
# 1부터 n까지 반복
for i in range(1, n + 1):
    if i % 3 != 0:                  # 3의 배수가 아니면 리스트에 추가
        result.append(i)

# 리스트를 문자열로 변환 후 출력
print(" ".join(map(str, result)))

 

****list comprehension 으로 바꿔보자

 

result = [i for i in range(1, n + 1) if i % 3 != 0]

 

for char in __text____:
    if __char__ in vowels:  
        count += 1

print("문자열 내 모음 개수:", count)

 

# 모음만 필터링
count = len([char for char in text if char in vowels])

 

공부하자!!

 

코딩테스트 연습 - 자연수 뒤집어 배열로 만들기 | 프로그래머스 스쿨

 

정답 ( 이건 그냥 정답 있으니까 이 구조 파보기 )

reverse()로 풀이하기 / [::-1] 으로 풀어보기

 

 

 

코딩테스트 연습 - 자릿수 더하기 | 프로그래머스 스쿨

 

이것도 그냥 연습

 

 

 

 

 

정답 (while문)

n = int(input("정수를 입력하세요 (1 ~ 100): "))

# 초기값 설정
i = 1

# while문으로 1부터 n까지 반복
while i <= n:
    if i % 3 != 0:  # 3의 배수가 아닌 경우에만 출력
        print(i, end=" ")
    i += 1  # 반복문을 위한 i 증가

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

데일리 스크럼

오늘의 아티클 (주제)


주제 :

SQL 질문 잘 하는 방법

 

SQL 질문 잘 하는 방법

막막함에 부딪혔을 때 이 글이 도움이 되길 바랍니다. 새로운 걸 배우는 모두가 멋있어요.

datarian.io

 

 

아티클 요약 및 주요 내용


  • 요약 : 아티클의 핵심 내용을 요약해보세요.
  • 주요 포인트 : 아티클에서 강조하는 주요 포인트는 무엇인가요?

핵심 개념 및 용어 정리


  • 핵심 개념: 아티클에서 언급된 중요한 개념을 정리하세요.
  • 용어 정리: 생소하거나 중요한 용어의 정의를 적어보세요.

(선택) 실무 적용 사례


아티클에서 다룬 분석 방법을 실제 업무에서 어떻게 적용할 수 있을까요?

관련 사례를 찾아보거나, 가상의 시나리오를 만들어보세요.

 

요약 :

SQL 질문 잘하는 방법

 

주요 포인트 : 

질문 전 리체크 및 자료 검색은 필수

질문 시 필요한 정보

  

질문 전 리체크

  - 오탈자, 에러메시지에 맞는 조치, 요구하는 조건 재확인 ex)where절의 필터링 조건, order by절의 정렬 조건등

  - 질문에 관한 검색, 문법에 맞는 DBMS 선택 여부

 

자료 검색

 1) 구글 검색

 2) 영문 검색

 3) 검색 키워드 조합

 4) 신뢰 가능한 사이트 선택

 5) 작성 날짜 확인

 

질문 전 비슷한 내용 여부 확인

 

질문 시 필요한 정보

 특정하기 쉬운 정보 위주의 작성 (강의 영상 제목과 시간대 / 문제 링크 등)

 작성 코드 붙여넣기

 정확한 문제 상황 서술 

 

핵심 개념 :

질문도 중요하지만 그전에 스스로 찾아보는 습관이 중요

 

용어 정리 :

*WHERE 절의 필터링 조건

where절 - 데이터베이스에서 특정 조건을 만족하는 데이터를 선택하기 위한 부분 ex ) 'where 나이 > 30' 은 나이가 30세보다 큰 사람들만 선택하라는 것 

 

*ORDER BY 절의 정렬 조건

order by절 - 데이터를 특정 기준에 맞게 정렬하는데 사용, 오름차순/내림차순으로 정렬 가능

 ex ) 'order by 이름 ABC' 는 이름을 알파벳 순서대로 오름차순 정렬하는 것

 

*SELECT 절의 컬럼명

select 절 - 데이터 베이스에서 가져올 걸럼(열)을 지정하는 부분, 필요한 컬럼만 선택하여 결과로 출력 가능

 ex ) 'select 이름,나이' 는 이름과 나이 컬럼만 선택하여 결과를 보여주는 것

 

*커뮤니티 Stack Overflow

개발자들이 프로그래밍 관련 질문을 하고 답변을 받을 수 있는 온라인 커뮤니티 (개발자들 사이에서 인기있고 중요)

질문과 답변 형식으로 운영 / 사용자들이 자신의 지식을 공유하고 다른 사람의 질문에 답함으로써 점수를 얻을 수 있음

또한 태그 시스템을 통해 특정 기술이나 문제를 쉽게 찾을 수 있음 

Stack Overflow

 

*예를 들어, 데이터리안의 SQL 캠프 수강생이라면 solvesql에서 SQLite 대신 MySQL이 선택되어 있는지 확인해주세요

=> 

SQL 캠프라는 교육 프로그램에서 사용하는 solvesql 플랫폼이 있는데 이 플랫폼은 DBMS를 선택할 수 있으며 그 중 하나는 SQLite이다. 하지만 SQLite가 아닌 MySQL을 사용해야 한다는 뜻

 

* SQLite:

 

  • 경량형 DBMS로, 서버 없이 파일 기반으로 동작
  • 설치설정이 간단하며, 주로 이나 소규모 프로젝트에서 사용
  • 데이터가 하나의 파일로 저장되어 관리되며, 멀티유저 지원이 제한적
  • 예: 모바일 앱, 데스크탑 애플리케이션 등

 

SQLite

* MySQL:

 

  • 서버 기반 DBMS로, 더 복잡한 설정관리가 필요
  • 대규모 웹 애플리케이션에서 주로 사용되며, 여러 사용자나 큰 데이터베이스를 처리 가능
  • 멀티유저 지원이 뛰어나며, 네트워크를 통해 여러 컴퓨터에서 데이터베이스에 접근 가능
  • 예: 웹사이트, 온라인 서비스 등

 

* PostgreSQL:

 

  • 고급 기능을 제공하는 오픈 소스 DBMS
  • ACID 트랜잭션을 지원하고, 복잡한 쿼리와 사용자 정의 확장이 가능
  • 데이터 무결성과 확장성에서 뛰어나며, 대규모 시스템에 적합
  • 예 : 기업 시스템, GIS

* ACID( Atomicity Consistency Isolation Durability ): 원자성/일관성/격리성/내구성

데이터베이스 트랜잭션의 4가지 핵심 특성

데이터의 무결성을 보장하고 오류가 발생해도 시스템을 안정적으로 동작할 수 있도록 함(일관성, 안정성 보장)

 

 -원자성 : 트랜잭션 내의 모든 작업은 하나의 단위로 처리

 

 -일관성 : 트랜잭션이 실행되기 전과 후에 데이터베이스는 항상 일관된 상태를 유지

 -격리성 : 동시에 여러 트랜잭션이 진행될 때, 각 트랜잭션은 독립적으로 실행

 -내구성 : 트랜잭션이 성공적으로 완료되면, 그 결과는 영구적으로 저장

 

*GIS( Geographic Information System ): 지리 정보 시스템

지리적 데이터를 수집, 저장, 분석, 해석하고 시각화하는 시스템

위치 기반 데이터를 처리하고 지도나 공간적인 정보로 표현하는 데 사용

 

* Transaction : 데이터베이스에서 하나의 작업 단위로, 여러 개의 작업이 하나의 논리적인 과정으로 묶여 처리되는 것

트랜잭션 내의 모든 작업은 완전하게 실행되거나, 전혀 실행되지 않아야 하며, 중간에 실패하거나 일부만 실행되는 일은 없어야 함

ex)출금 입금 두 작업은 하나의 트랜잭션으로 묶여서 처리되며, 둘 중 하나라도 실패하면 전체 송급 작업 취소

 

'본 캠프 TIL' 카테고리의 다른 글

12월27일 TIL  (6) 2024.12.27
12월26일 TIL  (2) 2024.12.26
12월23일 TIL  (4) 2024.12.23
12월 20일 TIL (데이터 분석 복복습 완!/과제 완!)  (6) 2024.12.20
12월 18일 TIL  (6) 2024.12.18