input() 

사용자로부터 정보를 입력받는 함수 

user_input = input()
print(user_input)
user_input

 

int() 

integer형, int형, 정수형 
정수형 변환 함수 (형 변환 함수. 파이썬에서 가능) 
int(값)

"""
eng 변수, kor 변수, math 변수를 만들고 
각 변수는 과목의 시험 점수이다. 
각 과목의 점수를 입력할 수 있도록 input()을 사용한다.

3과목 점수의 평균을 내고 
평균 점수에 따라 성적을 출력한다. 

A : 91 ~ 100
B : 81 ~ 90
C : 71 ~ 80
D : 61 ~ 70
F : 60 이하 

"""

eng = input("영어 점수: ")
eng = int(eng)
kor = int(input("국어 점수: "))
math = int(input("수학 점수: "))

avg = (eng + kor + math) / 3

if avg >= 91:
    print("A")
elif avg >= 81:
    print("B")
elif avg >= 71:
    print("C")
elif avg >= 61:
    print("D")
else:
    print("F")
​

 

float()

실수형으로 변환해주는 함수 float() 
실수형을 float형이라고도 한다. 
부(뜰 부)동(움직일 동)소수점floating point에서 온 float

print(0.1 + 1.1 == 1.2) #언어에 따라 다를 수 있는데, 파이썬에서는 False로 뜸. 오류가 난다. 
print(0.1 + 1.1)

# 0.1초보다는 100 밀리초로 표현하는 것이 좋다.

# float_value = float(input("실수 입력"))

print(float_value)
# 2입력하면 2.0 나옴

 

[ ] List 

리스트 자료형 : 대괄호[] 안에 element(원소)들을 포함한 자료형 
여러 개의 값을 변수 1개에 저장하는 형태이다. 
파이썬이 알아서 데이터 크기를 잡아준다. (다른 곳에서는 데이터 크기도 알려줘야 하나 보다 함)
indexing, slicing이 가능하다.

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 숫자형 데이터
[1, 1, 1, 1, 1, 1, 1] # 같은 수 가능 
["Hello", "World", "Python"] # 문자열 가능 
[1, "Hello", 2, "WOW"] # 숫자 문자 섞어 가능
[1, 2, ["Hello", "World"], 3] # 숫자 문자 리스트까지 섞기 가능
[] # 비워두고 나중에 채워줄 수 있다. 

# index로 값들 불러오기
li_1 = [1, 2, 3]
print(li_1[0]) 
print(li_1[1])
print(li_1[2])
print(li_1[-1])
print(li_1[-2])
print(li_1[-3])
# print(li_1[-4]) # 데이터 범위를 벗어나서 오류남!!

print(li_1[0] + li_1[1]) # indexing해온 값을 더할 수 있다.

 

indexing

찾아보기 indexing (IT용어사전)
정보 검색을 위해 보조 기억 장치에 들어 있는 파일에 대해 찾아보기 파일을 만들어 내는 것. 대개 찾아보기 파일은 키 필드의 값과 그 레코드의 위치를 나타내는 조합으로 이루어지며, 찾기에 편리하도록 키 필드의 순서대로 정렬되거나 이진 트리, B 트리 등으로 만들어지기도 한다.

​색인 만들기 indexing (컴퓨터인터넷IT용어대사전)
색인 부착. 지표 부착. 데이터를 찾아내기 위한 색인을 지정하는 것. 이것은 메모리 내의 표나 직접 액세스 기억 장치(direct access store) 내의 파일로부터 데이터를 검색하기 위하여 사용되는 방법이다. 예를 들면, 자기 테이프(magnetic tape) 등과 같이 처음부터 데이터를 체크하면서 목적한 것을 찾지 않고, 끝마치도록 미리 데이터에 그 장소를 알 수 있도록 한 색인(index)을 기억시키는 방법. 정보 색인 분야에서는 검색을 위한 키를 해당 레코드(문헌 등)에 대하여 부여하는 작업을 말한다.

리스트에서의 데이터 indexing과 slicing 

파이썬에서는 리스트가 중요한 시퀀스 타입sequense type 자료형이다. 기본 사용법을 잘 알아두어야 한다.
시퀀스 타입에서는 index가 자동생성 된다고 함..
indexing과 slicing은 다양하게 확장되어 사용된다.  
영상의 경우 2차원. 컴퓨터에 가져와서도 차원이 유지가 된다.

 

sequence, sequencing 시퀀스

