코딩 공부/파이썬

[4일차] 파이썬 반복문, 연산자, 튜플, 시퀀스 자료형, 함수와 지역변수, 모듈, 클래스, 사전, 문자열 함수 (28~38강)

Dev_SeokHyeon 2019. 8. 13. 04:16

안녕하세요 오늘은 28강 부터 38강 까지 공부를 했습니다.

 

유튜버 동빈나 28강

https://youtu.be/kpqxtspvjOM

 

///////////////////////////////////////////////////////////// 입력

 

'''
29
반복문 : 조건에 부합하는 한 특정한 명령어를 반복
숫자 범위 표현 : range(시작, )
continue : continue를 만났을 때 더이상 명령어를 실행하지 않고
다음 반복을 진행합니다.
break: break를 만나면 번복문을 벗어납니다.

'''

sum=0
for i in range(1, 10): # 1~9
print(i)
sum +=i

print("합계 : ",sum)

count =0
for i in "Hello World":
if i == "o":
count +=1
print(i)
print("o의 갯수는",count,"개 입니다.")


sum =0
list = [1,2,3,4,5]
for i in list:
if i%2 == 1:
continue
sum+=i
print("합계:",sum) #짝수만 더해짐

 

///////////////////////////////////////////////////////////// 출력

 

1
2
3
4
5
6
7
8
9
합계 :  45
H
e
l
l
o
 
W
o
r
l
d
o의 갯수는 2 개 입니다.
합계: 6

 

///////////////////////////////////////////////////////////// 입력

'''
30
증감 연산자 : 기존에 사용하던 증가/감소 기능을 짧게 이용
c/c++ 증감 연산자: ++,-- 파이썬에선 사용 안함
관계 연산자 : 두 개의 값을 비교하여 관계
ex) A == B : A B가 같은지 판별
A != B : A B와 다른지 판별
A > B : A B보다 큰지 팥별 반대는 <
논리 연산자 : 여러 개의 수식을 논리적으로 연산
ex) A and B : A B가 모두 참인지 판별
A or B : A 혹은 B가 참인지 판별
not A: A가 거짓인지 판별
'''

a =0
a=a+10
print(a)
a=0
a+=10
print(a)

a=3
b=5
print(a==b)
print(a!=b)
print(a>b)

a="ABC"
b="BCD"

print(a==b)
print(a!=b)
print(a>b)

a=True
b=False
print(a and b)
print(a or b)
print(not a)

if 3 > 5 or 7<10 :
print("야호")

///////////////////////////////////////////////////////////// 출력

10
10
False
True
False
False
True
False
False
True
False
야호

///////////////////////////////////////////////////////////// 입력

'''
31

튜플(Tuple): 리스트(List)와 비슷한 자료형 (변경 불가)
인덱싱, 슬라이싱 등의 문법도 그대로 사용이 가능
'''

tuple =(1,2,3)
for i in tuple:
print(i)

list1 = [1,2,3]
list2 = [4,5,6]
tuple = (list1,list2)
print(tuple[0][1])
# tuple[0] =(2,3,4) #안됨

tuple[0][1]=7
print(tuple[0][1])

tuple=(1,2,3,4,5,6,7,8)
print(tuple[0:5]*3)

///////////////////////////////////////////////////////////// 출력

1
2
3
2
7
(1, 2, 3, 4, 5, 1, 2, 3, 4, 5, 1, 2, 3, 4, 5)

///////////////////////////////////////////////////////////// 입력

'''
32
시퀀스(sequence) : 문자열, 리스트, 튜플 등의 인덱스(index)를 가지는 자료형
'''

string = "Hello World"
list = ['H','e','l','l','o',' ','W','o','r','l','d']
tuple = ('H','e','l','l','o',' ','W','o','r','l','d')

print(string)
print(list)
print(tuple)

print(string[0])
print(list[0])
print(tuple[0])

for i in list:
print(i)

string1 = "Hello World"
string2 = ", Python"
print(string1+string2)
print(len(string1+string2))

list2 =[1,2,3,4,5]
print(2 in list2)
if 3 in list2:
print("3을 포함하고 있습니다.")

///////////////////////////////////////////////////////////// 출력

Hello World
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
('H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd')
H
H
H
H
e
l
l
o
 
W
o
r
l
d
Hello World, Python
19
True
3을 포함하고 있습니다.

///////////////////////////////////////////////////////////// 입력

'''
33

함수 : 특정한 입력을 받아서 처리를 한 이후에, 특정한 출력을 하는 모듈

함수를 이용하면 특정한 소스코드의 반복을 줄일 수 있다는 특징

가변 인자 : 함수의 매개변수가 가변적일 수 있을 때 사용
튜플 형태로 저장이 됨
전역 변수 : 소스코드 전체 어디에서든지 사용 가능한 변수
지역 변수 : 특정한 함수(블록) 안에서만 사용할 수 있는 변수

파이썬의 함수는 반환 값이 여러개일 수있음

'''


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


