본문 바로가기

TIL(2024y)/Python (w Numpy)

24.05.07 Python

[ 24.05.03  Review]

1. Index/ Slash 헷갈리지 않게 숙지하기

   - '안녕하세요' [-3:-1] --> 하녕

   - print('\'안녕하세요\' 라고 말했다.') --> '안녕하세요'라고 말했다.

2. 연산자

   - 실수형, 정수형 연산 --> 실수형

   - 나누기 연산 --> 실수형

   - 복합대입연산자 e.g. +=1 --> 기존 변수에 +1씩 

3. 함수의 형태 그대로 출력

   - interger = int(number) --> type: int

   - b=string(interger) --> type: string

4. 변수명 만들때 지켜야 할 사항

   - 키워드 사용불가: help('keywords') 

   - 특수문자는 언더바만

   - 숫자로 시작 안됨

   - 공백은 넣을 수 없음

5. str.format( ) 함수

   - '안녕하세요 {} 입니다.'.format('아슬란') --> 안녕하세요 아슬란 입니다.'

   - str.upper()함수 e.g. 'abc'.upper() --> 'ABC'

6. .strip() / lstring() : 앞/뒤로 공백 없애는 함수 

7. str.find()/ str.rfind(): 오/왼쪽으로 순서찾아주는 함수 

8. str.split() e.g. "10 20 30".split("") --> "10", "20", "30" 여기서 "대신 띄워쓰기 입력하면 아무것도 없이 띄워쓰기로 나뉨.

 

[추가] f-문자열

  • print('3+4= {}'.format(3+4)) 입력의 번거로움을 대신하기 위해서 print(f'3+4={3+4}') --> 3+4 = 7 
    e.g.
    a='국어'
    b='수학'
    print(f'1.{a} 2.{b}')
    --> 1.국어 2.수학
    e.g. 
    age=20
    color="빨간"
    print(f"빨간 {age}살이며, {color}색을 좋아해요.")
  • f'{12.0:.3f}' --> '12.000' :.3f는 소숫점 자리수 설정하는 것

이번주 Curriculum (bold: Today's)

  • 불 자료형
  • 조건문
  • 리스트 자료형
  • for 반복문
  • 딕션너리 자료형
  • while 반복문
  • 함수
  • 튜플 자료형
  • 람다 함수
  • 예외 처리
  • 클래스
  • 모듈
  • Conda 사용법

불(Boolen) 자료형

  • print(True, type(true)) --> True <class 'bool'>
  • 비교 연산자

  • 논리 연산자

  • and 연산자

  • or 연산자

  • 콜라와 사이다 모두 사와: and
  • 콜라 또는 사이다 사와: or 
  • Q) print(40 < x <) 을 논리 연산자로 표시하라.  
    A) print((x>40) and (x<60)) --> False

if 조건문

  • 조건에 따라 코드를 실행하거나, 실행하지 않게 만들고 싶을 때 사용하는 구문
  • if 입력 후 print는 공백 네칸/두칸/tab 사용 (Colab은 자동)
  • Q) 정수를 입력으로 받아서 정수가 양수인지 음수인지 0인지 분류해서 프로그램을 만들어보자
    A) - x > 0 --> 양수 --> '입력한 정수 x는 양수입니다.' 
         - x < 0 --> 음수 --> '입력한 정수 x는 음수입니다.' 
         - x == 0 --> 0    --> '입력한 정수 x는 0입니다.' 
    string_number = input('정수를 입력해 주세요> ')
    number=int(string_number)

    if number > 0 :
      print('입력한 정수 {}는 양수입니다.'.format(number))
    if number < 0 :
      print('입력한 정수 {}는 음수입니다.'.format(number))
    if number == 0 :
      print('입력한 정수 {}는 0입니다.'.format(number))
  • 날짜/ 시간을 활용해보자
    Q) 현재 시간(0000년 0월 00일 00시 00초)을 출력해보자.
    Q) 현재 오전/오후 인지를 출력해보자.

실행이 안됨

이때, 조건 문의 범위가 유사해서 현재 시간이 해당되는 것이 없어서 아무것도 뜨지 않는 것. (오류도 딱히 아니고)

조건 수정 후 실행 됨.

 

Q) 현재 계절을 출력해보자.  