(1) 순서(order)를 지칭한다.
(2) 몇 가지 아이템을 어떤 기준에 따라 공간적 또는 시간적으로 순서를 정하여 배열하는 것. 숫자를 크기 순으로 혹은 문자를 알파벳 순으로 배열하거나 계산기의 명령을 일정한 순서로 배열하여 축차 실행하는 것이다.
* 둘 또는 그 이상의 사상이 시간적으로 중복되지 않고 생기는 것이 sequential인데, 두 사상이 연속하여(다른 사상이 그 사이에 끼어들지 않고)생기는 경우는 연속(consecutive) 이라고 한다.
출처 : 네이버 지식백과 / 전기용어사전, 2011. 1. 10., 김동희, 유도현, 육재호, 윤만수, 이상희, 임경범, 정해상


※ Sequense : 영화에서, 하나의 이야기가 시작되고 끝나는 독립적인 구성단위. 극의 장소, 행동, 시간의 연속성을 가진 몇 개의 장면Scene이 모여서 이루어진다.

li_2 = [1, 2, 3, [4, 5, 6]]
print(li_2[3][0]) #3번 index에서 0번 인덱스 데려오는 방법
print(li_2[2:3])
print(li_2[1])
print(li_2[:2])
print(li_2[3])

print(li_2[0:1]) # 리스트가 출력됨
print(li_2[0]) # 정수형 값하나만 출력됨


# 대괄호 두개는 2차원. 2차원배열. 
# 인공지능은 차원이 엄청 많다. 배열 반드시 필요함. 대괄호 엄청 많이 씀. index로 불러와야 함. 
# 선 1차원 // 선끼리 묶어 2차원 // 면끼리 묶어 3차원 // 수학의 
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]]

 

List slicing

li_3 = [1, 2, 3, 4, 5]
print(li_3[1:3])
# print(li_3[100]) # 안돼! 오류납니당
print(len(li_3)) # 길이 재보자. 5 출력됨


li_3[0] = 10 # 0번째 원소를 10으로 만들고 싶을 때 9 더하는 게 아니라 10으로 재할당해줌!!
print(li_3) # [10, 2, 3, 4, 5] 출력됨

 

append()

# append(원소)
## 리스트의 마지막에 원소를 추가해주는 함수
li_4 = [1, 2, 3]
li_4.append(4) # 숫자 추가 가능
li_4.append("문자") # 문자도 추가 가능
li_4.append([리스트]) # 리스트도 추가 가능
print(li_4) # [1, 2, 3, 4] 출력

 

insert()

# insert(인덱스, 원소)
## 인덱스 위치에 원소 삽입 
li = [1, 2, 3]
li.insert(1, 10) # 1번 index에 10 추가하기!
print(li)

 

remove()

# remove(값)
## 리스트에서 함수에 입력된 값과 같은 값을 찾아 삭제함 
## 리스트에 없는 값을 삭제하려고 하면 ValueError 남
li = [1, 2, 3, 2]
li.remove(2) # 1번 index의 첫번째 2가 지워진다
print(li)

 

pop()

# pop(인덱스)
## 리스트의 인덱스 위치의 요소를 꺼낸다. 
li = [1, 2, 3, 4]

a = li.pop() # 리스트 안에 있는 값을 없애고 출력한다. 
print(a) # 마지막 값 4 출력

print(li) # [1, 2, 3] 위에서 마지막값 4를 뺐다.  

li.pop(1)
print(li) # [1, 3] 1번 인덱스의 2를 또 뺐다.

b = li.pop(1) #[1, 3]에서 인덱스 1번 값을 빼서 b 변수에 할당하라 
print(li) # [1] 이 남았다. 
print(b) # 3 출력됨. 위에서 뽑은 숫자 3을 변수 b에 넣어서 출력한 값

 

index()

# index(값)
# 리스트에서 값을 찾아 그 값의 인덱스를 돌려준다(함수에서 가장 중요한 개념인 return). 
# 인덱스 값을 알아내주는 함수 
li = [1, 2, 3]
li.index(2)

# li[2] ------------> 인덱싱(인덱스로 값에 접근)
# li.index(값) -----> 인덱스 알아내기 

li = [1, 2, 3]
idx = li.index(2) # 1
print(idx) # 인덱스 위치 찾을 때 잘 씀

 

sort()

# sort()
## 리스트의 요소를 정렬한다. 
li = [5, 3, 1, 4, 2]
li.sort() # [1, 2, 3, 4, 5] 오름차순으로 출력됨
li.sort(reverse = True) # [5, 4, 3, 2, 1] 내림차순으로 출력됨 
print(li)

 

reverse()

