Python (40)

반응형

 

클래스 사용법

 

 

 

  • 기본 사용법
class 클래스명:
	def __init__(self):
    	self.전역변수명1 = 데이터

	def 함수명1:
    	self.전역변수명1 = 데이터
       
# java의 main
if __name__ == '__main__':
	클래스명이름 = 클래스명()
	print(클래스명이름.전역변수명1)

 

 

 

  • 단일 상속시 사용법
class 클래스명:
	def __init__(self):
    	self.전역변수명1 = 데이터

	def 함수명1:
    	self.전역변수명1 = 데이터
       
# 상속
class 클래스2(클래스명):
	def __init__(self):
    	super().__init__()
    	self.전역변수명2 = 데이터

	def 함수명2:
    	self.전역변수명2 = 데이터
       
       
# java의 main
if __name__ == '__main__':
	클래스명이름 = 클래스2()
	print(클래스명이름.전역변수명1)
	print(클래스명이름.전역변수명2)

 

 

 

  • 다중 상속 사용법
class 클래스1:
	def __init__(self):
    	self.전역변수명1 = 데이터

	def 함수명1:
    	self.전역변수명1 = 데이터
     
class 클래스2:
	def __init__(self):
    	self.전역변수명2 = 데이터

	def 함수명2:
    	self.전역변수명2 = 데이터
        
        
# 다중 상속
class 클래스3(클래스1, 클래스2):
	def __init__(self):
    	클래스1.__init__(self)
        클래스2.__init__(self)
       
       
# java의 main
if __name__ == '__main__':
	클래스이름 = 클래스3()
	print(클래스이름.전역변수명1)
	print(클래스이름.전역변수명2)

 

 

 

클래스 사용 예시

 

 

 

  • Java 코드 -> Python 코드1
package day03;

public class Animal {
	int life_span = 10;
	
	void fightTiger() {
		life_span = 0;
	}
}

 

package day03;

public class OopTest01 {
	public static void main(String[] args) {
		Animal ani = new Animal();
		System.out.println("life_span : " + ani.life_span);

		ani.fightTiger();
		System.out.println("life_span : " + ani.life_span);
	}
}

 

결과 화면1

 

 

class Animal:
    def __init__(self):
        self.life_span = 10
    
    def fightTiger(self):
        self.life_span = 0


if __name__ == '__main__':
    ani = Animal()
    print("life_span : ", ani.life_span)
    
    ani.fightTiger()
    print("life_span : ", ani.life_span)

 

결과 화면3

 

 

  • Java 코드 -> Python 코드2
package day03;

public class Human extends Animal{
	int money = 0;
	
	void work() {
		money += 30000;
	}
}

 

package day03;

public class OopTest02 {
	public static void main(String[] args) {
		Human h = new Human();
		System.out.println("life_span : " + h.life_span);
		System.out.println("money : " + h.money);

		h.fightTiger();
		h.work();
		System.out.println("life_span : " + h.life_span);
		System.out.println("money : " + h.money);
	}
}

 

결과 화면2 : 상속 받을 경우 다 사용 가능

 

 

class Animal:
    def __init__(self):
        self.life_span = 10
    
    def fightTiger(self):
        self.life_span = 0

class Human(Animal):
    
    def __init__(self):
        super().__init__()
        self.money = 0
    
    def work(self):
        self.money += 30000

if __name__ == '__main__':
    hum = Human()
    print("life_span : ", hum.life_span)
    print("money : ", hum.money)
    
    hum.fightTiger()
    hum.work()
    print("life_span : ", hum.life_span)
    print("money : ", hum.money)

 

결과 화면4

 

 

  • Java 코드 -> Python 코드3
package day03;

public class Wonbin {
	boolean flag_ugly = true;
	
	void plastic() {
		flag_ugly = false;
	}
}

 

 

class Wonbin:
    def __init__(self):
        self.flag_ugly = True
    
    def plastic(self):
        self.flag_ugly = False
        
if __name__ == '__main__':
    won = Wonbin()
    print("ugly",won.flag_ugly)
    won.plastic()
    print("ugly",won.flag_ugly)

 

결과 화면5

 

 

 

  • Java 코드 -> Python 코드4
package day03;

public class Mavely {
	int weight = 100;
	
	void eat(int amount) {
		weight += amount;
	}
}

 

 

class Mavely:
    def __init__(self):
        self.weight = 100
    
    def eat(self, amount):
        self.weight += amount

if __name__ == '__main__':
    mav = Mavely()
    print("weight",mav.weight)
    mav.eat(5)
    print("weight",mav.weight)

 

결과 화면6

 

 

 

  • 다중 상속 예시
from day03.ooptest03 import Wonbin
from day03.ooptest04 import Mavely


class YoungHun(Wonbin, Mavely):
    def __init__(self):
        Wonbin.__init__(self)
        Mavely.__init__(self)
        # super().__init__() # 이런 경우 Wonbin만 반복받기에 둘 다 상속 받을 수 있게 해줘야 함


if __name__ == '__main__':
    yh = YoungHun()
    print("weight",yh.weight)
    print("ugly",yh.flag_ugly)
    
    yh.eat(100)
    yh.plastic()
    
    print("weight",yh.weight)
    print("ugly",yh.flag_ugly)

 

결과 화면7

 

 

반응형

'Python' 카테고리의 다른 글