now=datetime.datetime.now()
month=now.month

if 3 <= month <= 5:
  print('이번달은 {}월로 봄 입니다.'.format(month))
if 6 <= month <= 8:
  print('이번달은 {}월로 여름 입니다.'.format(month))
if 9 <= month <= 11:
  print('이번달은 {}월로 가을 입니다.'.format(month))
if 1 <= month <= 2 or month ==12:
  print('이번달은 {}월로 겨울 입니다.'.format(month))

: <=12 month <=2 이란 숫자는 없기때문에 나눠서 입력. 

 

Q) 짝수/ 홀수를 구분하는 프로그램을 만들어보자. 

    1. 짝수는 2로 나누면 나머지가 0, 홀수는 2로 나누었을 때 나머지가 0이 아닌 숫자

i=int(input("숫자를 입력해 주세요> "))
#2로 나눴을 때 나머지가 0이면 짝수
#그 외에는 홀수

if i%2 == 0:
  print("짝수 입니다.")
else:
  print("홀수 입니다.")

   

    2. 짝수는 마지막 숫자가 0, 2, 4, 6, 8인 숫자/ 홀수는 마지막 숫자가 1, 3, 5, 7, 9인 숫자 

number=input("숫자를 입력해 주세요> ")
last_character = number[-1]

if last_character in '02468':
  print('짝수입니다.')
if last_character in '13579':
  print('홀수입니다.')

 

if ~ else, elif 구문

  • if: 조건이 참일 때 실행하는 문장
  • else: 조건이 거짓일 때 실행하는 문장
  • elif: 조건이 두 경우로만 나눠지지 않는 경우 e.g. 계절; 4가지 
  • e.g.
    if 조건 a: a가 참일 때 실행하는 문장
    elif 조건 b: 조건 a가 거짓이고  조건 b가 참일 때 실행하는 문장
    ---
    else: 위의 조건이 모두 거짓일 때 실행하는 문장

pass 키워드

  • 전체 골격을 잡아놓고 프로그래밍을 진행하는 경우를 생각해보자
  • 조건 분기에서 참이면 A과정을 실행하고, 거짓인 경우 B과정을 실행
  • 아직 A, B과정은 계획만 있지 미구현 상태 
    if A: 
      print(~) 
    else: 
      pass # 아직 미구현 

list와 반복문

  • list: 여러가지 자료형을 저장할 수 있는 자료형 (!=array) 
  • 숫자, 문자열, 불 등은 독립적인 자료형
  • list는 이러한 자료들을 모아서 사용할 수 있는 형태의 자료형
  • list의 형태: [요소, 요소, 요소, ...]

list를 선언하고 요소에 접근하기

  • list_a = [1, 2, 3, 4, 5]
    list_a[0] --> 1

list 연산하기: 연결(+), 반복(*), len( )

  • 문자열과 동일

list에 요소 추가하기: list.appen(), list.insert()

  • [1,2,3]에 4를 맨뒤/ 2뒤에 추가하기
    - 방법1: list.appen()
    list_a=[1,2,3,]
    list_a.append(4)

    - 방법 2: list.insert()
    list_a=[1,2,3,]
    list_a.insert(2,4)

    - 방법 3: list.extend() 
    list_a=[1,2,3,]
    list_a.extend([4,5,6])

list에서 요소 제거하기

  • 인덱스로 제거하기: list.pop(), del
    - del
    list_a=[0,1,2,3,4,5]
    print('Before:', list_a)
    del list_a[1]
    print('After:', list_a)
    --> Before: [0, 1, 2, 3, 4, 5]
         After: [0, 2, 3, 4, 5]
     
    - list.pop()
    list_a=[0,1,2,3,4,5]
    list_a.pop(-3)
    print(list_a)
    --> [0, 1, 2, 4, 5]
  • 값으로 제거하기: list.remove() 
    list_a=[0,1,2,3,4,5]
    list_a.remove(2)
    --> [0, 1, 3, 4, 5]

list 정렬하기: list.sort()

  • list.sort(): 순서를 바꾸기 (숫자 크기 순으로 정렬)
    list_a=[52,273,103,32,275,1, 7]
    print('Before:', list_a)
    list_a.sort()
    print('After:', list_a)

    Before: [52, 273, 103, 32, 275, 1, 7]
    After: [1, 7, 32, 52, 103, 273, 275]

       --> list_a[::-1]도 사용 기능. (::-1: 역순으로 뒤집기/ ::-2 역순으로 두칸씩 띄워서 출력)

 