a = 10
b = 20
print(add(a, b))


def function(*data):
print(data)


function(1, 2, 3)


def variable(a):
a = a + 5


def variable2():
global a
a = a + 5


a = 2
variable(a)
print(a)
variable2()
print(a)


def function2():
a = 5
b = [1, 2, 3]
return a, b


a, b = function2()
print(a)
print(b)

///////////////////////////////////////////////////////////// 출력

30
(1, 2, 3)
2
7
5
[1, 2, 3]

///////////////////////////////////////////////////////////// lib.py 파일

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


def subtract(a, b):
return a - b

///////////////////////////////////////////////////////////// 입력

'''
34
묘듈(Module) : 미리 작성된 함수 코드를 모아 놓은 파이썬 파일
lib 파일을 임포트 하기!
'''
import math
#import lib
from lib import add
import lib as t

print(math.pow(2, 8))
print(math.sqrt(256))
print(math.gcd(5, 2))

#print(lib.add(3, 7))
print(add(3, 7))
print(t.add(3,7))

///////////////////////////////////////////////////////////// 출력

256.0
16.0
1
10
10

///////////////////////////////////////////////////////////// 입력

'''
35강 * __del__ 이 부분은 아직 잘 모르겠음*

클래스(Class) : 반복되는 불필요한 소스코드를 최소화 하면서
현실 세계의 사물을 컴퓨터 프로그래밍 상에서
쉽게 표현할 수 있도록 해주는 프로그래밍 기술

인스턴스 : 클래스로 정의된 객체를 프로그램 상에서 이용할 수 있게 만든 변수

클래스의 멤버 : 클래스 내부에 포한되는 변수
클래스의 함수 : 클래스 내부에 포합되는 함수. 메소드라고 부릅니다.
상속 : 다른 클래스의 멤버 변수와 메소드를 물려 받아 사용하는 기법
부모와 자식 관계가 존재합니다.
자식 클래스 : 부모 클래스를 상속 받은 클래스
'''


class Car:
# 클래스의 생성자
def __init__(self, name, color):
self.name = name # 클래스의 멤버
self.color = color # 클래스의 멤버

# 클래스 소멸자
def __del__(self):
print("인스턴스를 소멸시킨다.")

# 클래스의 메소드
def show_info(self):
print("이름:", self.name, "/ 색상:", self.color)

# Setter 메소드
def set_name(self, name):
self.name = name

car1 = Car("소나타", "빨간색")
car1.show_info()

car2 = Car("아반떼", "검은색")
car2.show_info()

print(car1.name, "() 구매했습니다!")


car1.set_name("아반떼")
car1.show_info()

del car1

class Unit:
def __init__(self,name,power):
self.name=name
self.power=power
def attack(self):
print(self.name,"() 공격을 수행합니다. [전투력: ",self.power,"]")

class Monster(Unit): #클래스이름 옆에 ()라고 안에 넣는건 상속의 의미
def __init__(self,name,power,type):
self.name=name
self.power=power
self.type=type
def show_info(self):
print("몬스터 이름", self.name,"/몬스터 종류",self.type)

unit = Unit("홍길동",375)
unit.attack()
monster = Monster("슬라임",10,"초급")
monster.attack()
monster.show_info()



///////////////////////////////////////////////////////////// 출력

이름: 소나타 / 색상: 빨간색
이름: 아반떼 / 색상: 검은색
소나타 을(를) 구매했습니다!
이름: 아반떼 / 색상: 빨간색
인스턴스를 소멸시킨다.
홍길동 이(가) 공격을 수행합니다. [전투력:  375 ]
슬라임 이(가) 공격을 수행합니다. [전투력:  10 ]
몬스터 이름 슬라임 /몬스터 종류 초급
인스턴스를 소멸시킨다.

///////////////////////////////////////////////////////////// 입력

'''
36

사전(Dictionary) : (Key)와 값(Value) 한 쌍을 원소로 가지는 자료형
'''

dict = {}
dict['안녕']='hello'
dict['기적']='miracle'
dict['노력']='effort'

if '노력' in dict:
print("[노력] 키가 존재 합니다.")
print("----------------------------------------")
print(dict)
print("----------------------------------------")
for i,k in enumerate(dict):
print("[인덱스:",i,"] 한글:",k,"/ 영어:",dict[k])

print("----------------------------------------")

keys=dict.keys()
key_list=list(keys)
print("키 리스트:",key_list)

values = dict.values()
value_list = list(values)
print("값 리스트",value_list)

