728x90

f-string 이모저모

 

f-string 실험

  • 같은 칸 안에 출력이 한칸에 하나만 가능. 마지막꺼만 출력됨
  • 변수명을 다르게 설정해도 마지막꺼만 출력됨
  • 3자리마다 출력코드 : ex) f'{dis:,}'

 

728x90
반응형
728x90

<문제>

 

<풀이과정>

 

<답안 및 응용>

 

<기억할 것>

map() 함수 사용 : map(적용할 함수, 적용받을 값)

파이썬에서 가로값 출력

input().split() 조합

 

<응용>

출력방법을 f-string 써보기

답에서 int출력을 원하므로, f-string은 str 출력이라 print()을 써야함. f-string적용불가

 

728x90
반응형
728x90

020. 매개변수(parameter) 종류와 순서 

 

 

예를 보자

def personal_info(**kwargs):  # info 뒤 ( ) 안이 매개변수
    for key, value in kwargs.items():
        print(key, ': ', value, sep = '')

y = {'name': '홍길동', 'age': 30, 'address': '서울시 용산구 이촌동'}
personal_info(**y)

결과값
name: 홍길동
age: 30
address: 서울시 용산구 이촌동

*설명

맨 아랫줄 인수 personal_info(**y)에 바로 윗줄 y변수의 정보가 들어가고 **이게 붙어서

키워드 매개변수로써 첫째줄의 def의 매개변수 자리에 들어가서 함수 def personal_info가 작동한다

 

  • def : 함수를 만들 때 사용하는 예약어
  • 매개변수(parameter) : 함수에 입력으로 전달된 값을 받는 변수
                  함수 이름 뒤 괄호 안의 것
  • 인수(arguements) : 함수를 호출할 때 전달하는 입력값

 

 

사용법

함수를 정의하고 거기에 함수 밖에서 보내올 데이터(변수)를 받을 매개변수 타입을 지정하고, 작성한 함수에 밖에서 변수(인수)를 지정하면 작동된다.

 

종류

세가지는 혼용가능

  1. 고정 매개변수(parameter) : args = 1 or True
  2. 가변 매개변수(parameter) : *args
  3. 키워드 매개변수(parameter) : **kwargs

 

 

1)고정 매개변수(parameter)

매개변수 값을 지정하여 변동이 없게하는 매개변수

여러개 써도 순서는 상관x

ex) a=1, man=True

 

아래에서 a=3,b=7이 매개변수를 지정한 것으로 고정매개변수

def add(a, b):
    return a+b

result = add(a=3, b=7)  # a에 3, b에 7을 전달
print(result)

결과값
10

숫자 뿐 아니라, True나 False도 미리 지정해두고 사용가능

man = True

def say_myself(name, old, man=True): 
    print("나의 이름은 %s 입니다." % name) 
    print("나이는 %d살입니다." % old) 
    if man: 
        print("남자입니다.")
    else: 
        print("여자입니다.")
        
say_myself("박응용", 27)
say_myself("박응용", 27, True)

결과값
나의 이름은 박응용입니다.
나이는 27살입니다.
남자입니다.

 

 

2)가변 매개변수(parameter)

매개변수 앞에 *을 하나 붙인 것이며, 여러 개의 입력값을 입력가능. 튜플로 출력됨.

값이 몇 개가 될지 모를 때 사용하며, 입력값을 전부 모아서 Tuple로 만듬

def add_many(*args): 
    result = 0 
    for i in args: 
        result = result + i 
    return result
    
result = add_many(1,2,3)
print(result)
결과값 : 6

result = add_many(1,2,3,4,5,6,7,8,9,10)
print(result)
결과값 : 55

 

3)키워드 매개변수(parameter)

매개변수 앞에 **을  붙인 것이며, 딕셔너리로 출력됨

def print_kwargs(**kwargs):
    print(kwargs)
    
print_kwargs(a=1)

결과값 : {'a': 1}

print_kwargs(name='foo', age=3)
결과값 : {'age': 3, 'name': 'foo'}

 

※  args는 매개변수(arguments)의 약자로, 관례적으로 자주 사용

※ kwargs는 keyword arguments의 약자이며, args와 마찬가지로 관례적으로 사용한다.

 