# reverse()
## 리스트의 순서를 뒤집는 함수 
## 규칙대로 정렬하지 않음 거울처럼 그대로 뒤집힘 (중요)
li = [2, 4, 2, 7, 3, 6]
li.reverse()
print(li)
# [6, 3, 7, 2, 4, 2] 출력됨

 

count()

# count(값)
## 리스트 안에서 해당 값이 몇 개 있는지 세는 함수 
# return이 있는 함수. 
# 카운트로 확인하는 방법이 있다. in 연산자를 더 사용하긴 함.  
li = [1, 2, 4, 2, 2, 3]
cnt = li.count(2)
print(cnt) # 3 출력

 

리스트에서의 + 연산자

# + 연산자 
## 리스트를 연결한다. 
li_1 = [1, 2, 3]
li_2 = [4, 5, 6]
print(li_1 + li_2) # [1, 2, 3, 4, 5, 6] 출력
li_1.extend(li_2) # [1, 2, 3, 4, 5, 6] 출력

 

리스트에서의 * 연산자

# * 연산자 
## 리스트를 반복한다. 
li = [1, 2, 3]
print(li * 3) # [1, 2, 3, 1, 2, 3, 1, 2, 3] 출력

 

dictionary

# dictionary(딕셔너리) 자료형
# 이름표를 달아서 찾을 수 있도록 해 놓은 것
# key-value 형태
# key: value
# value나 key 자리에 list, 숫자, 문자 등 여러 타입의 값이 들어갈 수 있다. 
# key 값으로 검색한다. 

person = {
    "이름": "김땡땡", 
    "나이": 18, 
    "점수": {
        "영어": 80, 
        "국어": 90, 
        "수학":80
        }
}
print(person["나이"]) # 18 출력
print(person["점수"]) # {'영어': 80, '국어': 90, '수학': 80} 출력
print(person["점수"]["영어"]) # 80 출력


# dictionary에 정보 추가하는 방법 
dict_1 = {1: 'a'}
dict_1['b'] = 2 # dict_1 변수에 'b': 2 추가하겠다. 
dict_1[1] = 'c' # 1 이라는 키에 해당하는 value 재할당 방법 {1: 'c', 'b': 2} 로 바뀌었다.
del dict_1[1] # {'b': 2} 1 이라는 key값에 해당하는 정보가 삭제됨
print(dict_1)

 

keys(), values(), items()

dict_2 = {1:'a', 2:'b', 3:'c'}
# keys()
## dictionary에서 key 값만 리스트 형태로 돌려준다.
dict_keys = dict_2.keys()
print(dict_keys)

# values()
## dictionary에서 value 값만 리스트 형태로 돌려준다. 
dict_values = dict_2.values()
print(dict_values)

# items()
## dictionary에서의 key-value 쌍을 튜플로 묶은 값을 리스트 형태로 돌려준다.
dict_items = dict_2.items()
print(dict_items)

 

tuple()

튜플은 리스트와 비슷한 자료형이지만 리스트와는 다르게 독특한 특징을 지니고 있는 데이터 구조
튜플은 리스트와 다르게 특정 요소의 값을 변경하거나 삭제할 수 없음

# 리스트
a = list() 
a = []
a = [1, 2, 3, 4, 5]

# 튜플
b = tuple()
b = () #소괄호
b = (1, 2, 3, 4, 5)

# 주의점 요소가 1개인경우 , 를 찍어줘야 튜플로 인식한다.
# (1) 인 경우 그냥 우선연산자로 인식
a = (1, )

# 괄호 생략 가능
a = 1, 
a = 1, 2

 

get()

# get()
# key에 대응되는 value를 돌려준다. 
# key 값이 존재하지 않으면 None을 돌려준다. 
# 값이 None일 경우, 뒤에 표기해 준 값으로 출력해 줌 (숫자, 문자, 기타 등등)
# dictionary에서 없는 key나 value를 호출하면 에러가 남

dict_2 = {1:'a', 2:'b', 3:'c'}
# dict_2["나이"] # KeyError: '나이'
print(dict_2.get("나이", "나이 불명")) # 에러 대신 None (의미있는 것은 없다는 값이)이 호출됨

 

clear()

# clear()
## 딕셔너리 안의 모든 요소를 삭제한다. 
dict_2 = {1:'a', 2:'b', 3:'c'}
dict_2.clear()
print(dict_2) 
# {} 출력됨

 

 

ex) li_1의 원소element를 사용하여 Hello world Python 이라고 출력하세요.

li_1 = ["Hello", "World", "Python"]

# 아래 세 줄의 결과는 같음
print(li_1[0], li_1[1], li_1[2])

# join(리스트)
## 리스트의 문자열을 합치는 함수
print(" ".join(li_1))

