[課程討論] Day 6 - Beginner - Python Functions & Karel

Py基礎組,已於2021/3/14 PM 9:00,進行Day 6課程˙討論。
相關資訊,更新於此。

1個讚

謝謝,會議主持人Phillis精闢的講解。
以下為Phillis的筆記的連結。

2個讚

昨天說的機器人走迷宮(Maze*),附上我的code在下方(我發現我們那組的討論中,我也有放,不過當時沒放右轉的function code),純參考,每個人的寫法或有不同。

忘記在論壇還是 Discord 中,看到 @DotTw 提過,這種解法,碰到四週都是空地時會有問題,不過我還沒空去研究,解法應該會先試這個方式:如果連續繞四次回到原地時,就強制往前一步。

def turn_right(): 
    turn_left()
    turn_left()
    turn_left()

## 可以右轉就右轉並前進、不然可以前進就前進、都不行就左轉;左轉後可前進就進前、不能前進就左轉再前進
def next_step(): 
	if right_is_clear():
		turn_right()
		move()
	elif front_is_clear():
		move()
	else:
		turn_left()
		if front_is_clear():
			move()
		else:
			turn_left()
			if front_is_clear(): # 前方應該沒東西,不然四面都是牆,但還是防呆一下,也許出題的人程式沒寫好
				move() 
		
while not at_goal():
	next_step()

機器人走迷宮 Maze

https://reeborg.ca/reeborg.html?lang=en&mode=python&menu=worlds%2Fmenus%2Freeborg_intro_en.json&name=Maze&url=worlds%2Ftutorial_en%2Fmaze1.json

1個讚

所以老師的解法裡,一開始也有走到底撞牆後左轉去達成一開始右邊就是牆壁的情況。

3個讚

sió-tī(小弟)我,回來面對這個章節了。
當初,看這個章節很痛苦,搞不清楚狀況。

看完老師的影片,63. Final Project: Escaping the Maze。
老師的解法,sió-tī(小弟)我認為比較複雜,dual while loop。 :sweat_smile:

後來的三個挑戰題目(problem world/2/3),機器人的面向都是固定的。
我就嘗試,可能性的走法,使用條件多樣化。
試一試,沒想到就成功了。

def turn_right():
    turn_left()
    turn_left()
    turn_left()

while not at_goal():
    if front_is_clear():
        move()
    elif wall_in_front() and right_is_clear():
        turn_right()
    elif wall_in_front() and wall_on_right():
        turn_left()
2個讚