[Python]Wecode

정현석·2020년 10월 27일
0

print ("Hello World!")

Data Types

Integer : 정수값
Float : 실수, 소수점 숫자
Complex Numbers : 실수와 허수를 포함하는 복소수 파이썬에서는 j를 사용
String : 문자열
Boolean : 조건문, True and False 2가지 값만 사용

Variables(변수)

name =" 정현석"
gender = "남자" (변수 값 선언)
print(name) > "정현석" 출력 (변수 불러오기) " ' 를 양쪽으로 사용하여 구분
print(f'문자 출력{변수} ') # print에 변수출력 가능
age = 20 # 처럼 숫자, 소수점, 음수도 가능, 숫자는 ""를사용하지 않음

Math

더하기 +
뺴기 -
곱하기
나누기 /
정수나누기 //
% 나누기의 나머지 값 계산
+= 증감 연산자
-= 감소
= 곱하기를 실행 후 값을 변수에 저장
(num = 10 )
(num1 *= 2 # == 20 출력)
/= 나누기를 실행 후 값을 변수에 저장
num1 = 10
num1 /= 2 #== 5 출력
** 멱법, 10의2승
10
** 2

연산표현의 순서

  1. ( )
  2. **
  3. *, / , %
    • , -

문자열 더하기

print("Hello, " + "World")
입력받은 값을 저장하여 출력도 가능
name = input()
print("Hello, " + name).

길고 복잡한 문자열에는 + 보다 아래 방법을 많이 사용

name = input()
print(f"Hello, {name}")
먼저 따음표 앞에 f 가 있어야되고 변수(함수)를 중괄호로 표시

indention

  • 들여쓰기를 사용해서 종속된 코드를 나타낸다.
if condition:
    print("if statement code 1")
    print("if statement code 2")
print("Not if statemet code")

if (조건문)

조건문 if 에 첫번째 값에 동일하면 True 값을 리턴하고 출력
False 라면 두번째 조건 문 실행
조건문이 더 많아지면 and, or 사용

def check_age(name, age): 
  if  age < 21 :
    return "Go home, " + (name)+"!"
  elif age > 21 :
    return "Nice to meet You, " +(name)+ "!"

홀수 짝수
def is_even(num):
if num % 2 == 0 :
return True
elif num % 2 == 1 :
return False

!=  "Not Equal to" , == operator와 반대

Function

일정한 작업을 수행하는 코드블럭
반복되어 계속 사용되는 코드들을 함수로 정의하여 효적으로 사용하기 위해,
함수로 정리를 해서 코드의 가독성을 높이기 위해 사용

Input > 함수 > Output
파이썬에서는 Input은 parameter, output은 return 값이라 함.

def 함수명(parameter):
    문장1
    문장2
    ...
    문장N
    return 리턴값

list

리스트를 통해 여러개의 데이터를 한 곳에 저장가능.
list는 []로 감싸여져 있으며, 데이터와 요소는 쉼표로 구분합니다.

또, [[1,2,3],[4.5.6] ]로 하여 다차원리스트도 사용가능합니다.

any_list = [
  [1,2,3],
  [4,5,6],
  [7,8,9],
  [[10,11,12], 13, 14]
];
any_list[3]; # equals [[10,11,12], 13, 14]
any_list[3][0]; # equals [10,11,12]
any_list[3][0][1]; # equals 11

index 번호가 자동으로 설정되며 , 0부터 시작합니다.

  • list 수정
 * 첫번째 값 수정
our_list = [50,40,30];
our_list[0] = 15; # equals [15,40,30]
 * 가장 끝 자리에 값추가
arr = [1,2,3];
arr.append(4); # arr is now [1,2,3,4]
 * 가장 끝에 값 삭제
three = [1, 4, 6];
remove_one = three.pop();
print(remove_one); # Returns 6
print(three); # Returns [1, 4]
 * 리스트 더하기
list1 = list1 + list2
 * 원하는 위치에 삽입 (insert) 인덱스 번호 사용
 cities = [
    "서울특별시",
    "부산광역시",
    "인천광역시",
    "대구광역시",
    "대전광역시",
]
cities.insert(1, "제주특별자치도 제주시")
  • Empty List 비어있는 리스트
    my_list = [ ]
    my_list.append(1)
    my_list = my_list + [2, 3]
  • Slicing 리스트의 일부분 copy
    list_name[start : stop : step] 인덱스 번호 삽입
    삽입할 첫번째 자리 : 마지막자리 : 건너뛰는 갯수

    ex) list_name[:4] 일 경우, 첫 요소부터 4번째 전까지
    list_name[:4] 의 경우 , 2번째 요소 부터 마지막까지
    **** 주의점 slicing은 list를 수정하는게 아니라 새로운 list를 만들어내는 것입니다!!

  • Deleting 삭제 키워드(del)
    del 변수[3] # 변수 안에 4번째 변수 삭제 , lndex번호는 다시 정렬됨.
    remove 는 변수값을 삭제할 때 사용
    변수명.remove("삭제할 변수")

