---
# System prepended metadata

title: Day 11 - Beginner - The Blackjack Capstone Project
tags: [python, 100 Days Of Code, Udemy]

---

Udemy課程：[100 Days Of Code（Dr. Angela Yu）](https://www.udemy.com/course/100-days-of-code/)
# Day 11 - Beginner - The Blackjack Capstone Project
###### tags: `python` `Udemy` `100 Days Of Code`
2021.03.01（Mon.）
## ● 前言 / 心得
心得越來越懶得打XD因為開學了，能看課程的時間也越來越少，只希望能持續下去啦！

## ● 上課筆記
## 0.code
自己寫的（失敗，還未檢查錯誤點）：[blackjack-start](https://repl.it/@tina0915tw/blackjack-start#main.py)
完成品：[blackjack-final](https://repl.it/@tina0915tw/blackjack-final#main.py)

## 1.課前準備
老師有提到這堂課會結合前面10堂的內容去完成一個project，會比過去10堂課所做的還要難。這堂課要完成的遊戲是模仿一個遊戲叫做[Blackjack](https://games.washingtonpost.com/games/blackjack/)，而做出來的成品會如這個[blackjack-final](https://repl.it/@appbrewery/blackjack-final?embed=1&output=1#main.py)。

這個遊戲就是一開始玩家會拿到兩張牌，而電腦也是兩張牌，但我們只能知道電腦拿到的其中之一張牌而已，再來就把兩張牌數字加起來（除J、Q、K當作10外，還有A可以自由選擇要當1、11，其餘卡牌數字多少就是多少），接著會問你要不要再拿一張牌，假如不要就開始比較兩張牌加起來誰的比較大（但是不超過21）；假如要再拿一張牌，加起來後卻超過21，則直接為輸。

* 老師給的[flow chart](https://drive.google.com/uc?export=download&id=1rDkiHCrhaf9eX7u7yjM1qwSuyEk-rPnt)：
![](https://i.imgur.com/Mh5onuZ.jpg)

## 2.整個project有用到的概念
**1. 隨機random**
記得要先「import random」。

* 以下列出random()中常見的函數：
```python=
import random

#產生1到10的一個整數型隨機數 
print(random.randint(1,10))

#產生0到1之間的隨機浮點數
print(random.random())

#產生1.1 到5.4之間的隨機浮點數，區間可以不是整數
print(random.uniform(1.1,5.4))

#從序列中隨機選取一個元素
print(random.choice('tomorrow'))

#生成從1到100的間隔為2的隨機整數
print(random.randrange(1,100,2))

#將序列a中的元素順序打亂
a=[1,3,5,6,7]
random.shuffle(a)
print(a)
```

**2. append()**

* append()方法語法：
◉ obj：添加到list列表末尾的對象。
```python=
list.append(obj)
```

**3. sum()**
> 參考網址：[官方參考文件](https://docs.python.org/3/library/functions.html#sum)

sum()對序列進行求和計算。

* sum()方法語法：
◉ iterable：可迭代2對象，如：列表、元組、集合。
◉ start：指定相加的參數，如果没有設置這個值，默認為0。
```python=
sum(iterable[, start])
```

* 以下列出sum()中常見的實例：
```python=
#印出為3 
sum([0,1,2])

#元組計算總合後再加1
#印出為10
sum((2, 3, 4), 1)

#列表計算總和後再加2
#印出為12
sum([0,1,2,3,4], 2)
```

**4. remove()**
> 參考網址：[官方參考文件](https://developers.google.com/edu/python/lists#list-methods)

remove() 函數用於移除列表中某個值的第一個匹配項。
* remove()方法語法：
◉ obj：列表中要移除的對象
```python=
list.remove(obj)
```
* remove()函數的常見使用方法：
```python=
aList = [123, 'xyz', 'zara', 'abc', 'xyz'];

aList.remove('xyz');
print "List : ", aList; #List : [123, 'zara', 'abc', 'xyz']
aList.remove('abc');
print "List : ", aList; #List : [123, 'zara', 'xyz']
```
