# \[課程討論\] Day 14 - Beginner - Higher Lower Game Project

**URL:** https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369
**Category:** Py基礎組
**Tags:** 會議記錄
**Created:** [2021年五月2日 14:15 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369 "2021-05-02T14:15:24Z")
**Posts on this page:** 8
**Page:** 1

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月2日 14:15 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/1 "2021-05-02T14:15:24Z")

</div>

Py基礎組，將於2021/5/9 PM 9:00，進行Day 14課程討論。  
相關資訊，更新於此

---

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月7日 00:22 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/2 "2021-05-07T00:22:00Z")

</div>

1. The flow chart of the project.  
Provided by @timaskwhy

2. Project result.  
Provided by PBG.

 ![unknown](https://vip.studycamp.tw/uploads/default/original/2X/d/d20047810168ddb56f6077164258745c290065e1.png)

### Phase 1

https://replit.com/@TWPythonNovice1/Day-14-Higher-Lower-Game-ProjectPhase1-PBG?embed=true

---

<div class="post-metadata">

### Author: ![JJC](https://vip.studycamp.tw/uploads/default/original/1X/c754823bb6835b2e19f0d2e46e3ac60af89f54d7.jpeg) [@JJC](https://vip.studycamp.tw/u/JJC)
#### Post date: [2021年五月8日 18:35 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/3 "2021-05-08T18:35:31Z")

</div>

謝謝Laurence！

以下連結是這次我練習寫的code，試了幾次運作雖然貌似正常，不過遇到兩個問題：

1. 因為function裡面有用到global scope的關係，似乎沒辦法把整個遊戲囊括進一個叫做game( )的function去跑，不知道這樣是不是不好
2. 感覺還有其他重複的地方可以簡化為function，但目前想不到該怎麼解

> **[higher-lower-start-1](https://replit.com/@JinJChang/higher-lower-start-1#main.py)**
>
> A Python repl by JinJChang

---

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月9日 01:00 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/4 "2021-05-09T01:00:30Z")

</div>

不錯喔! 浮出水面呼吸了。XD  
晚上，我們可以討論一下。

---

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月9日 01:13 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/5 "2021-05-09T01:13:56Z")

</div>

目前，看了老師的影片(還沒看完)，發現了2個問題。

Q1:  
選手A與B比較後，勝出者的問題，將被保留，當作下一次選手A的問題。

A1:  
這個部份，做錯了，phase 1的做法，是每次都重新產生選手A與B的問題。  
嘗試修正於phase 2。

Q2.  
意外發現，game\_data(索引位置39、40)，follower\_count的值是相同的。  
因為，還沒看完影片，不確定這是不是老師特別安排的，或只是打錯字。

> 2021\_0509 PM 04:27  
> 看完影片後，老師沒有提到這件事。  
> 因為，老師的寫法，不會遇到重複的情況。

A2:  
嘗試修正於phase 2。  
如果遇到這個組合，就重新選擇題目。

 ![Capture](https://vip.studycamp.tw/uploads/default/original/2X/7/759ad59c43fdec5cc797bbc1a3f70f3bb6031736.png)  
 ![Capture2](https://vip.studycamp.tw/uploads/default/original/2X/c/cc8431040b48e06b17dd57f5a1548358565b7eea.png)

### Phase 2

https://replit.com/@TWPythonNovice1/Day-14-Higher-Lower-Game-ProjectPhase2-PBG?embed=true

---

<div class="post-metadata">

### Author: ![JJC](https://vip.studycamp.tw/uploads/default/original/1X/c754823bb6835b2e19f0d2e46e3ac60af89f54d7.jpeg) [@JJC](https://vip.studycamp.tw/u/JJC)
#### Post date: [2021年五月9日 14:55 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/6 "2021-05-09T14:55:43Z")

</div>

@Laurence 謝謝你的提醒，我剛剛跑了步驟解析，發現：  
如果答案是B的情況下，在B把A蓋過去以後，我忘記把follower數量刷新，所以原本玩起來是有問題的。我在while裡面重新加了一個 a\_count = a[“follower\_count”]  
目前跑起來好像比較正常了。

可以再麻煩你跟 @timaskwhy 如果有空的話，可以看看有沒有什麼其他可以優化的建議，或是我發現沒看到的bug。沒時間的話也不要緊，我再參考你們的流程多練習一下，感謝你們🙏

> **[higher-lower-start-1](https://replit.com/@JinJChang/higher-lower-start-1#main.py)**
>
> A Python repl by JinJChang

---

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月9日 15:52 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/7 "2021-05-09T15:52:00Z")

</div>

Hi Andy,

客氣了，一起學習。  
我目前看到的問題，如下。

## 1. import的方式。

art.py，算是自己定義的module，用import匯入，print(logo)，會報錯誤。  
所以，才寫成print(art.logo)，我猜由來是這樣。  
我不清楚，這樣寫合不合乎，正常流程。  
目前，學習課程到現在，沒有看過老師這樣用。

該用import或from/import，可以參考這篇文章。

### Python 的 Import 陷阱

[https://medium.com/pyladies-taiwan/python-的-import-陷阱-3538e74f57e3](https://medium.com/pyladies-taiwan/python-%E7%9A%84-import-%E9%99%B7%E9%98%B1-3538e74f57e3)

我自己的解讀是，import或from/import，可以正常的使用在built-in module/function。  
非built-in module/function，像art.py，就只能用from/import。  
才可以使用print(logo)，而非使用print(art.logo)。

## 2. 先試跑一次性的流程。

把Line 55之後的code，comment起來。  
看一下，成立與不成立的結果。  
一次性的流程，如果對了，再來加while loop。

## 3. ?

哈，我不知道這一個標題，該用什麼命名。  
一般而言，import完後，會開始寫code。  
一段code，會被重複執行的，就會寫成def function。  
def function通常(我的認知)，會放在import下面。  
非def function的，例如，print(logo)，在最後一個def function下面，開始。

## 4. 把大問題，切成數個小問題。

def compare(a\_count, b\_count, answer, game\_continue)  
這個裡面，要做的事情有點多，可以再拆成，幾個小def function，有助於debug。

---

<div class="post-metadata">

### Author: ![Laurence](https://vip.studycamp.tw/user_avatar/vip.studycamp.tw/laurence/32/5523_2.png) [@Laurence](https://vip.studycamp.tw/u/Laurence)
#### Post date: [2021年五月10日 05:33 UTC](https://vip.studycamp.tw/t/%E8%AA%B2%E7%A8%8B%E8%A8%8E%E8%AB%96-day-14-beginner-higher-lower-game-project/1369/8 "2021-05-10T05:33:18Z")

</div>

剛剛才了解，為什麼我會遇到這個問題，老師的寫法則不會。XD

在Phase 1裡的，get\_answer( ) function，我用了elif。

```auto
def get_answer(index_a, index_b):
    player_a = data[index_a]["follower_count"]
    player_b = data[index_b]["follower_count"]
    print(f"\nA_score: {player_a}")
    print(f"B_score: {player_b}")
    if player_a > player_b:
        return "A"
    elif player_b > player_a:
        return "B"

```

老師的寫法，是else。

```auto
def check_answer(guess, a_followers, b_followers):
  """Checks followers against user's guess 
  and returns True if they got it right.
  Or False if they got it wrong.""" 
  if a_followers > b_followers:
    return guess == "a"
  else:
    return guess == "b"

```
