Python


Python: Operators


  • Arithmetic operators
  • Assignment operators
  • Comparison operators
  • Logical operators

Arithmetic Operator

+ Addition x + y
- Subtraction x - y
* Multiplication x * y
/ Division x / y
% Modulus x % y
** Exponentiation x ** y
// Floor division x // y

Assignment Operators

= x = 5 x = 5
+= x += 3 x = x + 3
-= x -= 3 x = x - 3
*= x *= 3 x = x * 3
/= x /= 3 x = x / 3
%= x %= 3 x = x % 3
//= x //= 3 x = x // 3
**= x **= 3 x = x ** 3
&= x &= 3 x = x & 3
= x
^= x ^= 3 x = x ^ 3
»= x »= 3 x = x » 3
«= x «= 3 x = x « 3

Comparison Operators

== Equal x == y
!= Not equal x != y
> Greater than x > y
< Less than x < y
>= Greater than or equal to x >= y
<= Less than or equal to x <= y

Python Logical Operators

and Returns True if both statements are true x < 5 and x < 10
or Returns True if one of the statements is true x < 5 or x < 4
not Reverse the result, returns False if the result is true not(x < 5 and x < 10)
  • exmple
Print(1+1) 더하기
2
Print(1-1) 빼기
0
Print(1*1) 곱하기
1
Print(3**3) 제곱
18
Print(8/2) 나누기
4
Print(3/2*4) 순서대로 곱하기 나누기 우선 그다음에 빼기 더하기
6.0
Print(7//3) 몫구하기 (3이 몇번들어갈수 있는지)
2
Print(3%2) 나머지값구하기(나머지가 1 남는다)
1


# 연산자 우선 순위
# **
# *,/,//,%
# +, -

# 문자열 연산
# + : 문자열 끼리 붙여주는 역할 "Hi" + "Hello" => "HiHello"
# * : "Hi"*3 => “HiHiHi"

# 문자열을 표현하는 방법, 만드는 방법
"She said \"Hi\"" # 'She said "Hi"'
'I\'m Jake' # 특수문자나 특별한 알파벳 앞에 \(슬래시)를 붙여서 특수 기능을
# 수행하는 것을 이스케이핑 문자 혹은 이스케이핑 처리


Python: Variables


  • Description

ariables are containers for storing data values. Unlike other programming languages, Python has no command for declaring a variable. A variable is created the moment you first assign a value to it.

  • Example 1

x = 5
y = "John"
print(x)
print(y)

>>5
>>John
  • Example 2

x = 4 # x is of type int
x = "Sally" # x is now of type str
print(x)

>>Sally
  • Example
x = "awesome"
print("Python is " + x)

>>Python is awesome
  • Note

  • Variable Names

A variable can have a short name (like x and y) or a more descriptive name (age, carname, total_volume). Rules for Python variables: A variable name must start with a letter or the underscore character A variable name cannot start with a number A variable name can only contain alpha-numeric characters and underscores (A-z, 0-9, and _ ) Variable names are case-sensitive (age, Age and AGE are three different variables)

# 변수 이름?
# 대소문자 구분
# 알파벳, 숫자, 한글 : 숫자는 맨앞에는 사용 금지
# 특수문자 : _
# 명사나 동사형

# 표기법
# sayHi : 두번째 단어부터 단어의 첫글자는 대문자
# SayHi : 모든 단어의 첫글자는 대문자
# say_hi : 모두 소문자, 단어사이에 _
# strSayHi : 변수명 앞에 변수의 타입을 기록

Python: int float str


1.int: 정수

x = input("숫자를 입력해주세요.:")
Y = input("숫자를 입력해주세요.:”)

x = 20
y = 30

Print(x+y)
>>>2030



x = `int`(input("숫자를 입력해주세요.:"))
Y = `int`(input("숫자를 입력해주세요.:"))

x = 20
y = 30

Print(x+y)
>>>50

2. float :실수 () 소수점 나타내주는것

x = `float`(input(“숫자를 입력해주세요.:”)) >>20
Y = `float`(input(“숫자를 입력해주세요.:”)) >>30

Print(x+y)
50.0

3. Str :문자 이것을 사용하면 숫자를 문자로 변환시킬수 있다.

x = int(input("숫자를 입력하세요.:")
Y = int(input("숫자를 입력하세요.:")

sum = x + y

print("두 수의 합은, sum, "입니다.")
>>>두 수의 합은 50 입니다.


50  과 입니다 <<<를 붙이고싶다 또는 
문자를 숫자로 바꾸기 위해서 str 필요하다.

print("두 수의 합은"",`str`(sum),"입니다.")

>>>>두 수의 합은 50입니다.



Print(1,2,3,4,end=","). <<< 콤마로 띄어쓴다.
print(1,2,3,4,sep=",")  <<<<  중간에 문자 집어넣기

Python:Format_string

format 명령

[데이터타입] : s(문자열), c(한글자), d(정수), f(실수)

  • example exercise 1-1
foramt_string = "섭씨 35도는 화씨 99도 입니다."

foramt_string = "섭씨 %f도는 화씨 %f도 입니다."


msg = foramt_string % (35.7, 99.23)
print(msg)

f 는 소수점 처리를 할수 있다.


foramt_string = "섭씨 '%0.2f'도는 화씨 '%-.4f'도 입니다."
msg = foramt_string % (35.7, 99.23)
print(msg)

Python: Variables


ariables are containers for storing data values.

  • Example
x = 5
y = "John"
print(x)
print(y)

Python: conditional



if (a > b):
    [처리문 실행문]
elif [조건문 조건식]:
    [실행문 처리문]
else:
    [실행문]
"""
# 조건식 : 명제 -> 참과 거짓으로 판별할 수 있는 구문
# 참과 거짓 : True False
# a > b, a < b, a >= b, a <= b, a == b, a != b
# and, or
# not
# 0, "", False, []
# 상태 : empty


if not empty:
    청소를 한다.

a = 7
b = 8
c = 9
a > b and a > c
a > b or a > c
not (a > c)

a < b
a >= b
a <= b
a == b
a != b    
    
  • Example
a = int(input("당신의 출생연도를 입력해주세요.:"))


age = 2019 - a + 1


if age >= 20:
print("당신은 성인입니다.”)

  • Example
a = int(input("당신의 출생연도를 입력해주세요.:"))

age = 2019 - a + 1

if age >= 20:
print("당신은 성인입니다.")

else:
print("당신은 성인이 아닙니다.")
  • Example exercise 1-1
# 사용자의 키와 체중을 입력받아서
# bmi 계산하여 출력하세요
# bmi = 체중(kg) / (키(m)의 제곱)


height = input("키를 입력하세요 : ")
height = float(height)




weight = input("체중을 입력하세요 : ")
weight = float(weight)


bmi = weight / ((height/100)**2)




# 키와 체중을 입력받고
# bmi 계산하고
# 18.5 미만 = 저체중
# 18.5 이상 23 미만 = 정상체중
# 23 이상 = 과체중


bmi_level = ""
if bmi < 18.5:
    bmi_level = "저체중"
elif 18.5 <= bmi < 23:
    bmi_level = "정상체중"
else:
    bmi_level =  "과체중"
print(bmi,bmi_level)

  • Example exercise 1-2

# 섭씨 -> 화씨로 바꾸는 프로그램
# 화시 -> 섭씨로 바꾸는 기능
# 메뉴 입력 시작
print("-----MENU-----")
print("1. 섭씨 -> 화씨 변환")
print("2. 화씨 -> 섭씨 변환")
print("3. 프로그램 종료")
menu = input("메뉴를 선택하세요 : ")
# 메뉴 입력 끝


# 온도 계산 시작
if menu == "1":
    C = input("섭씨 온도를 입력하세요 : ")
    C = float(C)
    F = C * 1.8 + 32
    msg = "섭씨 "+str(C)+"도는 화씨 "+str(F)+"도 입니다."
    print(msg)
elif menu == "2":
    F = input("화씨 온도를 입력하세요 : ")
    F = float(F)
    C = (F - 32) / 1.8
    msg = "화씨 "+str(F)+"도는 섭씨 "+str(C)+"도 입니다."
    print(msg)
elif menu == "3":
    print("프로그램을 종료합니다.")
else:
    print("잘못 선택하셨습니다.")

Python: try, except



try:
    #[오류가 날지도 모르는 코드]
    a = int("a")
    print("in")
except ValueError:
    #[발생한 오류에 대응할 코드]
    print("fired exception")
except ZeroDivisionError:
    #[발생한 오류에 대응할 코드]
    print("fired exception")
except:
    #[발생한 오류에 대응할 코드]
    print("fired exception")
else:
    #[오류가 없이 지나왔을 경우 코드]
    print("no error")
finally:
    #[어쨋든 실행될 코드]
    print("anyway")
  • exercise 1-1

number = input("정수를 입력하세요 : ")
try:
    number = int(number)
except ValueError:
    print("정수가 아닙니다. 다시 입력하세요.")
    number = input("정수를 입력하세요 : ")
    number = int(number)


result = number*number
print(result)


# 입력받은 정수의 제곱 값을 출력하는 프로그램
# 만약 숫자가 아니라면 다시 입력하라는 메시지를 출력한다.
# 다시 입력 하라는 메시지는 1회만

Python: While



while [조건식]:
    [실행문]
    [실행문]
    [실행문]
    [실행문]

"""
1 예) 이런식으로 많이 쓰인다.

While True:
    Try:
    Break
    except
2 예)


while True:
    # 정수를 입력받는다. 정수가 입력될 때까지
    number = input("정수를 입력하세요 : ")
    try:
        number = int(number)
        break
    except:
        print("정수가 아닙니다. 다시 입력하세요.")


print(number)
  • exercise

# 섭씨 -> 화씨로 바꾸는 프로그램
# 화시 -> 섭씨로 바꾸는 기능
# 메뉴 입력 시작
print("-----MENU-----")
print("1. 섭씨 -> 화씨 변환")
print("2. 화씨 -> 섭씨 변환")
print("3. 프로그램 종료")
menu = input("메뉴를 선택하세요 : ")
# 메뉴 입력 끝


# 온도 계산 시작
if menu == "1":
    while True:
        try:
            C = input("섭씨 온도를 입력하세요 : ")
            C = float(C)
            break
        except:
            print("다시 입력하세요.")


    F = C * 1.8 + 32
    msg = "섭씨 "+str(C)+"도는 화씨 "+str(F)+"도 입니다."
    print(msg)
elif menu == "2":
    while True:
        try:
            F = input("화씨 온도를 입력하세요 : ")
            F = float(F)
            break
        except:
            print("다시 입력하세요.")
    C = (F - 32) / 1.8
    msg = "화씨 "+str(F)+"도는 섭씨 "+str(C)+"도 입니다."
    print(msg)
elif menu == "3":
    print("프로그램을 종료합니다.")
else:
    print("잘못 선택하셨습니다.")


Python: for


  • Description
# for [name] in [bucket]:
#     [실행문]

for n in range(10):
    print(n)
    print(n*n)

for, range 활용해서 1~100까지의 홀수의 합을 구하는 프로그램

total = 0
for x in range(1,101,2):
    total += x
    total = total + x
print(total)

# "Range는 횟수 용으로 많이 쓰인다."
# range(Y) : 0 ~ Y-1까지
# range(X,Y) : X ~ Y-1까지
# range(X,Y,Z) : X ~ Y-1까지인데, Z씩 증감
for n in range(0,12.2):
    print(n)
2
4
6
8
10

Python: Module



import datetime
변수 = datetime.datetime.now()
Print(변수)
Print(변수.strftime(“%y-%m-%d"))
Print(변수.year)
Print(변수.hour)
Print(변수.corosecond)

윤년 프로그램

# 윤년 프로그램을 짜본다.
# 윤년 2월 29일까지 있는 해
# 연도가 400으로 나누어 떨어지면 윤년
# 연도가 100으로 나누어 떨어지면 윤년 x
# 연도가 4로 나누어 떨어지면 윤년
# 1. 올해의 윤년여부 출력
# 2. 사용자의 입력을 받아서 윤년 여부 출력
# 3. 프로그램 종료

import datetime
while True:
    print("----Menu----")
    print("1. 올해 윤년 여부")
    print("2. 입력 받은 연도 윤년 여부")
    print("3. 프로그램 종료")
    menu = input("메뉴를 선택하세요 : ")


    if menu == "1":
        current_time = datetime.datetime.now()
        year = current_time.year
        if (year % 4 == 0 and year % 100 !=0) or year % 400 == 0:
            print("윤년입니다.")
        else:
            print("윤년이 아닙니다.")
    elif menu == "2":
        while True:
            try:
                year = input("판별하고자 하는 연도를 입력하세요 : ")
                year = int(year)
                break
            except:
                print("다시 입력하세요.")
        if (year % 4 == 0 and year % 100 !=0) or year % 400 == 0:
            print("윤년입니다.")
        else:
            print("윤년이 아닙니다.")
    elif menu == "3":
        break
        # exit()
    else:
        print("없는 메뉴 입니다.")


Python: function


# def [함수이름]([매개변수,입력값]):
#     [실행구문]
#     [return (반환값, 출력값)]
  • example 1-1
A = 1
B = 2
x = 1+2
Print(x)

>>>3

함수 이용하기

def x (A,B) : 
    return A+B
print (x(1,2))

>>>3

  • example 1-2
def sayHi():
    print("Hello Python")


sayHi()

  • exercise 1-2

# 1~9까지의 각각의 제곱을 출력하는 함수를 만드세요.
def PrintSquare():
    for x in range(1,10):
        print(x*x)


PrintSquare()
PrintSquare()
PrintSquare()
PrintSquare()
PrintSquare()


def PrintSquare2(endNumber):
    for x in range(1,endNumber+1):
        print(x*x)


PrintSquare2(10)


  • exercise 1-3
# 두개의 숫자를 전달 받아서
# 그 두 숫자의 합을 출력하는 함수
def printSum(number1, number2):
    print(number1+number2)


printSum(10, 22)

  • exercise 1-4
# 별줄수 만들기

"""
사용자에게 줄 수를 입력받아서
해당 줄 수만큼 별을 출력하시오.
   *
  ***
 *****
"""


line_count = input("출력할 줄 수를 입력하세요 : ")
line_count = int(line_count)


max_width = line_count*2 - 1
format_string = "{:^"+str(max_width)+"s}"
for count in range(line_count):
    #blank_count = line_count-(count+1)
    #print(" " * blank_count, end="")
    start_count = 2 * count + 1




    msg = format_string.format("*"*start_count)
    print(msg)

   *
  ***
 *****


Python: Crawler


1. 변수만들어서 저장하기 data.text 모든 리소스 불러오기


url = "https://www.naver.com/"
requests.get(url)
data = requests.get(url)
print(data.text)

2. 제대로 돌아가고 있는지 확인

print (data.status_code)

“””
200
“””

200번대 - 정상
300번대 - redirect
400번대 - 리소스 오류
500번대 - 소스코드 오류

3. Test 해보기 만약 이게 맞다면 응답해라


if data.status_code == requests.codes.ok:
    print("work out”)


4. From bs4 import BeautifulSoup HTML를 해석해주는 역활


Parsing(파싱) text 파일을 우리가 원하는 것을 불러오기 위해서는       parsing 필요하다.이럴때 BeautifulSoup 이라는 order 필요.

    html = BeautifulSoup(data.text,"html.parser")
    links = html.select(".PM_CL_realtimeKeyword_list_base .ah_a”)



 나열방식이 틀림



    (1)     for index,keyword in enumerate ( links,start=1 ) :
            print(index,keyword)
        
1 <sdsdsdsd>
2 <sdsdsdsd>
3 <sdsdsdss>



    (2).   For keyword in links[:3]:
           For keyword in links[::3]:
           Print(keyword)



    (3)
    
    for link in links:
        rank = link.select_one(".ah_r").text
        keyword = link.select_one(".ah_k").text
        print(rank,keyword,link.attrs["href"])

    

1 왕종명 http://search.naver.com/search.naver?where=nexearch&query=%EC%99%95%EC%A2%85%EB%AA%85&sm=top_lve&ie=utf8
2 grn http://search.naver.com/search.naver?where=nexearch&query=grn&sm=top_lve&ie=utf8
3 백예린 http://search.naver.com/search.naver?where=nexearch&query=%EB%B0%B1%EC%98%88%EB%A6%B0&sm=top_lve&ie=utf8
4 붐붐파워 http://search.naver.com/search.naver?where=nexearch&query=%EB%B6%90%EB%B6%90%ED%8C%8C%EC%9B%8C&sm=top_lve&ie=utf8
5 2019 스타벅스 벚꽃 md http://search.naver.com/search.naver?where=nexearch&query=2019+%EC%8A%A4%ED%83%80%EB%B2%85%EC%8A%A4+%EB%B2%9A%EA%BD%83+md&sm=top_lve&ie=utf8
6 나르샤 http://search.naver.com/search.naver?where=nexearch&query=%EB%82%98%EB%A5%B4%EC%83%A4&sm=top_lve&ie=utf8
7 아소방 매트 http://search.naver.com/search.naver?where=nexearch&query=%EC%95%84%EC%86%8C%EB%B0%A9+%EB%A7%A4%ED%8A%B8&sm=top_lve&ie=utf8

"""