*tuple

list는 삭제 가능하지만, tuple은 한번 선언되면 수정이 불가능
my_tuple = (1, 2, 3)

Tuple의 요소들을 읽어들이는 방법, slicing은 모두 list와 동일합니다.

my_tuple[0]
my_tuple[1:2]

coords = [ (4,4),  (5,2),  (-2, 2),  (-3, -4) ]

이렇게 tuple은 주로 list와 같이 쓰입니다. List의 요소들로 tuple을 사용하는 것이죠.
  • set
    list는 요소들이 순서대로 저장되어 있지만 set 은 순서대로 저장되어 있지 않습니다. 그래서 for문에서 읽을 때 무작위 순서대로 나옵니다.
    순서가 없어 index도 없고, 동일한 값을 가지고 있는 요소가 1개이상 존재 할 수 없습니다. 만일 새로 저장하려고 하는 요소와 동일한 값의 요소가 존재한다면 새로운 요소가 이 전 요소를 치환(replace) 합니다.

  • Set 생성하는 법

    set을 생성하는 법은 일반적으로 2가지가 있습니다. 중괄호 ({ }) 를 사용하는 방법과 set() 함수를 사용하는 방법 입니다.

set1 = {1, 2, 3}
set2 = set([1, 2, 3])
보시다시피 set() 함수를 사용해서 set를 만들기 위해서는 list를 parameter로 전달해야 합니다.
그러므로 일반적으로 set() 함수를 사용해서 set를 만드는 경우는 list를 set로 변환하고 싶을 때 사용합니다.

set에서는 add 라는 함수를 사용해서 새로운 요소를 추가합니다.
my_set = {1, 2, 3}
my_set.add(4)
print(my_set)
==> {1, 2, 3, 4}

Set에서 요소를 삭제할때는 remove 함수를 사용
my_set = {1, 2, 3}
my_set.remove(3)
print(my_set)
==> {1, 2}

  • Look Up

Set에 어떠한 값이 이미 포함되어 있는지를 알아보는 것을 look up 이라고 합니다.
Set에서 look up을 하기 위해서는 in 키워드를 사용해야 합니다.

my_set = {1, 2, 3}

if 1 in my_set:
print("1 is in the set")
=> 1 is in the set

if 4 not in my_set:
print("4 is not in the set")
=> 4 is not in the set

  • Intersection (교집합) & Union (합집합)

Set는 교집합과 합집합을 구할때 도 사용될 수 있습니다.
교집합은 & 키워드 혹은 intersection 함수를 사용하면 됩니다.

set1 = {1, 2, 3, 4, 5, 6}
set2 = {4, 5, 6, 7, 8, 9}

print(set1 & set2)

{4, 5, 6}

print(set1.intersection(set2))

{4, 5, 6}

