Python/basic

[Learning Python] Hello world

Tree_Park 2020. 11. 19. 17:07
728x90

Hello Python


kaggle에서 게시한 듀토리얼을 그대로 따라가고, 공부하는 python 학습 일기장이 될 것이다.

 

www.kaggle.com/colinmorris/hello-python

 

Hello, Python

Explore and run machine learning code with Kaggle Notebooks | Using data from no data sources

www.kaggle.com

www.kaggle.com/learn/python

 

Learn Python Tutorials

Learn the most important language for data science.

www.kaggle.com

 


 First Practice 


# hello python

# key python skills python for data science.

# Overview of python syntax

 

spam_amount = 2
print(spam_amount)

if spam_amount > 0:
    print("But I don't want to ANY spam!")
    
viking_song = "Spam " * spam_amount
print(viking_song)

본문 첫번째로 나온 python 예제이다.

그동안 Java, JavaScript 등을 주로 공부해오던 나로서는 '정말 신박한 코드가 아닌가'라고 생각하게 된다.

spam_amount = 0 # (0 || 1 || 2)

맨 첫줄에 나온 코드 spam_amount 변수에, 0, 1, 2를 집어놓고 결과를 비교해보면  정말 신박할 것이다.

Spam_amount 변화에 의한 마지막 줄의 변화를 유심히 살펴보아라

그렇다. '*' 이 operator 로 문자열에 관한 연산이 이루어진것이다.

 


 Variable Assginment 

 

변수 할당에 관한 이야기를 하자면, 기존 Java와는 다르게 변수를 선언할 때, type을 명시하지 않는 것을 볼 수 있다.

javaScript와 같은 interpreter형 언어의 특징으로, compile 기반의 언어인 c와는 다르게 python과 같은 경우 코드 한 줄 한 줄을 실행시에 코드에 대한 변환이 일어나기에, 변수 타입에 대한 판단을 '=' 뒤에 오는 리터럴의 타입을 통해 판단하기에  변수 선언시 변수 타입에 대한 지정을 하지 않을 수 있다.

 

spam_amount = 0 # (0 || 1 || 2)

 Function Call

 

print는 python의 함수인데, 간단히 설명하자면 괄호 안의 문자열 혹은 할당된 변수를 screen에 보여주는 역할을 한다.

print(spam_amount)
print("But I don't want to ANY spam!")

 Comments

 

'#' 기호는 코드의 주석을 쓰기 위해 선행적으로 써주는 것으로, 아래와 같이 코드의 이해를 돕기 위한 주석을 쓰는 용도로 사용한다. * 이 때 '프로그램'은 주석에 해당하는 내용을 실행하지 않는다.

# Ordering Spam, egg, Spam, Spam, bacon and Spam (4 more servings of Spam)
spam_amount = spam_amount + 4

 Conditionals 

늘상 써왔던 조건부식이다. 아래에서는 앞에서 선언하고 초기화한 spam_amount의 값이 0보다 클 때, "But I don't want ANY spam!"의 문자열을 출력할 것이다.특이점은 흔히 자바나, 자바스크립트에서는 " if(조건문) {조건이 true 경우의 실행 코드} else {조건이 true가 아닐 경우의 실행 코드 } "의 형식으로 조건을 지정하였지만, 파이썬에서는 if spam_amount > 0 : 이후, 다음 줄의 들여쓰기한 코드가  조건이 true일 경우의 실행 코드가 된다.

if spam_amount > 0:
    print("But I don't want ANY spam!")

viking_song = "Spam Spam Spam"
print(viking_song)

Operators

앞에서 언급했다싶이, " * " 연산자는 "Spam " 문자열을 'spam_amount'의 수만큼 곱하여 viking_song 변수에 초기화하였다. 하지만 보통의 " * " 연산자의 역할은 두 수를 곱하는 수행하는 것인데 어떻게 "문자열"을 곱하는 것이 가능한 것일까? 튜토리얼의 본문에서 설명하는 내용을 설명하자면  파이썬은 "*", "+"와 같은  연산자들이 적용받는 피연산자에 영항받아 다른 결과를 내도록하는 시간절약을 위한 약간의 트릭을 제공한다고 한다.

자바에서의 overloading과 비슷한 개념이다. operator overloading

 

viking_song = "Spam " * spam_amount
print(viking_song)

 

OperatorNameDescription

a + b Addition Sum of a and b
a - b Subtraction Difference of a and b
a * b Multiplication Product of a and b
a / b True division Quotient of a and b
a // b Floor division Quotient of a and b, removing fractional parts
a % b Modulus Integer remainder after division of a by b
a ** b Exponentiation a raised to the power of b
-a Negation The negative of a

 Numbers and arithmetic  in Python 

spam_amount = 0

위와 같은 코드에서, spam_amount가 담고 있는 '0'이라는 값은 어떤 타입일까? 기본적으로 이러한 타입들은 "Number"라고 지칭하지만 좀 더 기술적으로, 원래 자바나, C, C++과 같은 타입에서의 수를 접근해보자면 여러 타입이 존재한다.

spam_amount = 0
type(spam_amount) #result is int

 

int는 알다시피 정수의 줄임말이고,  여타 다른 언어처럼 수를 나타내는 여러 타입이 파이썬에는 존재한다.

 

spam_amount = 19.95
type(spam_amount) #result is float

 

tpye은 print()와 같은 파이썬의 내장 함수로, 객체의 타입이 어떤 타입인지를 리턴하는 유용한 함수다.

division을 수행할 시에 흥미로운 건, '/', '//'의 동작방식이 다르다는 점이다. '/'연산자가 float 타입그대로 2.3, 2.5를 리턴하는 반면, '//' 연산자는 뒤에 소수를 빼고 정수만을 리턴한다.


Numbers and arithmetic  in Python

min 과 max는 말 그대로 전달받은 인수의 minimum(최소), maximum(최대)를 리턴한다.

print(min(1, 2, 3)) # return is 1
print(max(1, 2, 3)) # return is 3

 

abs는 전달받은 인자의 absolute(절대값)을 리턴한다.

print(abs(32)) # return is 32
print(abs(-32)) # return is 32

 

 

대표적인 Number형 데이터 타입인 float과 int로 String to Int parsing 및 cast가 가능하다.

print(float(10)) # return is 10.0
print(int(3.33)) # return is 3

# They can even be called on strings! print(int('807') + 1)

 

'Python > basic' 카테고리의 다른 글

[Learning Python] Functions and Getting Help  (0) 2020.11.21