print(li_1[0] + " " + li_1[1] + " " + li_1[2])

 

ex) li_1의 원소를 사용하여 HelP라고 출력하세요.

li_1 = ["Hello", "World", "Python"]

# 아래 두 줄의 결과는 같음 
print(li_1[0][0:3] + li_1[2][0])
print(li_1[0][0] + li_1[0][1] + li_1[0][2] + li_1[2][0])

 

ex) 1i_1과 li_2를 사용하여 ["Hello", "World", "Python", 1, 2, 3] 를 출력하세요.

li_1 = ["Hello", "World", "Python"]
li_2 = [1, 2, 3]

print(li_1 + li_2)

li_1.extend(li_2) # . 앞의 변수가 실행한다. 
print(li_1) # 위의 + 연산자를 사용할 때와 달리, extend()는 1번 list를 변하게 한다.

 

ex) 1i_1과 li_2를 사용하여 ["Hello", 1, "World", 2, "Python", 3] 를 출력하세요.

li_1 = ["Hello", "World", "Python"]
li_2 = [1, 2, 3]

li_1.insert(1, li_2[0])
li_1.insert(3, li_2[1])
li_1.insert(5, li_2[2])
# 늘어나는 index 값에 유의하세요. 아래도 같은 값임

li_1.insert(1, li_2[0])
li_1.insert(3, li_2[1])
li_1.insert(li_2[2])

print(li_1)

 

sum(), input(), int()

"""
eng 변수, kor 변수, math 변수를 만들고 
각 변수는 과목의 시험 점수이다. 

영어점수는 80점
국어점수는 60점
수학점수는 50점

3과목 점수의 평균을 내고 
평균 점수에 따라 성적을 출력한다. 

A : 91 ~ 100
B : 81 ~ 90
C : 71 ~ 80
D : 61 ~ 70
F : 60 이하 
"""

# 정수형 변환 함수 : 파이썬에서는 바꿔준다. 
# 정수형, integer형, int형
# int(값) 

# input() 함수
# 사용자로부터 정보를 입력받는 함수 
user_input = input()
print(user_input)

# sum() 합쳐주는 내장 함수
# 리스트의 요소를 모두 더한다. 
# 문자가 들어가 있으면 안됨!


scores = []
scores = list() # 비어있는 리스트 생성 
scores.append(int(input("영어 점수:"))) 
# 이렇게 함수를 여러개 호출할 수 있다. 안쪽부터 바깥 순으로 작동함
scores.append(int(input("국어 점수:"))) 
scores.append(int(input("수학 점수:"))) 

avg = (scores[0] + scores[1] + scores[2]) / 3
# 아랫줄은 윗줄과 결과값이 같다. 
avg = sum(scores) / 3

if avg >= 91:
    print("A")
elif avg >= 81:
    print("B")
elif avg >= 71:
    print("C")
elif avg >= 61:
    print("D")
else:
    print("F")

 

ex)

나이와 가지고 있는 돈을 입력받는다.

가지고 있는 돈으로 물건을 몇 개 살 수 있는지와 잔돈을 출력한다.

물건의 가격은 500원이다.

age = input("나이: ")
money = int(input("돈: "))
price = 500
print(money // price)
print(money % price)

 

ex)

나이와 가지고 있는 돈을 입력받는다.

가지고 있는 돈으로 물건 별로 각각 몇 개 살 수 있는지와 잔돈을 출력한다.

물건의 가격은 1번 물건 1000원, 2번 물건 50원, 3번 물건 120원이다.

age = input("나이: ")
money = int(input("돈: "))
prices = [1000, 50, 120]
print(money // prices[0], money % prices[0])
print(money // prices[1], money % prices[1])
print(money // prices[2], money % prices[2])

 

swapcase()

알파벳 대문자는 소문자로, 소문자는 대문자로 변경해 준다.

str = input()
print(str.swapcase())

 

특수문자의 경우 
문자열 앞에 r을 넣어주면 그대로 출력됨 

아니면 따옴표를 세개씩 둘러주는 듯 

print(r'!@#$%^&*(\'"<>?:;')
print('''!@#$%^&*(\'"<>?:;''')

 

 

 

하드코딩으로 직접 다 입력하면서 코딩하면 효율이 떨어진다.
문제를 최대한 일반화해서 처리해야 한다.
생략할 수 있는 건 생략하고, 합칠 수 있는 것을 합치는 것을 일반화 한다고 한다.

# 데이터는 원본이 중요하다.
# 복사해서 사본에서 작업하고 검증한 후 원본에 덮어써야 한다.

 

+ Recent posts