dict['안녕']='hi'
del dict['기적']
print("----------------------------------------")
for i,k in enumerate(dict):
print("[인덱스:",i,"] 한글:",k,"/ 영어:",dict[k])

print("----------------------------------------")

dict.clear()
print("사전 자료형의 길이",len(dict))

scores ={}
scores['나동빈']=78
scores['이태일']=99
scores['박한울']=85
print(sorted(scores)) # 키로 정렬하기
print(sorted(scores, reverse=True)) # 키로 내림차순 정렬
print(sorted(scores.values())) # 값을 정렬

///////////////////////////////////////////////////////////// 출력

[노력] 키가 존재 합니다.
----------------------------------------
{'안녕': 'hello', '기적': 'miracle', '노력': 'effort'}
----------------------------------------
[인덱스: 0 ] 한글: 안녕 / 영어: hello
[인덱스: 1 ] 한글: 기적 / 영어: miracle
[인덱스: 2 ] 한글: 노력 / 영어: effort
----------------------------------------
키 리스트: ['안녕', '기적', '노력']
값 리스트 ['hello', 'miracle', 'effort']
----------------------------------------
[인덱스: 0 ] 한글: 안녕 / 영어: hi
[인덱스: 1 ] 한글: 노력 / 영어: effort
----------------------------------------
사전 자료형의 길이 0
['나동빈', '박한울', '이태일']
['이태일', '박한울', '나동빈']
[78, 85, 99]

Process finished with exit code 0

///////////////////////////////////////////////////////////// 입력

'''
37

input() : 사용자로부터 콘솔로 입력을 받는 함수
int() : 정수 자료형으로 변환
float() : 문자열, 정수 등의 자료형을 실수형으로 변환
max(), min() : 시퀀스 자료형에 포함되어 있는 원소 중 최대값 또는 최소값
bin(), hex() : 10진수 -> 2진수로 변환, 10진수 -> 16진수로 변환
round() : 반올림을 수행
type() : 자료형 변수
'''

user_input = input('정수를 입력하세요\n')
print("제곱:", int(user_input) ** 2)

a="12345"
print(int(a))
b=12.5
print(int(b))
a="12.5"
print(float(a))
b=12
print(float(b))
print()

list = [1,2,3,4,5,6,]
print(max(list))
print(min(list))

print(bin(128))
print(hex(256))

print(int('0x100',16))
print(int('0b10000000',2))

print(round(123.789,2))
print(round(123.789,-2))

int =1
str ="문자열"
list=[1,2,3]
dict={'apple':'사과'}
print(type(int))
print(type(str))
print(type(list))
print(type(dict))

///////////////////////////////////////////////////////////// 출력

정수를 입력하세요
7
제곱: 49
12345
12
12.5
12.0

6
1
0b10000000
0x100
256
128
123.79
100.0
<class 'int'>
<class 'str'>
<class 'list'>
<class 'dict'>

///////////////////////////////////////////////////////////// 입력

'''
38

문자열 자료형 뒤집기 : 슬라이싱 활용
len() : 문자열의 길이를 출력
isalpha() : 특정한 문자열이 문자로만 이루어져 있는지 확인
isdigit() : 특정한 문자열이 숫자로만 이루어져 있는지 확인
isalnum() : 특정한 문자열이 문자와 숫자로만 이루어져 있는지 확인
join(리스트 자료형) : 여러 개의 문자열을 구분자와 함계 합치는 함수
sorted(문자열 자료형) : 각 문자를 정렬하는 함수
split(토큰) : 문자열을 토큰에 따라서 분리하는 함수
find(서브 문자열) : 문자열을 토큰에 따라서 인덱스를 반환
upper(), lower() : 문자열을 대문자와 소문자로 변환
strip() : 좌우로 특정한 문자열을 제거하는 함수
eval() : 문자열 수식 계산해주는 함수
'''

str = "Hello World"
str2 = "염석현"
print(str[::-1])
print(len(str))
print(str2.isalpha())

str3 = "123"
print(str3.isdigit())

str4 = "abc123"
print(str4.isalnum())

list = ['Hello', 'World', '홍길동']
print('-'.join(list))

print(sorted(str))

list2 = str.split(' ')
print(list2)

print(str.find(' World'))

print(str.upper())
print(str.lower())

str = " Hello World "
print(str.strip())
print(str.lstrip())
print(str.rstrip())
str = " oHello Worldo "

exp = "(203+705)*3-(30/6)"
print(eval(exp))

///////////////////////////////////////////////////////////// 출력

dlroW olleH
11
True
True
True
Hello-World-홍길동
[' ', 'H', 'W', 'd', 'e', 'l', 'l', 'l', 'o', 'o', 'r']
['Hello', 'World']
5
HELLO WORLD
hello world
Hello World
Hello World 
 Hello World
2719.0