사용순서

함수에서 매개변수를 종류별로 사용할 때, 순서를 지키지않으면 에러가 발생한다

고정 매개변수 - 가변 매개변수 - 키워드 매개변수

def parameter(args=1, *args, **kwargs)

 

 

728x90
반응형
728x90

019. if __name__ == __main__ 이해

 

출처 : 철린님 블로그

 

점프투 파이썬만으로는 잘 이해가 안되서 자료를 뒤져보다가 이분 글이 가장 이해가 잘되어 가져왔다.

 

if __name__ == __main__ 의미 :

인터프리터에서 직접 실행한 경우에만 if문을 실행시키라는 뜻

import된 경우는 x

모듈을 실행하는 방법은 두가지인데, 인터프리터에서 직접 실행하거나 다른 모듈에 임포트해서 실행하던가이다.

즉, 이 둘중에 후자에서만 발동하도록 지정해주는 것이다

 

if __name__ == __main__ 이 필요한 이유 :

 어떤 py파일의 함수만 쓸려할 때 겹쳐서 다른걸 가져오지 않도록 방지할 수 있다. 

mod1.py 파일의 add와 sub 함수를 사용하기 위해 mod1 모듈을 import할 때, 엉뚱하게도 import mod1을 수행하는 순간 mod1.py가 실행이 되어 결괏값을 출력한다. 우리는 단지 mod1.py 파일의 add와 sub 함수만 사용하려고 했는데 말이다

by 점프투파이썬의 설명

 

__name__이란?

 인터프리터가 실행전에 만들어 둔 글로벌(전역) 변수

728x90
반응형
728x90

.replce() 함수로 여러가지로 해봤다

하면서 떠오르는 퀘스천 마크들을 하나씩 해보고 결과를 적어본다

 

여러줄 replce()를 쓴다면?

적용되는건 마지막 한줄!

 

문자열 한줄  중 일부를 리플레이스 하는 것과
단어 단어 여러개를 대체하는것 어떻게 달라질까?

전자는 기본폼이라 당연히 가능했고,

후자는 tuple로 인식해서 수정불가라는 튜플 특성 때문에 실행자체가 안됬다

 

 

그렇다면 숫자는 어떻게 인식할까?

리플레이스에 오는 인자는 문자열이여야만 하고 인수는 안된다고 한다.

역시 문자열 함수라는건가?

튜플이 안되서 리스트로 묶어서 해봤으나 리스트가 리플레이스를 지원하지 않는다고 한다

 

 

딕셔너리는 키값과 밸류값을 나눠서 적용시킬 수 없어서 시작부터가 불가능

 

 

set도 list처럼 no attribute

set 적용시도

 

<결론>
# str  원래 문자열 함수라 사용가능
# int 문자열함수라 사용불가
# tuple () 수정불가 특성상 사용불가
# list [] 지원안해서 사용불가
# dict {} 키,밸류값이 없어 적용불가
# set {} 지원안해서 사용불가

 

 

 

728x90
반응형
728x90

018. 출력 : 파일 쓰기 - 하나씩 실험해본 것

 

 

파일 쓰기할 때 사용하는 open() 함수

파일 안에 내용 쓸 때 쓰는 .write() 함수

파일 안에 줄바꿈(enter 키 기능) 하고 싶다면 \n으로 줄바꿈

 

open(파일경로,파일명, 모드,(인코딩종류))에서 'w'나 'a' 같은 모드지정에서 추가모드('a') 사용시에,

불이 안들어오면 경로나 파일명이 잘못 된 것!

 

print()함수를 사용해서도 파일 안에 쓰기가 가능한데, 

print( 입력할 내용 , file = open()가 있는 변수명)하면 된다. 즉, file = 변수명을 지정해주면 그 안에 출력하도록 한다

f = open('새파일.txt','a',encoding='utf-8')
print('출력', file = f)
f.close()

 

 

728x90
반응형
728x90

017. 객체지향 언어란 - 특징 -

 

 

출처 : 위키백과

 

기본 구성요소에 대해 알아봤다면, 각각의 특징에 대해서 알아보자

 

1.자료의 추상화