합집합은 | 키워드 혹은 union 함수를 사용하면 됩니다.

print(set1 | set2)

{1, 2, 3, 4, 5, 6, 7, 8, 9}
print(set1.union(set2))
{1, 2, 3, 4, 5, 6, 7, 8, 9}

  • Dictionary

    Dictionary의 기본적인 문법은 다음과 같습니다.
    my_dic = { "key1" : "value1", "key2" : "value2"}
    Key 값은 중복될 수 없습니다.
    변수명["실명"] # element 호출

  • key 값 치환하기
    dict1 = { 1 : "one", 1 : "two" }
    print(dict1)
    => { 1: "two" }

  • Dictionary에서 새로운 요소(element) 추가하기

    dictionary_name[new_key] = new_value

  • Dictionary 에서 요소 수정 하기

    Dictionary 에서 요소를 수정하는 방법도 list와 유사합니다. 차이점은 index가 아니라 key 값을 사용한다는 점입니다.

    my_dict = { "one": 1, 2: "two", 3 : "three" }
    my_dict["four"] = 4
    print(my_dict)
    {'one': 1, 2: 'two', 3: 'three', 'four': 4}

처음부터 비어있는 dictionary를 만든 다음에 하나 하나씩 추가해 나가는 것도 가능합니다.
비어있는 dictionary를 선언하기 위해서는 요소가 없는 중괄호를 사용하면 됩니다.

my_dict = { }
my_dict[1] = "one"
my_dict[2] = "two"
{1: 'one', 2: 'two'}

  • Dictionary 에서 요소 삭제 하기

    역시나 Dictionary 에서 요소를 삭제하는 방법도 list와 유사합니다. 차이점은 index가 아니라 key 값을 사용한다는 점입니다.

    my_dict = { "one": 1, 2: "two", 3 : "three" }
    del my_dict["one"]
    print(my_dict)
    {2: 'two', 3: 'three'}

  • For 구현방법

    for element in list:
    do_something_with_element

For 구문을 사용하면 과제를 다음과 같이 구현할 수 있습니다.

my_list = [int(s) for s in input().split()]
odd_numbers = [ ]

  • 먼저 홀수값들을 골라내서 리스트를 만들고
    for element in my_list:
    if (element % 2) == 1:
    odd_numbers.append(element)
  • 홀수값들을 하나 하나 기존 리스트에서 지워준다
    for odd_number in odd_numbers:
    my_list.remove(odd_number)
    print(my_list)
  • Break 끝까지 실행하지 않아도 될 때 break를 사용하여 멈춤
  • Continue 다음 요소, 다음interation으로 넘어가고 싶을 때 사용

range

for in range(start_value, end_value, step)

range의 경우 시작조건, 종료조건, 스텝(생략 가능)을 쓸 수 있습니다.
레인지를 이용해서 0부터 4까지 리스트에 숫자를 집어넣는 코드는 다음과 같습니다.

our_list = [];
for i in range(0, 5):
our_list.append(i):

  • 거꾸로 홀수 출력

    for i in range(10, 0, -1):
    if i % 2 == 1 :

  • While Loops

    while 구문은 특정 조건문이 True 일동안 코드블록을 반복 실행 합니다.

    while <조건문>:
    <수행할 문장1>
    <수행할 문장2>
    <수행할 문장3>
    ...
    <수행할 문장N>

예를 들어, 어떠한 특정 변수의 값의 초기 값이 0인데, 1씩 증가하여 10이 되기전까지 값의 변화를 출력하는 코드는 다음처럼 구현할 수 있습니다.

number = 0
while number <= 10:
print(number)
number += 1

0
1
2
3
4
5
6
7
8
9
10

  • While Else
    파이썬의 while문은 else 문이 추가 될 수 있습니다.
    if 문의 else 문과 유사합니다. If 문의 else 문은 if 문의 조건문이 False이면 실행됩니다.
    While문의 else 문도 while의 조건문이 False 이면 실행됩니다.
    즉 while문이 종료되면 else 문이 실행된다는 뜻입니다.

