0901 TIL

looggi·2022년 9월 1일
1

스파르타 내배캠 AI-3

목록 보기
3/130
post-thumbnail

파이썬 기초강의 ~1-14

  • 변수: 값을 담는 것 (메모리(위치) 안의 값을 가리키는 것)
    ''나""안에 있으면 문자열 ex)'2'
    str(2) 숫자->문자열 /int('2') 문자열->숫자
    len(문자열변수): 문자열의 길이를 셈
    문자열변수[:3]: 맨 앞에서부터 3개까지
    문자열변수[3:]: 3개 뒤에서부터(4번째부터) 끝까지
    문자열변수[:]: 복사
    문자열변수.split('기준이되는문자'): 기준이되는문자 기준으로 문자열 분리ㅋㅋ
phone='02-123-1234'
phone=phone.split('-')
result=phone[0]
print(result)

-> '02','123','1234' 출력됨

  • 리스트
    형식: a_list = [1,2,3,4,5]
    추가: a_list.append(99)
    마지막 요소 가르키기: a_list[-1]
    정렬: a_list.sort()
    거꾸로 정렬: a_list.sort(reverse=True)
    요소 확인: result=(98 in a_list)->출력했을 때, 있으면 True 없으면 False 출력

  • 딕셔너리: 순서가 없음 첫번째, 두번째 가리키지 못함->리스트에 담아서 사용
    형식: a_dic={'name':'bob','age':23}
    리스트에 담으면: people=[{'name':'bob','age':23}, {'name':'jake','age':20}] ->result=people[1]['age'] 지정 가능

타고타고타고 들어갈 수 있는 게 중요함

people = [
#     {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
#     {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
#     {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
#     {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
# ]

people[2]['score']['science']-> people이라는 리스트의 3번째 요소(딕셔너리형식)의 스코어라는 키의 밸류(딕셔너리형식)의 키값의 밸류(90)를 가리킴

  • 반복문 for (: 뒤에는 반드시 들여쓰기를 해야함)
for person in people:
     name=person['name']
     age=person['age']
     if age>20:
         print(name,age)

->이름,나이가 순서대로 나온다

for i,person in enumerate(people):
     name=person['name']
     age=person['age']
     print(i,name,age)
     if i>2:
         break

->엄청 긴 리스트에서 함수가 작동이 잘 되는지 몇개만 테스트할 때 주로 사용함

# 짝수의 갯수를 세기
 count=0
 for num in num_list:
     if num%2==0:
         count=count+1

 print(count)
# 반복문 전에 count를 정의하면 되는걸..으..
#리스트 안의 모든 숫자의 합을 구하기
sum=0
for num in num_list:
    sum=sum+num
print(sum)

#sum+=num으로 쓸 것
#리스트 안에서 가장 큰 자연수 구하기
a=0
for num in num_list:
    if a<num:
        a=num
print(a)
#주민등록번호를 받아 성별 구하기
 def check_gender(pin):
     if pin.split('-')[1]=='2******':
         return '여자'
     else:
         return '남자'
 my_pin='340713-2******'
 print(check_gender(my_pin))
 
 #답안
 def check_gender(pin):
    a=int(pin.split('-')[1][:1])
    print(a)
    if a%2==0:
        print('여자')
    else:
        print('남자')
my_pin='201010-1234568'
check_gender(my_pin)
  • 튜플: 리스트와 동일하지만 불변형(수정불가, 순서있음)
    형식:()

  • 집합: 리스트의 중복을 제거해줌
    형식: set(리스트형식)
    set(a&b)(교집합), set(a|b)(합집합), set(a-b)(차집합) (당연히 a,b는 모두 집합임)

-fstring: 변수를 문자열과 섞어 출력하기 편리하고 보기에도 더 직관적이고 깔끔함

scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}
]

for s in scores:
    name=s['name']
    score=s['score']
    print(f'{name}의 점수는 {score}점입니다.')
    
# print(name+'의 점수는 '+str(score)+'점입니다.')
-> 숫자 변수와 문자열 변수는 서로 합할 수 없어서 변환해줘야해서 불편함

-예외처리:try안의 문장을 실행시키고 에러가 났을 경우 멈추지 말고 except 안의 문장을 실행하고 뒤로 계속 진행할 수 있게 함/ 웬만하면 쓰지 말 것

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby'},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

for person in people:
    try:
        if person['age']>20:
            print(person['name'])
    except:
        print(person['name'],'에러입니다')

알고리즘 실습

  • 터미널에서 값을 받기 위해서 사용함
    a=input() ->type: str

  • 기본적으로 파이썬은 입력받은 값을 문자로 인식
    숫자로 변환하는 방법
    a=int(input()) ->type: int

  • 여러개를 입력받고 싶다
    a,b = input().split()
    a,b = input().split(,)-> ,를 기준으로 분리해서 받음 1 2,3 ->a=1 2 b=3

  • 여러개를 입력받고 싶다 숫자버전
    a,b = map(int,int()split()) -> type: map
    map: ,앞에 내용을 ,뒤의 내용에 각각 적용한다
    -> a,b = input().split()
    a=int(a)
    b=int(b)
    해도 되긴함
    -> int(input().split())은 (x)
    int는 하나의 변수에만 적용 가능 input().split()은 리스트라서 적용불가

  • 몇개를 받는지 정해지지 않았을 때
    list(map(int,input().split())) -> type: list

print("\    /\ ")
print(" )  ( ')")
print("(  /  )")
print(' \(__)|')
profile
looooggi

0개의 댓글