Computer Science/Programming practice

[Python] 전등 관리 프로그램

꿈꾸는어린이 2018. 1. 14. 20:00

//

일시 : 2018.01.09 9 : 00 ~ 11 : 00

내용 : 2018.01.08 클래스 예제 연습 후 나온 hw

​ 수정

//


전등 lightFixture

  • lightFixtureList = [] 리스트에

    lF = lightFixture() 로 인스턴스 객체를 만든 후

    lightFixtureList.append(lF) 리스트 항목에 넣어줌

  • 리스트 안 객체의 변수에 접근하기 위해서 lightFixtureList[index].필드

  • => 결과적으로 lightFixtureList[0] 과 lF의 타입이 같음

  class lightFixture :
machineName = ""
powerState = False

def setPowerOn(self):
self.powerState = True
def setPowerOff(self):
self.powerState = False
def isPowerState(self):
if self.powerState == True :
return True
else:
return False
       
def setMachineName(self, name):
self.machineName = name


def add_light():
name = input("전등의 이름을 지정하시오 : ")
lF = lightFixture()
lF.setMachineName(name)
lightFixtureList.append(lF)
print("# %s 전등이 추가되었습니다." % name)
print("")

def delete_light():
print("========현재 전등 상태========")
for i in range(0, len(lightFixtureList)):
print("전등 %d. %s " %(i+1,lightFixtureList[i].machineName))

del_light = int(input("\n>>삭제할 전등의 번호를 입력하세요 : "))
print("%s 전등이 삭제되었습니다.\n" % lightFixtureList[del_light-1].machineName)
del(lightFixtureList[del_light-1])


def check_light():
print("========현재 전등 상태========")
for i in range(0, len(lightFixtureList)):
print("전등 %d. %s => 스위치 상태 : %s" % (i+1,lightFixtureList[i].machineName, lightFixtureList[i].powerState))
print("")

def change_light():
change_light = int(input("# 스위치 상태를 변경하고 싶은 전등을 고르시오 : "))
print("")
print("=================================")
if lightFixtureList[change_light-1].powerState == True:
lightFixtureList[change_light-1].setPowerOff()
print("스위치가 꺼졌습니다")
else:
lightFixtureList[change_light-1].setPowerOn()
print("스위치가 커졌습니다.")

