1. 가상환경 설정 

- VScode 터미널에서 가상환경 설정 

※ 직접 설치하고 하니에러가 나서 제거 후 가상환경 구성 

# 가상 환경 생성
# venv 폴더가 생성 된다.
python -m venv venv

# 가상환경 활성화
.\venv\Scripts\activate


2. install 

pip install beautifulsoup4
pip install flask

 

3. path 설정

-  윈도우 패스 설정 

 

4. 코드 작성 

from flask import Flask
from urllib import request
from bs4 import BeautifulSoup

app = Flask(__name__)

@app.route("/")

def hello():
    target = request.urlopen("http://www.kma.go.kr/weather/forecast/mid-term-rss3.jsp?stnId=108")

    soup = BeautifulSoup(target, "html.parser")

    output = ""

    for location in soup.select("location"):
        output += "<h3>{}</h3>".format(location.select_one("city").string)
        output += "날씨{}</br>".format(location.select_one("wf").string)
        output += "최저/최고 기온{}/{}</h3>".format(location.select_one("tmn").string, location.select_one("tmx").string)
        output += "</hr>"
    return output

 

5. 실행 

 

$env:FLASK_APP="beautiful_flask.py"
flask run

 

6. 확인 

-   크롬에서 확인

http://127.0.0.1:5000

 

 

파이썬에서 구문 오류(Syntax Error)와 예외(Exception)는 프로그램에서 발생하는 다른 종류의 에러입니다. 

1. 구문 오류(Syntax Error):

  • 구문 오류는 코드를 파싱할 때 문법적인 오류가 발생했을 때 나타납니다.
  • 이는 프로그램의 문법이 잘못되었거나 파이썬 인터프리터가 코드를 이해하지 못할 때 발생합니다.
  • 주로 오타, 괄호의 불일치, 들여쓰기 오류 등과 관련이 있습니다.
  • 프로그램이 실행되기 전에 발생하며, 프로그램 실행이 시작되기 전에 이를 수정해야 합니다.

예제:

if x > 0
   print("Positive number")

이 코드에서는 콜론(:)이 빠져있어서 구문 오류가 발생합니다.

 

2.예외(Exception):

  • 예외는 프로그램이 실행 중에 발생하는 오류를 나타냅니다.
  • 구문적으로는 올바른 코드이지만, 실행 도중에 예상치 못한 문제로 인해 발생하는 오류입니다.
  • 예외는 일반적으로 try, except 블록을 사용하여 처리될 수 있습니다.
  • 프로그램이 실행 중에 발생하며, 실행 중에 예외를 처리하지 않으면 프로그램이 중단됩니다.

예제:

x = 0
result = 10 / x

 

이 코드에서는 0으로 나누는 경우에 ZeroDivisionError가 발생합니다. 이 예외를 처리하지 않으면 프로그램이 중단됩니다.

구문 오류는 코드의 문법적 오류로 인해 발생하며 프로그램이 실행되기 전에 확인되고,
예외는 실행 중에 발생하는 런타임 오류로서 프로그램이 실행 중단될 수 있습니다.

 

 

 

 

'python' 카테고리의 다른 글

혼공파-6주차:BeautifulSoup  (1) 2024.02.05
혼공파-4주차:함수만들기  (1) 2024.01.23
혼공파-3주차:리스트와 반복문  (0) 2024.01.16
혼공파-2주차: if-elif 구문  (0) 2024.01.10
혼공파-1주차 : 자료형과 문자열  (0) 2024.01.03

범위내부의 정수를 모두 더하는 함수 

def sum_all(start, end ):
    """
    이 함수는 주어진 범위 내의 모든 정수를 더합니다.

    매개변수:
    start (int): 더하기를 시작할 첫 번째 정수
    end (int): 더하기를 마칠 마지막 정수

    반환값:
    int: start부터 end까지의 모든 정수의 합
    """
    output = 0 
    for i in range( start, end +1 ):
        output = output + i

    return output

print("0 to 100", sum_all(0,100))
print("0 to 1000", sum_all(0,1000))
print("50 to 100", sum_all(50,100))
print("500 to 1000", sum_all(500,1000))

 

range(start, stop)  사용, start stop   퀀 생성합니다.

