ETC/python

python 기본

wooyeon06 2024. 8. 26. 15:28

 

https://www.python.org/downloads/

 

Download Python

The official home of the Python Programming Language

www.python.org

 

 

 

환경변수

 

 

VSCODE > code실행

 


변수

파이썬에서 변수의 범위(scope)는 변수가 어디에서 접근 가능하고 어디에서 접근 불가능한지를 결정하는 규칙을 의미합니다. 파이썬에서는 변수의 범위가 LEGB 규칙에 따라 결정됩니다. LEGB는 다음 네 가지 범위를 나타냅니다 

  1. 지역 범위 (Local Scope):
    • inner_function 내부에서 x는 'local'로 설정됩니다. 이 x는 inner_function 내부에서만 접근 가능합니다.
    • inner_function이 끝나면, 이 x는 더 이상 사용되지 않습니다.
  2. 내포된 범위 (Enclosing Scope):
    • outer_function 내부에서 x는 'enclosing'으로 설정됩니다.
    • inner_function 내부에서 지역 변수를 찾지 못하면, 내포된 범위의 변수를 참조할 수 있습니다.
  3. 전역 범위 (Global Scope):
    • 함수 외부에서 정의된 x는 'global'입니다.
    • 모든 함수와 코드 블록에서 이 변수에 접근할 수 있습니다.
  4. 내장 범위 (Built-in Scope):
    • 파이썬 내장 함수들이 이 범위에 포함됩니다. 예를 들어, len()이나 range()와 같은 함수는 내장 범위에 있습니다.

변수의 범위

x = 'global'  # 전역 변수

def outer_function():
    x = 'enclosing'  # 외부 함수(내포된 범위)

    def inner_function():
        x = 'local'  # 내부 함수(지역 변수)
        print("Inner:", x)  # 지역 변수를 참조

    inner_function()
    print("Outer:", x)  # 외부 함수의 변수를 참조

outer_function()
print("Global:", x)  # 전역 변수를 참조
출력 결과:
Inner: local
Outer: enclosing
Global: global
 

예제 

플로이드마샬

import sys
sys.stdin = open("input.txt", 'r')    
if __name__=="__main__":
    n, m=map(int, input().split())
    dis=[[5000]*(n+1) for _ in range(n+1)]
    for i in range(1, n+1):
        dis[i][i]=0
    for i in range(m):
        a, b, c=map(int, input().split())
        dis[a][b]=c
    for k in range(1, n+1):
        for i in range(1, n+1):
            for j in range(1, n+1):
                dis[i][j]=min(dis[i][j], dis[i][k]+dis[k][j])
    for i in range(1, n+1):
        for j in range(1, n+1):
            if dis[i][j]==5000:
                print("M", end=' ')
            else:
                print(dis[i][j], end=' ')
        print()

 

위상정렬(deque)

import sys
from collections import deque
sys.stdin=open("input.txt", "r")
n, m=map(int, input().split())
graph=[[0]*(n+1) for _ in range(n+1)]
degree=[0]*(n+1)
dQ=deque()
for i in range(m):
    a, b=map(int, input().split())
    graph[a][b]=1
    degree[b]+=1
for i in range(1, n+1):
    if degree[i]==0:
        dQ.append(i)
while dQ:
    x=dQ.popleft()
    print(x, end=' ')
    for i in range(1, n+1):
        if graph[x][i]==1:
            degree[i]-=1
            if degree[i]==0:
                dQ.append(i)