파이썬 함수와 카렐

JOOYEUN SEO·2024년 8월 12일

100 Days of Python

목록 보기
6/76
post-thumbnail

❖ 함수(functions)

  1. 내장 함수 : Built-in Functions 에서 목록 확인
  2. 사용자 정의 함수 : 사용자가 직접 정의하는 함수

◇ 함수 정의 및 호출

# 정의
def my_function():
	#Do this
    #Tehm do this
    #Finally do this

# 호출
my_function()

❖ 들여쓰기(indentation)

들여쓰기 수준에 따라 달라지는 관계는 폴더파일 간의 관계와 비슷

  • 📂 my function
    • 📄 print("Hello")
  • 📄 print("world!")

→ 명령어 print("world!")my function에 속하지 않음

◇ Spaces vs Taps

PEP 8 – Style Guide for Python Code 에 따르면,
Indentation : Use 4 spaces per indentation level.

Tabs or Spaces?
Spaces are the preferred indentation method.
Tabs should be used solely to remain consistent with code that is already indented with tabs.
Python disallows mixing tabs and spaces for indentation.

참고로, 코드 편집기에서 indent size를 4로 설정하면 tap키로 한 번에 4칸 들여쓰기 가능

◇ 단축키

  • 방법1
    • 들여쓰기 : tap
    • 취소하기 : shift + tap
  • 방법2
    • 들여쓰기
      • mac : + ]
      • window : ctrl + ]
    • 취소하기
      • mac : + [
      • window : ctrl + [

❖ while 반복문

  • 특정 조건이 참일 경우 명령문이 계속 실행됨
  • 설정한 조건에 도달할 때까지 같은 작업을 수없이 반복 수행해야 할 때 유용
  • for문과 달리 무한 반복(infinite loop)에 빠질 위험이 있음
while something_is_true:
	#Do this
    #Then do this
    #then do this

🤖 프로그래밍 학습 도구

  • Karel the Robot : 로봇 카렐을 통제하는 방법을 연습
  • Reebog's World
    • 카렐과 비슷하며, 파이썬 코드 적용 가능
    • 다른 사람이 만든 문제 파일을 첨부하여 연습할 수 있음

◇ for 반복문으로 장애물 넘기

Hurdle 1

◇ while 반복문으로 장애물 넘기

Hurdle 1

Hurdle 2

  • 도착 깃발의 위치가 랜덤으로 변경
  • at_goal() 은 해당 위치에 깃발이 있으면 True 반환
    • 조건이 거짓일 동안만 while문 반복 실행
    • not at_goal()at goal != True 와 동일

Hurdle 3

  • 장애물의 위치와 개수가 랜덤으로 변경
  • front_is_clear() 는 앞이 비어 있으면 True 반환
  • wall_in_front() 는 앞에 장애물이 있으면 True 반환

Hurdle 4

  • 장애물의 높이, 위치와 개수가 랜덤으로 변경
  • right_is_clear() 는 오른쪽이 비어 있으면 True 반환
  • wall_on_right() 는 오른쪽에 장애물이 있으면 True 반환

🗂️ Day6 프로젝트 : 미로 탈출

로봇 리보그가 미로에서 출구를 찾아 빠져나올 수 있도록 코드 작성하기
Maze

🔍 유의 사항

  • 로봇이 시작하는 방향과 위치가 랜덤으로 변경
  • 미로를 탈출하는 방법은 항상 오른쪽 벽을 따라가는 알고리즘을 짜는 것
    1. 오른쪽이 비어 있으면 오른쪽으로 회전 하는 것을 최우선으로 함
    2. 오른쪽이 막혀 있으면 직진
    3. 오른쪽으로 회전도, 직진도 할 수 없으면 마지막 선택으로 왼쪽으로 회전
  • 위 1~3번만으로는 무한 루프 발생 가능
    • 네 위치 모든 곳에서 오른쪽이 비어 있는 경우
    • 로봇의 오른쪽에 벽이 있는 곳에서 알고리즘을 시작할 수 있게 해야 함
    • 가장 간단하고 이해하기 쉬운 해결 방법
      1. 주변에 벽이 없는 곳에서 시작할 경우를 대비해 먼저 while문으로 전방이 막힌 곳까지 직진
      2. 앞에 벽을 만나면 왼쪽으로 회전시켜서 로봇의 오른쪽에 벽이 있도록 만듦
      3. 도착점에 도달하기 전까지 반복 실행되는 알고리즘 작성

🖍️ 답안





▷ Angela Yu, [Python 부트캠프 : 100개의 프로젝트로 Python 개발 완전 정복], Udemy, https://www.udemy.com/course/best-100-days-python/?couponCode=ST3MT72524

0개의 댓글