start , stop  습니다. 위에서는 마지막 수까지 더하기 위해 end+1 까지로 표현 함. 

 

 

 

파이썬에서 함수를 정의할 때 사용하는 매개변수에는 세 가지 주요 종류가 있습니다: 일반 매개변수, 기본 매개변수, 그리고 가변 매개변수입니다.

1. 일반 매개변수:

  • 설명: 함수를 정의할 때 정확한 개수의 매개변수를 받아야 할 때 사용합니다. 호출할 때 반드시 값을 전달해야 합니다.
  • 예시:
def add(x, y):
    return x + y

result = add(3, 5)
print(result)  # 출력: 8

 

 

2. 기본 매개변수 (Default Parameters):

  • 설명: 함수를 호출할 때 매개변수에 값을 전달하지 않을 경우, 기본값을 사용하는 매개변수입니다. 기본값을 가지는 매개변수는 호출 시에 생략 가능합니다.
  • 예시:
def greet(name, greeting="Hello"):
    print(f"{greeting}, {name}!")

greet("Alice")  # 기본값 사용: "Hello, Alice!"
greet("Bob", "Good morning")  # 사용자 정의 값 사용: "Good morning, Bob!"

 

3. 가변 매개변수 (Variadic Parameters):

  • 설명: 함수를 정의할 때 매개변수의 개수가 가변적일 때 사용되며, *args를 통해 표현합니다. 함수 내에서 튜플로 매개변수를 받습니다.
  • 예시:
def sum_numbers(*args):
    total = 0
    for num in args:
        total += num
    return total

result = sum_numbers(1, 2, 3, 4, 5)  # 가변 매개변수 사용
print(result)  # 출력: 15

 

 

4. 일반 가변 기본 매개변수 사용하기 

def example_function(name, *languages, level="Beginner", city="Unknown"):
    """
    Display information about a person's name, programming languages, proficiency level, and city.
    
    Parameters:
    - name: str, the person's name
    - *languages: tuple, variable number of programming languages
    - level: str, proficiency level (default is "Beginner")
    - city: str, city where the person is located (default is "Unknown")
    """
    print(f"Name: {name}")
    
    if languages:
        print("Programming Languages:")
        for lang in languages:
            print(f"- {lang}")
    else:
        print("No programming languages specified.")
    
    print(f"Proficiency level: {level}")
    print(f"City: {city}")

# Example calls to the function using keyword arguments:
example_function(name="Alice", level="Intermediate", city="New York")
example_function("Bob", "C++", "Java", "Python", city="San Francisco")
example_function("Charlie", level="Advanced")

 

  • name: 일반 매개변수로서, 반드시 값을 전달해야 하는 인자입니다.
  • *languages: 가변 매개변수로서, 전달된 모든 프로그래밍 언어를 튜플로 받습니다.
  • level: 키워드 매개변수로서, level이 전달되지 않으면 기본값인 "Beginner"가 사용됩니다.
  • city :  키워드 매개변수로서, city 값이 이 전달되지 않으면 기본값인 "Unknown"가 사용됩니다.

 

 

'python' 카테고리의 다른 글

혼공파-6주차:BeautifulSoup  (1) 2024.02.05
혼공파-5주차:구문오류와 예  (1) 2024.01.29
혼공파-3주차:리스트와 반복문  (0) 2024.01.16
혼공파-2주차: if-elif 구문  (0) 2024.01.10
혼공파-1주차 : 자료형과 문자열  (0) 2024.01.03

1. 리스트(List):

  • 설명: 리스트는 순서가 있는, 변경 가능한 자료형입니다. 여러 값을 담을 수 있고, 각 값은 인덱스를 통해 접근할 수 있습니다.
  • 선언: 대괄호 [] 안에 값을 나열하여 선언합니다.
my_list = [1, 2, 3, 'apple', 'banana']

 

특징:

  • 요소의 추가, 삭제, 수정이 가능합니다.
  • 인덱스는 0부터 시작합니다.
  • 리스트 내에 다양한 자료형의 요소를 포함할 수 있습니다.

 

2. 딕셔너리(Dictionary):

  • 설명: 딕셔너리는 키(key)와 값(value)의 쌍으로 이루어진 자료형으로, 키를 통해 값을 검색할 수 있습니다.
  • 선언: 중괄호 {} 안에 키: 값 형태로 선언합니다.
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}

 