while <조건문>:
<수행할 문장1>
<수행할 문장2>
<수행할 문장3>
...
<수행할 문장N>
else:
<while문이 종료된 후 수행할 문장1>
<while문이 종료된 후 수행할 문장2>
<while문이 종료된 후 수행할 문장3>
...
<while문이 종료된 후 수행할 문장N>

예를 들어, 앞서 본 while 문에 else 문을 추가하여 while 문이 종료되고 난 후의 number 변수의 값을 출력할 수 있습니다.

number = 0
while number <= 10:
print(number)
number += 1
else:
print(f"while 문이 끝나고 난 후 의 number : {number}")

0
1
2
3
4
5
6
7
8
9
10
while 문이 끝나고 난 후 의 number : 11

class

Class 를 직접 구현해 보겠습니다.
Database 라는 이름의 class를 구현해 주세요.
Database 클래스 내부에 다음의 속성(attribute)들을 선언해주세요.

name : database의 이름
size : 저장할 수 있는 데이터의 max 사이즈. Size를 넘어서는 데이터를 저장할 수 없다.

Database 클래스 내부에 다음의 메소드들을 구현해주세요.

insert
select
update
delete

각 메소드들에 대한 설명은 아래와 같습니다.

Insert
insert 메소드는 self 외에 2개의 parameter를 받습니다.
field와 value 입니다.
Field 는 저장하고자 하는 데이터의 필드명 이고 value는 값입니다.
Field 와 value는 내부적으로 dictionary에 저장되어야 합니다.
insert 메소드는 다음 처럼 호출 할 수 있습니다.

  • 객체 이름이 db 라는 가정하에
    db.insert("name", "정우성")

insert 메소드는 특별한 리턴값은 없습니다.
만일 내부 dictionary의 총 사이즈가 database 클래스의 size 속성보다 크면 더이상 새로운 값들을 저장하지 말아야 합니다.

Select
select 메소드는 self 외에 1개의 parameter를 받습니다.
field 입니다.
Field 는 읽고자 하는 데이터의 필드명 입니다.
내부적으로 데이터를 저장하고 있는 dictionary에서 해당 field에 해당하는 키와 연결되어 있는 값을 리턴해주어야 합니다.

예를 들어, 이미 name이라는 필드명으로 "정우성" 이라는 값을 저장했다고 한다면:

  • 객체 이름이 db 라는 가정하에
    db.select("name")
    => "정우성"

이 되어야 합니다.
만일 해당 필드값으로 저정되어 있는 값이 없다면 None 을 리턴해주세요.

Update
Self 외에 2개의 parameter를 받습니다.
field와 value 입니다.
이름 그대로 이미 저장되어 있는 값을 수정하는 메소드 입니다.

  • 객체 이름이 db 라는 가정하에
    db.update("name", "아이유")

만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.
그리고 특별한 리턴 값은 없습니다.

Delete
delete 메소드는 self 외에 1개의 parameter를 받습니다.
field 입니다.
Field 는 지우고자 하는 데이터의 필드명 입니다.

  • 객체 이름이 db 라는 가정하에
    db.delete("name")

만일 field값에 해당하는 데이터가 저장되어 있지 않으면 아무것도 하지 않습니다.
그리고 특별한 리턴 값은 없습니다.

class Database :
  
  def __init__(self, name , size):
    self.name = name
    self.size = size
    self.data = {}
    
  def insert(self, field, value) :
    if self.size > len(self.data):
      self.data[field] = value
    else :
      return 
    
  def select(self, field) :
    if field in self.data :
      return self.data[field]
    else :
      return None
      
  def update(self, field, value):
    if field in self.data :
      self.data[field] = value
    
  def delete(self, field):
    if field in self.data :
      self.data.pop(field)

      


  

profile
기록하는 벨로그

0개의 댓글