대학교

파이썬 - (3) 객체와 메서드

매 석 2023. 10. 7. 13:53
반응형

객체, 메서드

정수, 소수, 문자열, 행렬 등 파이썬의 모든 데이터는 특정 타입의 객체이다.

객체의 타입은 객체를 생성한 클래스에 따라 다르다.

예시로 int, float, complex, bool 등이 있다.

각 객체는 타입과 별개로, 이름을 가질 수 있다.

또한 새로운 객체를 지정하면 기존에 지정 되어있던 객체는 사라진다.

메서드는 "객체이름.메서드이름()" 형태로 사용한다.

특정 행위를 포함하고 있다.

실습 문제

1번

정답 코드 :

from cs1robots import*
import time

load_world("./worlds/harvest4.wld")
hubo = Robot()
hubo.move()
cnt=0
number=0
def turn_right():
  hubo.turn_left()
  hubo.turn_left()
  hubo.turn_left()
def Move(cnt):
    while(1):
        if(hubo.on_beeper()):
            hubo.pick_beeper()
        else:
            if(not hubo.front_is_clear()):
                cnt+=1
                if cnt==7:
                    break
                elif cnt%2==0:
                    turn_right()
                    hubo.move()
                    turn_right()
                else:
                    hubo.turn_left()
                    hubo.move()
                    hubo.turn_left()
                    if(hubo.on_beeper()):
                        hubo.pick_beeper()
            hubo.move()
            time.sleep(0.1)
Move(cnt)
while(1):
    try:
        hubo.drop_beeper()
        time.sleep(0.1)
        number+=1
    except:
        break            
print(number)

 

2번

정답 코드 :

from cs1robots import*
import time

create_world(avenues=10, streets=10)
hubo=Robot(orientation='S', avenue=2, street=1)


def turn_right():
  hubo.turn_left()
  hubo.turn_left()
  hubo.turn_left()
  
def north():
    cnt=0
    while(1):
        if hubo.facing_north():
            break
        else:
            hubo.turn_left()
            cnt+=1
    if cnt==0:
        return cnt,"N"
    elif cnt==1:
        return cnt,"E"
    elif cnt==2:
        return cnt,"S"
    elif cnt==3:
        return cnt,"W"

def Street():
    cnt=0
    while(1):
        if not hubo.front_is_clear():
            break
        else:
            hubo.move()
            cnt+=1
    hubo.turn_left()
    hubo.turn_left()
    for _ in range(cnt):
        hubo.move()
    hubo.turn_left()
    return 10-cnt

def Avenue():
    cnt=0
    while(1):
        if not hubo.front_is_clear():
            break
        else:
            hubo.move()
            cnt+=1
    hubo.turn_left()
    hubo.turn_left()
    for _ in range(cnt):
        hubo.move()
    turn_right()
    return 10-cnt
cnt,dire=north()
stre=Street()
aven=Avenue()

for _ in range(cnt):
    turn_right()
print(dire,aven,stre)