<jupyter_start><jupyter_text>Basic Python- Print- Variables and Types- Arithmetic Operations- List- Dictionary- Loop- Condition- Function- Class and Objects  1. Print출력함수<jupyter_code># print 함수에는 기본적으로 줄바꿈(new line)이 들어가 있습니다. 그렇기 때문에 여러개를 출력했을때 항상 다음 줄로 넘어가게 됩니다.
print("Hello World!") 

# 문자열을 출력하고 이어서 출력할 문자열을 명시적으로 지정하는 방법. 여기서는 줄바꿈으로 설정했습니다.
print("Hello World!",end="\n") 

# 문자열을 출력하고 이어서 출력할 문자열은 명시적으로 바꿀 수 있습니다. 여기서는 "end"라는 문자열입니다.
print("Hello World!",end="end")
# https://pyformat.info/

# format 이라는 함수를 이용해 문자열의 특정 위치에 변수를 출력할수도 있습니다.
string = "python"
print("I love {}".format(string))

# format 함수는 다양한 설정으로 사용할 수 있습니다. 아래의 예시는 전체 9칸에서 왼쪽 정렬, 오른쪽 정렬, 가운데 정렬 그리고 빈칸을 다른 값으로 채우는 방법입니다.
print("{:<9}".format(999))
print("{:>9}".format(999))
print("{:^9}".format(999))
print("{:*^9}".format(999))<jupyter_output>I love python
999      
      999
   999   
***999***<jupyter_text>2. Variables and Types변수와 변수의 타입에 관한 내용<jupyter_code># 파이썬은 c++ 같은 언어와 달리 타입을 지정해주지 않고 자동으로 타입을 지정해줍니다.

# 그냥 정수를 입력했을때는 타입이 정수(integer)임을 알 수 있습니다.
a = 2
print(a,type(a))

# 소숫점을 추가해서 입력해주면 기본적으로 부동소수점 수(floating point number)로 타입이 지정됩니다.
b = 2.0
print(b,type(b))

# 문자열을 정의하면 이는 문자열(string)으로 지정됩니다.
c = "Pytorch"
print(c,type(c))

# 만약 정수와 부동소수점 수를 더하면 부동소수점 수로 저장됩니다.
d = a+b
print(d,type(d))


# 문자열끼리는 더하기 연산으로 이어 붙이는 것이 가능합니다.
e = str(a)+" "+c
print(e,type(e))<jupyter_output>2 <class 'int'>
2.0 <class 'float'>
Pytorch <class 'str'>
4.0 <class 'float'>
2 Pytorch <class 'str'><jupyter_text>3. Arithmetic Operations사칙연산<jupyter_code># 파이썬에서는 다양한 사칙연산이 정의되어 있습니다.

a=1
b=2
c=5

