---
# System prepended metadata

title: Teaching Assistant Case Study (Tsung Ting Tu)

---

# Teaching Assistant Case Study (Tsung Ting Tu)

*by Tim tsungtingdu@gmail.com*
## 作業批改
### 作業一 (小明)

[小明的作業](https://repl.it/@lighthouse/TAassessmentguessnumberjs)

Good @小明，你的程式可以順利接受到使用者輸入的數字，並讓電腦開始玩猜數字，看來你對於程式的 input/output 以及迴圈的使用有一定的掌握囉

如果想要讓遊戲變得更好，這裡有幾點小提醒
1. 目前對於使用者輸入的內容有做初步的判斷：如果大於 100 或小於 1 的話就會請使用者重新輸入。但如果使用者輸入的不是數字，就會造成非預期的結果出現。這裡可以想想怎麼排除非數字型態的資料喔
2. 另外目前 while 迴圈限制最大的猜測次數為 50 次，但電腦不一定能順利在 50 次以內猜到。若要達到題目的要求，建議可以移除最大猜測次數
3. 若能夠順利完成上面兩點的話，最後可以來看看 coding style。好的 coding style 可以讓你自己與別人能夠快速了解程式碼的內容喔，也能夠加快 debug 的速度。你可以參考[JavaScript Standard Style](https://standardjs.com/rules-zhtw.html)，裡面有許多的規則，但這裡我建議你可以先從下面這裡開始


```JS
# 原程式碼排版
if(answer>100 || answer < 1){
answer = Number(prompt("please assign an answer between 1 and 100?"))
}
else{
(下略)
}

# 建議排版
if (answer > 100 || answer < 1) {
  answer = Number(prompt("please assign an answer between 1 and 100?"))
} else {
  (下略)
}
```

適當的縮排讓大家能夠一目瞭然 if/else 所控制的範圍。另外在括號、大於、小於、等於 ... 等符號前後增加一格空白也能讓閱讀上更加舒適喔！動手試試看！

如果有重新繳交作業，或有任何問題，都歡迎 tag 助教喔


### 作業二 (小華)

[小華的作業](https://repl.it/@lighthouse/taassessmentguessnumberjs2)

Good @小華！這份作業有幾個不錯的地方
1. 可以順利接受使用者輸入的資訊，並讓電腦開始玩猜數字
2. 想辦法讓電腦減少猜測次數，提升程式效率
3. 封裝程式碼，讓 functions 可以被重複使用

如果想要讓遊戲變得更好，這裡有幾點小提醒
1. 目前對於使用者輸入的內容有做初步的判斷：如果大於 100 或小於 1 的話就會請使用者重新輸入。但如果使用者輸入的不是數字，就會造成非預期的結果出現。這裡可以想想怎麼排除非數字型態的資料喔
2. 在 function 與變數的命名上有一些需要注意的地方，譬如

```JS
function randomNumberInRangeX1ToX2(x1, x2){
  newRandomNumber = 1 + x1 + Math.floor(Math.random() * (x2 - x1 - 1))
  return newRandomNumber
}
```

盡可能讓變數名稱有意義，讓別人能夠快速理解這個變數裡面的內容，因此建議可以把 `x1` `x2` 改為 `number1` `number2`

```JS
function consoleLog(timesOfGuess, computerGuess, warningMessage){
        console.log(`#${timesOfGuess}: computer's guess is ${computerGuess}. ${warningMessage}`)
}
```

另外在命名上也盡量避免可能的混淆情況發生，譬如 `consoleLog` 和 `console.log` 就非常接近。因此建議可以把 function name 改為 `log` 或是其他名稱會比較好喔。動手試試看！

如果有重新繳交作業，或有任何問題，都歡迎 tag 助教喔


***
## 設計批改指標與批改指引
### 作業二

**Excellent**
批改指標：滿足 Good 的條件，並滿足以下（批改指引）的條件
批改指引：
  1.  能夠處理非數字型別的輸入
  2.  有撰寫程式註解
  3.  符合 JavaScript Standard Style 的風格

**Good**
批改指標：能夠使用 Mocha.js 撰寫測試，並滿足 FizzBuzz 的要求
批改指引：
  1. 測試包含以下 case 並能正確判別
      * 3 的倍數的數字
      * 5 的倍數的數字
      * 15 的倍數的數字
      * 非以上倍數的數字 
 
**Try Harder**
批改指標：無法能使用 Mocha.js 撰寫測試，並滿足 FizzBuzz 的要求
批改指引：無法滿足 Good 的要求


***

fyi, slide page 19 當中的 Model answer: Demo 連結為 404