특징:

  • 키는 중복되지 않으며 유일해야 합니다.
  • 값에는 어떠한 자료형도 포함할 수 있습니다.
  • 변경 가능한 자료형이므로 값을 추가, 삭제, 수정할 수 있습니다.

3. 범위자료형(Range):

  • 설명: 범위는 연속된 숫자들의 시퀀스를 나타내는 불변한(변경 불가능한) 자료형입니다.
  • 선언: range(start, stop, step) 함수를 통해 생성합니다. (start부터 stop까지, step 간격으로 숫자를 생성합니다.)
my_range = range(1, 10, 2)

 

특징:

  • 범위 객체는 메모리를 효율적으로 사용하며, 큰 범위도 표현할 수 있습니다.
  • 인덱싱이나 슬라이싱을 통해 값을 조회할 수 있습니다.
  • 리스트와 달리 변경이 불가능하므로 요소를 직접 수정할 수는 없습니다.





4. 확인 문제

list_a = [0,1,2,3,4,5,6,7]

 

1. 리스트 확장 (extend):
리스트 list_a를 자기 자신과 확장하여 기존의 요소들을 복사합니다.

list_a.extend(list_a)
print(list_a)

 

2. 요소 추가 (append):
리스트의 끝에 숫자 10을 추가합니다.

list_a.append(10)
print(list_a)

 

3. 특정 위치에 요소 추가 (insert):
리스트의 세 번째 위치 (인덱스 3)에 숫자 0을 삽입합니다.

list_a.insert(3, 0)
print(list_a)

 

4. 특정 요소 제거 (remove):

리스트에서 값이 3인 첫 번째 요소를 제거합니다.

list_a.remove(3)
print(list_a)



5. 특정 위치의 요소 제거 (pop):

리스트에서 세 번째 위치 (인덱스 3)의 요소를 제거합니다.

list_a.pop(3)
print(list_a)



6. 리스트 비우기 (clear):
리스트의 모든 요소를 제거하여 비웁니다.

list_a.clear()
print(list_a)

 

 

 

 

'python' 카테고리의 다른 글

혼공파-6주차:BeautifulSoup  (1) 2024.02.05
혼공파-5주차:구문오류와 예  (1) 2024.01.29
혼공파-4주차:함수만들기  (1) 2024.01.23
혼공파-2주차: if-elif 구문  (0) 2024.01.10
혼공파-1주차 : 자료형과 문자열  (0) 2024.01.03

1. 사용자에게 태어난 연도를 입력받아 띠를 출력하는 프로그램 작성 

 

- 책 중심 코딩 

# 사용자로부터 태어난 연도를 입력 받기
str_input = int(input("태어난 연도를 입력하세요: "))

# 띠 계산하기
birth_year = str_input % 12  # 정수 나눗셈을 사용하여 몫을 계산합니다.

# 띠 출력하기
if birth_year == 0:
    print("원숭이띠")
elif birth_year == 1:
    print("닭띠")
elif birth_year == 2:
    print("개띠")
elif birth_year == 3:
    print("돼지띠")
elif birth_year == 4:
    print("쥐띠")
elif birth_year == 5:
    print("소띠")
elif birth_year == 6:
    print("호랑이띠")
elif birth_year == 7:
    print("토끼띠")
elif birth_year == 8:
    print("용띠")
elif birth_year == 9:
    print("뱀띠")
elif birth_year == 10:
    print("말띠")
elif birth_year == 11:
    print("양띠")
else:
    print("잘못된 입력입니다.")

 

- Cursor 에디터에서 만들어준 코드 중 수정 

def calculate_zodiac(year):
    zodiacs = ['원숭이','닭', '개', '돼지','쥐', '소', '호랑이', '토끼', '용', '뱀', '말', '양']
    return zodiacs[year % 12]

year = int(input("태어난 연도를 입력하세요: "))
print("당신의 띠는", calculate_zodiac(year), "입니다.")

 

 

 

2. else 구문과 elif 구문정리 

 

else 구문:

  • else는 이전의 if나 elif의 조건이 거짓인 경우에 실행되는 코드 블록을 정의합니다.
  • if나 elif 중 어떠한 조건도 참이 아닌 경우에 실행됩니다.
  • 예제:

 