print(a+b)  # add
print(a-b)  # subtract
print(b*c)  # multiply
print(b/c)  # divide
print(c//b) # quotient
print(c%b)  # remainder
print(b**c) # power<jupyter_output>3
-1
10
0.4
2
1
32<jupyter_text>4. List리스트<jupyter_code># 리스트의 생성
list_1 = [1,2,3]
print(list_1)

# 리스트에 요소 추가
list_1.append(4)
print(list_1)

# 정수로만 이루어진 리스트에 문자열 추가
list_1.append("abc")
print(list_1)

# 리스트의 인덱싱
print(list_1[2:-1])

# 리스트 요소 지우기(delete)
del list_1[-1]
print(list_1)

# 리스트 마지막 요소 꺼내기(pop)
list_1.pop()
print(list_1)<jupyter_output>[1, 2, 3]
[1, 2, 3, 4]
[1, 2, 3, 4, 'abc']
[3, 4]
[1, 2, 3, 4]
[1, 2, 3]<jupyter_text>5. Dictionary딕셔너리<jupyter_code># 딕셔너리의 생성
# "key" = value
dict_1 = {
    "python": 0,
    "java":1,
    "c++":2,
    "ruby":3,
    "html":4,
    "key":"value",
}

# 딕셔너리 전체를 출력하는 방법
print(dict_1)

# 키를 이용해 그 키에 해당하는 값을 불러오는 법 (call value by key)
print(dict_1["c++"])

# 키를 이용해 삭제하는 방법 (delete by key)
del dict_1["key"]
print(dict_1)

# 딕셔너리에 요소를 추가하는 방법 
dict_1["pytorch"]=6
print(dict_1)<jupyter_output>{'python': 0, 'java': 1, 'c++': 2, 'ruby': 3, 'html': 4, 'key': 'value'}
2
{'python': 0, 'java': 1, 'c++': 2, 'ruby': 3, 'html': 4}
{'python': 0, 'java': 1, 'c++': 2, 'ruby': 3, 'html': 4, 'pytorch': 6}<jupyter_text>6. Loop반복문<jupyter_code># range 함수를 이용한 기본적인 반복문
for i in range(5):
    print(i)
print("\n")
    
# range 함수는 시작점, 끝점, 한번에 이동하는 크기를 지정할 수 있습니다.
for i in range(0,-5,-1):
    print(i)
# 리스트의 요소들을 하나하나씩 출력하는 법
print(list_1)
for i in list_1:
    print(i)
print("\n")

# 딕셔너리의 key와 이에 해당하는 value를 출력하는 법
print(dict_1)
for key in dict_1:
    print(key,dict_1[key])
print("\n")

# enumerate 함수를 사용하면 현재 몇번째 출력인지 확인이 가능합니다.
for idx,i in enumerate(dict_1.keys()):
  print(idx,i)
# while 문을 이용하는 방법
a=0
while(a<10):
    print(a)
    a+=1<jupyter_output>0
1
2
3
4
5
6
7
8
9<jupyter_text>7. Condition조건문<jupyter_code># 일치 여부 출력
print(2==2)
print(2==3)

# 불일치 여부 출력
print(2!=2)
print(2!=3)
# 딕셔너리에서 ruby라는 키에 해당하는 value 뽑아내기

print(dict_1)

for key in dict_1:
    # key 값이 일치하면 해당 키에 대한 value를 프린트합니다.
    if key=="ruby":
        print(dict_1[key])
    # 일치하지 않는 경우는 딕셔너리의 다음 key로 넘어갑니다
    else:
        pass
# 위의 방식을 한줄로 표현 가능합니다. 이는 list comprehension의 한 예시입니다.
[dict_1[key] for key in dict_1 if key=="ruby"]<jupyter_output><empty_output><jupyter_text>8. Function함수를 정의하는 법<jupyter_code># 단순한 팩토리얼 함수를 정의하는 예시
def factorial(num):
    result = 1
    for i in range(1,num+1):
        result = result*i
    return result

print(factorial(5))<jupyter_output>120<jupyter_text>9. Class & Instance<jupyter_code># 클래스의 생성 및 인스턴스화 하는 방법
class Jedi(object):
    def __init__(self,name,droid):
        self.name = name
        self.droid = droid
        self.exp = 0
        
    def train(self):
        self.exp += 10

# instance 
anakin = Jedi("<NAME>","R2D2")
anakin.train()

print(anakin.name)
print(anakin.droid)
print(anakin.exp)<jupyter_output><NAME>
R2D2
10
{'fraction_non_alphanumeric': 0.1592442645074224, 'fraction_numerical': 0.04071075123706703, 'mean_word_length': 3.9192477876106193, 'pattern_counts': {'":': 7, '<': 38, '<?xml version=': 0, '>': 37, 'https://': 1, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '9', 'dir': 'jupyter-structured-clean-dedup', 'id': '629284', 'license': 'MIT', 'n_tokens_mistral': 2784, 'n_tokens_neox': 3151, 'n_words': 557, 'path': 'Pytorch Basic/Basic Python.ipynb', 'repo_name': 'TaehoLi/Pytorch-secondstep', 'size': '4466'}