[Python] 7장 자바 SWING  (0) 2024.03.28
[Python] 6장 자바 SWING 설치 방법 및 생성, 실행 방법  (0) 2024.03.27
[Python] 4.5장 과제  (0) 2024.03.26
[Python] 4장 리턴  (0) 2024.03.26
[Python] 3장 함수와 pass, 랜덤  (0) 2024.03.26
반응형

 

과제1

 

가위/바위/보를 선택하세요 가위
나:가위
컴:보
결과:이김

 

더보기
# 가위/바위/보를 선택하세요 가위
# 나:가위
# 컴:보
# 결과:이김
from random import random

me = input("가위/바위/보를 선택하세요 ")

com = random();
if com > 0.66:
    com = "가위"
elif com > 0.33:
    com = "바위"
else:
    com = "보"

#print(com)

if (me == "가위" and com == "보")|(me == "바위" and com == "가위")|(me == "보" and com == "바위"):
    result = "이김"
elif (me == "가위" and com == "바위")|(me == "바위" and com == "보")|(me == "보" and com == "가위"):
    result = "짐"
else:
    result = "비김"
    
print("나:{}".format(me))
print("컴:{}".format(com))
print("결과:{}".format(result))

 

결과 화면1

 

 

 

과제2

 

첫수를 입력하세요 1
끝수를 입력하세요 5
배수를 입력하세요 2
1에서 5까지의 2의 배수 합은 6입니다.

 

더보기
# 첫수를 입력하세요 1
# 끝수를 입력하세요 5
# 배수를 입력하세요 2
# 1에서 5까지의 2의 배수 합은 6입니다.

su1 = int(input("첫수를 입력하세요 "))
su2 = int(input("끝수를 입력하세요 "))
su3 = int(input("배수를 입력하세요 "))

arr = list(range(su1, su2+1))
#print(arr)

res = 0
for i in arr:
    #print(i)
    if i%su3 == 0:
        res += i

print(str(su1) + "에서 " + str(su2) + "까지의 " + str(su3) + "의 배수 합은 " + str(res) + "입니다.")

 

결과 화면2

 

 

 

과제3

 

com = (1 ~ 99까지를 넣어줌) 50
수를 입력하시오 40
40    UP
수를 입력하시오 60
60    DW
수를 입력하시오 50
50    ANSWER

 

더보기
# com = (1 ~ 99까지를 넣어줌) 50
# 수를 입력하시오 40
# 40    UP
# 수를 입력하시오 60
# 60    DW
# 수를 입력하시오 50
# 50    ANSWER
from random import random


com = int(random()*99)
#print(com)

while True:
    su = int(input("수를 입력하시오 "))
    
    if su > com:
        print(str(su) + "\tDW")
    elif su < com:
        print(str(su) + "\tUP")
    else:
        print(str(su) + "\tANSWER")
        break

 

결과 화면3

 

 

 

과제4

 

첫별수를 입력하세요 3
끝별수를 입력하세요 5
★★★
★★★★
★★★★★

 

더보기
# 첫별수를 입력하세요 3
# 끝별수를 입력하세요 5
# ★★★
# ★★★★
# ★★★★★

su1 = int(input("첫별수를 입력하세요 "))
su2 = int(input("끝별수를 입력하세요 "))

def getStar(cnt):
    ret = ""
    for i in range(cnt):
        ret +="★"
    return ret

for i in range(su1, su2):
    print(getStar(i))

 

결과 화면4

 

 

반응형

'Python' 카테고리의 다른 글

[Python] 6장 자바 SWING 설치 방법 및 생성, 실행 방법  (0) 2024.03.27
[Python] 5장 클래스  (0) 2024.03.27
[Python] 4장 리턴  (0) 2024.03.26
[Python] 3장 함수와 pass, 랜덤  (0) 2024.03.26
[Python] 2.5장 과제  (0) 2024.03.25
반응형

 

 return 값을 이용하기

 

 

def showYourName():
    return print("Hello 홍길동")

showYourName()

 

결과 화면1

 

 

 

멀티 리턴

 

def add_min_mul_div(a,b):
    return a+b, a-b, a*b, a/b

sum, min, mul, div = add_min_mul_div(4,2)

print("sum:{}".format(sum))
print("min:{}".format(min))
print("mul:{}".format(mul))
print("div:{}".format(div))

 

결과 화면2

 

 

=> 리턴이 여러개인데 하나만 요청할 시 오류 발생함

def add_min_mul_div(a,b):
    return a+b, a-b, a*b, a/b

sum, min, mul = add_min_mul_div(4,2)

print("sum:{}".format(sum))
print("min:{}".format(min))
print("mul:{}".format(mul))

 

결과 화면3

 

 

=> 예외 : 튜플 (멀티 리턴때 사용)

def add_min_mul_div(a,b):
    return a+b, a-b, a*b, a/b

sum = add_min_mul_div(4,2)

print("sum:{}".format(sum))
print(sum[2])

 

tuple == 작은 배열

 

 

반응형

'Python' 카테고리의 다른 글

[Python] 5장 클래스  (0) 2024.03.27
[Python] 4.5장 과제  (0) 2024.03.26
[Python] 3장 함수와 pass, 랜덤  (0) 2024.03.26
[Python] 2.5장 과제  (0) 2024.03.25
[Python] 2장 변수 선언 및 조건문, 반복문, input  (0) 2024.03.25
1 ··· 9 10 11 12 13 14