x = 10
if x > 0:
    print("x는 양수입니다.")
else:
    print("x는 양수가 아닙니다.")

 

elif 구문:

  • elif는 "else if"의 축약어로, 이전의 if나 elif의 조건이 거짓인 경우 다음 조건을 검사하고, 해당 조건이 참이면 실행되는 코드 블록을 정의합니다.
  • 여러 개의 elif 구문을 사용하여 다양한 조건을 검사할 수 있습니다.
  • 예제:
x = 0
if x > 0:
    print("x는 양수입니다.")
elif x == 0:
    print("x는 0입니다.")
else:
    print("x는 음수입니다.")

 

위의 코드에서는 x의 값에 따라 다른 메시지가 출력됩니다. 먼저 참인 조건을 만나면 해당하는 코드 블록이 실행되며, 나머지 elifelse는 실행되지 않습니다.

 

 

 

'python' 카테고리의 다른 글

혼공파-6주차:BeautifulSoup  (1) 2024.02.05
혼공파-5주차:구문오류와 예  (1) 2024.01.29
혼공파-4주차:함수만들기  (1) 2024.01.23
혼공파-3주차:리스트와 반복문  (0) 2024.01.16
혼공파-1주차 : 자료형과 문자열  (0) 2024.01.03

 

 

 

스네이크 케이스(Snake Case)와 캐멀 케이스(Camel Case)는 변수, 함수, 혹은 식별자를 명명하는 데 사용되는 두 가지 표기법입니다.

  1. 스네이크 케이스 (Snake Case):
    • 모든 단어는 소문자로 작성되며, 각 단어는 밑줄로 구분됩니다.
    • 예: my_variable_name, calculate_total_amount
  2. 캐멀 케이스 (Camel Case):
    • 첫 단어를 제외한 각 단어의 첫 글자는 대문자로 작성되며, 단어 사이에는 공백이나 특수 문자 대신 대문자가 사용됩니다.
    • 예: myVariableName, calculateTotalAmount

이러한 표기법은 주로 프로그래밍 언어에서 변수나 함수 등을 정의할 때 사용됩니다.

어떤 표기법을 선택할지는 주로 언어나 프로젝트의 코딩 스타일 가이드에 따라 결정됩니다.

 

예를 들어, 파이썬에서는 스네이크 케이스가 일반적으로 권장되며, 자바스크립트에서는 캐멀 케이스가 일반적으로 사용됩니다.

 

 

예외도 있지만 대체적으로 이렇게 구분하자. 

캐멀케이스 - 첫자 대문자  >>>  클래스 

 

 

스네이크케이스 - 첫자 소문자   - 뒤에 괄호 : 함수 

                                                   - 뒤에 괄호 없다.  : 변수 

 

 

'python' 카테고리의 다른 글

혼공파-6주차:BeautifulSoup  (1) 2024.02.05
혼공파-5주차:구문오류와 예  (1) 2024.01.29
혼공파-4주차:함수만들기  (1) 2024.01.23
혼공파-3주차:리스트와 반복문  (0) 2024.01.16
혼공파-2주차: if-elif 구문  (0) 2024.01.10
6주차
(8/15 ~ 8/21)
Chapter 07 Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기 Ch.07(07-2) 확인 문제 풀고, 풀이 과정 정리하기

 

Ch.07(07-1) 확인 문제 풀고, 풀이 과정 정리하기

 

1. 어떤 인공 신경망의 입력 특성이 100개이고 밀집층에 있는 뉴런 개수가 10개일 때 필요한 모델 파라미터의 개수는 몇 개인가요?   (100 *10) +  (10*1 ) = 1,010개

 

 

2. 케라스의 Dense 클래스를 사용해 신경망의 출력층을 만들려고 합니다. 이 신경망이 이진분류 모델이라면 activation 매개변수에 어떤 활성화 함수를 지정해야 하나요?   'sigmoid'

 

<참고>

이진분류 : 'sigmoid'

다중분류:  'softmax'

 


3. 케라스 모델에서 손실 함수와 측정 지표 등을 지정하는 메서드는 무엇인가요?  compile()