존재 여부 확인하기: in/ not in 연산자

  • element (not) in list 로 찾기

list에 적용할 수 있는 기본함수: min(), max(), sum()

  • min():리스트 내부에서 최소값을 찾음
  • max(): 리스트 내부에서 최대값을 찾음
  • sum(): 리스트 내부에서 모든 값을 더함 

for 반복문

  • for 반복 요소 in 반복할 수 있는 것:
         코드 (반복적으로 하고 싶은 것)
  • 반복할 수 있는 것: 문자열, 리스트, 딕셔너리, 범위 등.
  • print('안녕하세요')를 100번 반복하려면? 
    for_in range(100):
       print("안녕하세요") 

for 반복문: 리스트와 함께 사용하기 

  • for 반복 요소 in list:
        print(반복요소)
    list=[ 273 32 103 57 32 ]
    for element in list:
      print(element)
    --> 273 32 103 57 32
  • 중첩 list와 중첩 반복문
    list_of_list = [
        [1,2,3],
        [4,5,6,7]
    ]
    print(list_of_list[0][1])
    --> 2
  • for  in list
    for list_in_list in list_of_list:
        print(list_in_list)
    --> [1, 2, 3]
         [4, 5, 6, 7]
      for list_in_list in list_of_list:
      for element in list_in_list:
      print(element)

      --> 1 2 3 --- 

  • Q) 뉴진스 ditto 가사의 각 문장별 글자수 나열하기
    A) - 가사를 줄로 나누고
        - for 반복문을 이용
        -  각 줄별 길이를 출력하고, 그 옆에 그 줄의 가사를 출력
    lyrics = """ 가사 복붙"""
    lyrics_list=lyrics.split('\n')
    for element in lyrics_list:
      character_length=len(element)
      print('글자수 {:2d} | {:40s}'.format(character_length, element)) --> :40s 무슨의미??? 

Dailiy quiz)
1~50까지 list가 있을 때, 1부터 50까지 반복하면서 369게임의 결과를 나타내는 프로그램을 만드시오. 

<처음 전제로 필요한 것들 기재하기>

- 3, 6, 9가 들어가면 박수 한번 "짝"

- 33, 36, 39가 들어가면 박수 두번 "짝"

- 그 외에는 숫자를 출력

- 숫자를 계산하는 것이 아니라 안에 포함되어있는지를 판단하는 것이기에 string으로 받기 

 

<최종 코드>

sample_list = list(range(1,51))

print("369~"*4)
i=1
for i in sample_list:
  if ('33' in str(i) or '36' in str(i) or '39' in str(i)):
    print('짝짝')
  elif ('3' in str(i) or '6' in str(i) or '9' in str(i)):
    print('짝')
  else:
    print(i)

 

<처음 짠 코딩>

for number in list(range(1,51)):

     number_string= str(number)

if ('3' in number_string) or ('6' in number_string) or ('9' in number_string):

   print('짝')

if('33' in number_string) or ('36' in number_string) or ('39' in number_string):

   print('짝짝')

else:

  print(number_string)

 

처음에 짠 코딩은 위와 같다. 이럴 경우 첫번째 if 조건문에서 충족하면 실행되고 두번째 조건문으로 내려오지 않기때문에 

33, 36 등이 짝짝이 아닌 짝으로 실행. --> 순서를 변경 

 

 <다른 방법>

for number in list(range(1,51)):

     number_string=str(number)

 

clap = ' '

 

for digit in number_string:

     if digit in '369':

        clap += '짝'

     if clap:

        print(clap)

     else:

       print(number_string)

 

위의 코드로 짜면, 51 이후의 숫자에서도 모두 적용됨. 

 

 

'TIL(2024y) > Python (w Numpy)' 카테고리의 다른 글

24.05.13 API호출  (0) 2024.05.13
24.05.10 Python  (0) 2024.05.10
24.05.09 Python  (0) 2024.05.09
24.05.08 Python  (0) 2024.05.08
24.05.03 Python  (0) 2024.05.04