불필요한 정보는 숨기고 중요한 정보만 표현하여 프로그램을 간결화 하는 것

 

 - 자료 추상화를 통해 정의된 자료형을 추상 자료형이라 함

 - 객체지향 프로그래밍(OOP)에서 일반적으로,

     추상 자료형을 클래스

     추상 자료형의 인스턴스를 객체

     추상 자료형에서 정의된 연산을 메소드

             라고한다. 

 

2.상속

새로운 클래스가 기존 클래스의 데이터와 연산을 이어 받아 사용할 수 있게 하는 기능

상속받는 새 클래스를 부클래스, 파생 클래스, 하위클래스, 자식 클래스 등으로 부르며, 기존 클래스를 기반클래스, 상위 클래스, 부모 클래스 등으로 부른다. 

상속개념을 통해 상위 클래스에서 이어받은 하위 클래스를 이용해 필요에 따라 클래스 수정이나 클래스 간 종속 관계를 형성해 객체를 조직화 할 수 있다

 

 

3.다중 상속

클래스가 2개 이상의 클래스로부터 상속 받을 수 있는 기능

 클래스들의 기능이 동시에 필요할 때 사용하나 상속관계에 혼란을 줄 수 있으니 주의가 필요하고 언어마다 가능유무가 다르니 확인이 필요하다

 

4.다형성 개념

어떤 한 요소에 여러 개념을 넣어 놓는 것

 보통 오버라이딩이나 오버로딩을 의미한다

 - 오버라이딩 : 같은 이름의 메소드가 여러 클래스에서 다른 기능을 하는 것

 - 오버로딩 : 같은 이름의 메소드가 인자의 개수나 자료형에 따라서 다른 기능을 하는 것

 

5.동적 바인딩

실행 시간 중에 일어나거나 실행과정에서 변경될 수 있는 바인딩

바인딩 : 프로그램의 기본 단위에 해당 기본 단위가 가질 수 있는 속성 중에서 일부 필요한 속성만을 선택하여 연결해 주는 것

 ex) 변수를 구성하는 식별자(이름), 자료형 속성, 하나 이상의 주소(참조), 자료값에 구체적인 값을 확정하는 것

 

컴파일 시간에 완료되어 변하지 않는 정적 바인딩과는 반대 개념이다

 

 

728x90
반응형
728x90

017. 객체지향 언어(OOP, Object-Oriented Programming)란?  - 기본 구성 요소 -

 

 

출처 : 위키백과

 

 

일단 구성요소에 대해 알아보기 전에 객체지향(Object-Oriented)에 대해 한번 알아보자.

 

객체지향이라는 개념이 나타나기 이전의 프로그래밍 방법에서는 사람이 컴퓨터에게 프로그램이 뭘하고 그 다음에 뭘하고 명령을 주는 식으로 컴퓨터가 하는 일을 하나씩 알려주기 바빴다고 한다. 그러나 객체지향 프로그래밍(OOP)이 등장하고부터 프로그램을 작성할 대상이 되는 실제 세계의 사물(객체)을 그대로 표현하고, 그것들이 어떻게 움직이는지 정해주고 나서 그 객체들에게 일을 시킨다고 한다.

 객체지향 프로그래밍을 잘 사용하면 보다 좋은 프로그램을 빨리 만들 수 있고, 나중에 수정하기도 편해진다고 하며, 프로그래밍 언어들이 모두 객체지향적인 것은 아니지만 요즘에 주로 사용되는 것들은 객체지향을 제공하는 것이 많다고 합니다. 객체지향을 개념을 몰라도 간단한 프로그램을 짤 수 있지만, 윈도우나 복잡한 프로그램을 짤 때는 큰 도움이 된다고 한다.