4. 정수 레이블을 타깃으로 가지는 다중 분류 문제일 때 케라스 모델의 compile() 메서드에 지정할 손실 함수로 적절한 것은 무엇인가요?   'categorical_crossentropy'

 

<참고>

이진분류 : 'binary_crossentropy'

다중분류:   'categorical_crossentropy'

 

 

Ch.07(07-2) 확인 문제 풀고, 풀이 과정 정리하기

 

 

1. 다음 중 모델의 add() 메서드 사용법이 올바른 것은 어떤 것인가요?

② model.add(keras.layers.Dense(10, activation='relu'))

 

<방법 3가지 중 선택해서 사용> 




2. 크기가 300 X 300인 입력을 케라스 층으로 펼치려고 합니다. 다음 중 어떤 층을 사용해야 하나요?
② Flatten   --> 입력차원을 모두 일렬로 펼치는 역할수행 입력층 바로 앞에 추가 



3. 다음 중에서 이미지 분류를 위한 심층 신경망에 널리 사용되는 케라스의 활성화 함수는 무엇인가요?

③ relu


4. 다음 중 적응적 학습률을 사용하지 않는 옵티마이저는 무엇인가요?

① SGD

 

기본경사하강법 옵티마이저 : SGD  :  모멘텀 네스테[로프 모멘텀 

 

적응적 학습률 옵티마이저  : RMSprop adagrad Adam

Chapter 06 k-평균 알고리즘 작동 방식 설명하기

 

K-means 알고리즘이란?

 

 K-means 알고리즘은 비지도학습으로 데이터를 K개의 군집(Cluster)으로 묶는 알고리즘

 

K-means 알고리즘의 K는 군집(클러스터)의 개수,  means는 평균 의미

 

군집 갯수 찾는 방법 

 

 

※ 분류(Classification) vs 군집화(Clustering)

- 분류
지도학습으로 레이블(정답)이 주어졌을 때 레이블을 기반으로 데이터를 나누는 방법

- 군집화
비지도학습으로 레이블(정답)이 주어지지 않았을 때 주어진 데이터를 묶는 방법

'혼공머신' 카테고리의 다른 글

혼공머신-4주차  (0) 2022.07.25
혼공머신-3주차  (0) 2022.07.25
혼공머신-2주차  (0) 2022.07.17
혼공머신-1주차  (0) 2022.07.06
Chapter 05 교차 검증을 그림으로 설명하기

 

교차검증 :  과적합을 피하면서 파라미터를 튜닝하고 일반적인 모델을 만들고 더 신뢰성 있는 모델 평가를 진행하기 위해서

훈련 세트를 여러 폴드로 나눈 다음 한 폴드가 검증 셋트의 역할을 하고 나머지 폴드에서 모델 훈련 

교차검증은 모든 폴드에 대해서 검증 점수를 얻어 평균하는 방법

 

훈련세트 훈련세트 검증세트
훈련세트 검증세트 훈련세트
검증세 훈련세트 훈련세트

 

'혼공머신' 카테고리의 다른 글

혼공머신-5주차  (0) 2022.07.25
혼공머신-3주차  (0) 2022.07.25
혼공머신-2주차  (0) 2022.07.17
혼공머신-1주차  (0) 2022.07.06

1. 로지스틱 회귀 : 이름은 회귀지만 분류 모델 로 선형 회귀와 동일하게 선형 방정식 학습

 

2. 확률이 되려면 0~1 사이의 값이 되야 함. 

> z 의 값이 아주 큰 음수일때 0 이 되고 z 가 아주 큰 양수일때 1이 되게 바꾸는 방법  >> 시그모이드 함수를 이용하면 됨

 

로지스틱 회귀가 이진 분류에서 확률을 출력하기 위해 사용하는 함수는 무엇인가요?
① 시그모이드 함수  >> 답   --->> 이진 분류에서 
② 소프트맥스 함수
③ 로그 함수
④ 지수 함수

 

 

소프트맥스 함수 여러개의 선형 방정식의 출력값을 0~1 사이로 압출하고 전체 합이 1이 되도록 한다. 

'혼공머신' 카테고리의 다른 글

혼공머신-5주차  (0) 2022.07.25
혼공머신-4주차  (0) 2022.07.25
혼공머신-2주차  (0) 2022.07.17
혼공머신-1주차  (0) 2022.07.06

+ Recent posts