print("전등 %d. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[change_light-1].machineName, lightFixtureList[change_light-1].powerState))

print("")

lightFixtureList = []

while True :
print("<<< MENU >>>")
print("1.전등 추가 2.전등 삭제 3.전등 상태 보기 4.스위치 바꾸기 5.종료")
select_menu = int(input("## 메뉴를 선택하세요 : "))
print("")

if select_menu == 1:
add_light()
elif select_menu == 2:
delete_light()
elif select_menu == 3:
check_light()
elif select_menu == 4:
change_light()
elif select_menu == 5:
print("프로그램을 종료합니다.")
break



수정1

str return 추가

★ 메서드 호출 뒤 뒤에 () 잊지말고 써주기

  
class lightFixture :
machineName = ""
powerState = False
'''strOn = ""
strOff = ""'''

def setPowerOn(self):
self.powerState = True
self.strOn = "Power On"

def setPowerOff(self):
self.powerState = False
self.strOff = "Power Off"

def isPowerState(self):
if self.powerState == True :
return "Power ON"
else:
return "Power OFF"

def setMachineName(self, name):
self.machineName = name


def add_light():
name = input("전등의 이름을 지정하시오 : ")
lF = lightFixture()
lF.setMachineName(name)
lF.isPowerState()
lightFixtureList.append(lF)
print("# %s 전등이 추가되었습니다." % name)
print("")

def delete_light():
check_light()

del_light = int(input("\n>>삭제할 전등의 번호를 입력하세요 : "))
print("%s 전등이 삭제되었습니다.\n" % lightFixtureList[del_light-1].machineName)
del(lightFixtureList[del_light-1])


def check_light():
print("========현재 전등 상태========")
str = ""
for i in range(0, len(lightFixtureList)):
print("전등 %d. %s => 스위치 상태 : %s" %(i+1,lightFixtureList[i].machineName, lightFixtureList[i].isPowerState()))
print("")

def change_light():
change_light = int(input("# 스위치 상태를 변경하고 싶은 전등을 고르시오 : "))
print("")
print("========선택한 전등 상태========")
print("전등 %d. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[change_light-1].machineName, lightFixtureList[change_light-1].isPowerState()))
print("=================================")
u_answer = int(input("변경할 상태를 입력하세요 (1. 켜기 2. 끄기) : "))
if u_answer == 1 :
lightFixtureList[change_light-1].setPowerOn()
print("스위치가 커졌습니다.")
elif u_answer == 2 :
lightFixtureList[change_light-1].setPowerOff()
print("스위치가 꺼졌습니다")
else:
print("잘못 입력하셨습니다.")

print("\n========변경 후 전등 상태========")
print("전등 %d. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[change_light-1].machineName, lightFixtureList[change_light-1].isPowerState()))

print("")

lightFixtureList = []
str = ""

while True :
print("<<< MENU >>>")
print("1.전등 추가 2.전등 삭제 3.전등 상태 보기 4.스위치 바꾸기 5.종료")
select_menu = int(input("## 메뉴를 선택하세요 : "))
print("")

if select_menu == 1:
add_light()
elif select_menu == 2:
delete_light()
elif select_menu == 3:
check_light()
elif select_menu == 4:
change_light()
elif select_menu == 5:
print("프로그램을 종료합니다.")
break



수정2

삭제할 전등 입력값 숫자 대신 문자로 받기

  
class lightFixture :
machineName = ""
powerState = False
'''strOn = ""
strOff = ""'''

def setPowerOn(self):
self.powerState = True
self.strOn = "Power On"

def setPowerOff(self):
self.powerState = False
self.strOff = "Power Off"

def isPowerState(self):
if self.powerState == True :
return "Power ON"
else:
return "Power OFF"

def setMachineName(self, name):
self.machineName = name


def add_light():
name = input("전등의 이름을 지정하시오 : ")
lF = lightFixture()
lF.setMachineName(name)
lF.isPowerState()
lightFixtureList.append(lF)
print("# %s 전등이 추가되었습니다." % name)
print("")

def delete_light():
check_light()
flag = 0
del_light = input("\n>>삭제할 전등을 입력하세요 : ")

for i in range(0, len(lightFixtureList)) :
if lightFixtureList[i].machineName == del_light :
flag = 1
del(lightFixtureList[i])
break
else :
flag = 0
if flag == 0 :
print("전등 삭제에 실패했습니다.\n")
elif flag == 1:
print("%s 이 삭제되었습니다.\n" % del_light)


def check_light():
print("========현재 전등 상태========")
str = ""
for i in range(0, len(lightFixtureList)):
print("전등 %d. %s => 스위치 상태 : %s" %(i+1,lightFixtureList[i].machineName, lightFixtureList[i].isPowerState()))
print("")

if len(lightFixtureList) <= 0:
print("현재 전등이 없습니다.\n")


def change_light():
change_light = int(input("# 스위치 상태를 변경하고 싶은 전등을 고르시오 : "))
print("")
print("========선택한 전등 상태========")
print("전등 %d. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[change_light-1].machineName, lightFixtureList[change_light-1].isPowerState()))
print("=================================")
u_answer = int(input("변경할 상태를 입력하세요 (1. 켜기 2. 끄기) : "))
if u_answer == 1 :
lightFixtureList[change_light-1].setPowerOn()
print("스위치가 커졌습니다.")
elif u_answer == 2 :
lightFixtureList[change_light-1].setPowerOff()
print("스위치가 꺼졌습니다")
else:
print("잘못 입력하셨습니다.")

print("\n========변경 후 전등 상태========")
print("전등 %d. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[change_light-1].machineName, lightFixtureList[change_light-1].isPowerState()))

print("")

lightFixtureList = []
str = ""

while True :
print("<<< MENU >>>")
print("1.전등 추가 2.전등 삭제 3.전등 상태 보기 4.스위치 바꾸기 5.종료")
select_menu = int(input("## 메뉴를 선택하세요 : "))
print("")

if select_menu == 1:
add_light()
elif select_menu == 2:
delete_light()
elif select_menu == 3:
check_light()
elif select_menu == 4:
change_light()
elif select_menu == 5:
print("프로그램을 종료합니다.")
break



최종_수정3

클래스변수 이용하여 전등의 개수 출력 및 전등 이름으로 입력받기.

  class lightFixture :
machineName = ""
powerState = False
count = 0

def __init__(self, name):
self.machineName = name
lightFixture.count += 1

def setPowerOn(self):
self.powerState = True
'''self.str = "Power On"'''

def setPowerOff(self):
self.powerState = False
'''self.str = "Power Off"'''

def isPowerState(self):
if self.powerState == True :
return "Power ON"
else:
return "Power OFF"

def setMachineName(self, name):
self.machineName = name


def add_light():
name = input("전등의 이름을 지정하시오 : ")
##인스턴스 생성
lF = lightFixture(name)
'''lF.setMachineName(name)
lF.isPowerState()'''
lightFixtureList.append(lF)
print("# %s 전등이 추가되었습니다." % name)
print("# 현재 전등은 %d개 입니다." % lightFixture.count)
print("")

def delete_light():
check_light()
flag = 0
del_light = input("\n>>삭제할 전등을 입력하세요 : ")

for i in range(0, len(lightFixtureList)) :
if lightFixtureList[i].machineName == del_light :
flag = 1
del(lightFixtureList[i])
break
else :
flag = 0
if flag == 0 :
print("전등 삭제에 실패했습니다.\n")
elif flag == 1:
print("%s 이 삭제되었습니다.\n" % del_light)


def check_light():
print("========현재 전등 %d 개========" % lightFixture.count)
str = ""
for i in range(0, len(lightFixtureList)):
print("전등 %d. %s => 스위치 상태 : %s" %(i+1,lightFixtureList[i].machineName, lightFixtureList[i].isPowerState()))
print("")

if len(lightFixtureList) <= 0:
print("현재 전등이 없습니다.\n")


def change_light():
change_light = input("# 스위치 상태를 변경하고 싶은 전등을 고르시오 : ")
print("")
for i in range(0, len(lightFixtureList)):
if lightFixtureList[i].machineName == change_light:
print("========선택한 전등 상태========")
print("전등 %s. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[i].machineName, lightFixtureList[i].isPowerState()))
print("=================================")
u_answer = int(input("변경할 상태를 입력하세요 (1. 켜기 2. 끄기) : "))
if u_answer == 1 :
lightFixtureList[i].setPowerOn()
print("스위치가 커졌습니다.")
elif u_answer == 2 :
lightFixtureList[i].setPowerOff()
print("스위치가 꺼졌습니다")
else:
print("잘못 입력하셨습니다.")

print("\n========변경 후 전등 상태========")
print("전등 %s. %s => 스위치 상태 : %s \n" %(change_light,lightFixtureList[i].machineName, lightFixtureList[i].isPowerState()))
break
print("")



## main
lightFixtureList = []

while True :
print("<<< MENU >>>")
print("1.전등 추가 2.전등 삭제 3.전등 상태 보기 4.스위치 바꾸기 5.종료")
select_menu = int(input("## 메뉴를 선택하세요 : "))
print("")

if select_menu == 1:
add_light()
elif select_menu == 2:
delete_light()
elif select_menu == 3:
check_light()
elif select_menu == 4:
change_light()
elif select_menu == 5:
print("프로그램을 종료합니다.")
break