(출처:https://wikidocs.net/84)

 

파이썬은 객체지향적 언어라고 한다. 다만 데이터분석이나 통계 쪽으로 많이 활용되고 있어

객체 간의 작용하는 프로그래밍보다는 사용자정의 함수들을 많이쓰므로 그리 느껴지지 않을 수 있다고한다.

 


 

이제 '객체지향(Object-Oriented)  언어'가 무엇인지 이해하기 위해서는 먼저 기본 구성요소를 알아보자

 

객체지향 언어의 3가지 기본 구성요소는 

클래스(class), 객체(object), 메소드(method)이다

 

1.클래스(class)

같은 타입의 그룹에 속하는 속성(attribute)과 동작(behavior)을 정의한 것

 

2.객체(object)

클래스의 인스턴스가 실제로 메모리에 할당된 것
 - 클래스에서 정의된 내용을 실행하며 객체 자체의 속성을 가지고 있다

 

3.메소드(method)

클래스로부터 생성된 객체를 사용하는 방법

 - 객체의 속성을 조작하는데 사용되며, 객체간의 통신은 메세지를 통해 이루어진다.

 

 

*개념 자체들이 한마디로 정의되기 어렵고, 내용이 복잡하고 방대하여 일단 간단하게 다루고

추후에 차차 계속 다뤄보기로 하자. 기초튼튼하게!!

728x90
반응형
728x90

스터디 한번 만들어보자 문제

사람 이름을 입력값으로 받아서 사람 이름으로 된 파일 명의 text 파일을 만들고
안에는 성별을 저장

 

 

 

# 일단 생각나는데로 브레인 스토밍 해봄
name = input()
sex = input()
if sex == 'M' or 'man' or '남자':
        print('남자')
elif sex == 'W' or 'woman' or '여자':
        print('여자')
else :
        print('남자 또는 여자로 적어야합니다')

rachel = open("rachel.txt",'w',encoding = "uft-8")

joe.close()
sex = input()
if sex == 'M' or 'man' or '남자':   # 왜 or가 들어가니까 elif가 작동안할까?
        print('남자')                # 일단 or쓰지말고 list써서 in함수쓰고 해보자
elif sex == 'W' or 'woman' or '여자':
        print('여자')
else :
        print('남자 또는 여자로 적어야합니다')

 

# 일단 or쓰지말고 list써서 in함수쓰고 해보자
# 성공

sex_M_word = ['m','man','male','남','남자']
sex_W_word = ['w','woman','female','f','여','여자']
sex = input('성별을 기입해주세요')

if sex in sex_M_word:
        print('남자')
elif sex in sex_W_word:
        print('여자')
else :
        print('남자 또는 여자로 적어야합니다')

 

sex_M_word = ['m','man','male','남','남자']
sex_W_word = ['w','woman','female','f','여','여자']
sex = input('성별을 기입해주세요')

if sex in sex_M_word:
        print('남자')
elif sex in sex_W_word:
        print('여자')
else :
        print('남자 또는 여자로 적어야합니다')
        
        
rachel = open("rachel.txt",'w',encoding = "uft-8")

rachel.close()
728x90
반응형
728x90

016. 객체란?

 

출처 : 위키백과

 

처음 기초 교재나 수업을 들어보면 객체라는 말을 안들어 볼 수가 없을 수가 없을정도 여러번 나오는 단어인데 정작 이 의미를 정확히 몰라서 해당 내용이 이해가 안되는 경우가 종종 있었다. 구글링해보면 객체에 대해서 여러 글들이 존재했지만 그나마 가장 이해가 됬던게 위키여서 자료로 남겨두었다.

 

객체란 아주 심플하게 한마디로 정리하면,

프로그램에서 사용되는 '데이터' 또는 식별자에 의해 참조되는 '공간(주소)'이다.

구체적으로 객체는 변수, 자료구조, 함수 또는 메소드가 될 수 있다.

 

객체란?

1)프로그램에서 사용되는 '데이터'이며, 프로그램을 구성하는 단위 중 하나

2)식별자(identifier)에 의해 참조되는 '공간' or '주소'

 

위의 설명을 파이썬에서 예를들면, 

a = 1

변수 a를 설정하면 이 a의 값이 직접적으로 메모리 저장되는 것이라 이 a가 있는 주소를 메모리에 저장한다고 한다. 이게 식별자(identifier)에 의해 참조되는 공간이다.

이는 객체지향 프로그램(OOP)과 연관이 있다고 하는데 더가면 너무 복잡하므로 일단 여기까지만 알도록 하자.

 

728x90
반응형

+ Recent posts