[TOC]
### 課前準確:
* 在`Windows`系統里安裝`python`,參考 [安裝python](http://www.hmoore.net/k12edu/k_12/785427#Windowspython_4)
*****
### 本節課參考書目
* `Teach Your Kids to Code.pdf` 第三章:數字和變量
*****
### 數字
`python` 可以用來做計算,例如下面這些簡單的計算。
```
>>> 4 + 2
6
>>> 4 - 2
2
>>> 4 * 2
8
>>> 4 / 2
2
>>> 4 ** 2
16
>>> (4 + 2) * 3
18
```
在`python` 里計算和我們平常在紙上寫算式還是不一樣的,下面這種寫法是不對的,會報錯。
```
>>> What is 4 + 2?
SyntaxError: invalid syntax
>>> 3 + 3 =
SyntaxError: invalid syntax
```
*****
### 變量
#### 什么是變量
*****
`>>> my_name = 'Max'`
*****
這句代碼里,`my_name` 就是一個變量,它的名字是`my_name` 。我們把`Max` 指定給 `my_name` 。這里`=` 是“指定給”的意思,和數學里的`=` 有一點不同。
變量有一些好處。例如,對于一些很長的數字,人們很難記住,那么最好給它指定一個變量。例如`3456323255334353342` ,每次用到這個數字,如果靠人回憶就太麻煩了,而且也容易出錯,最好的辦法是讓計算機幫忙把這個數字記住,同時起一個容易記憶的名字,就像這樣:
*****
`>>> my_num = 3456323255334353342`
*****
我們把這串數字指定給`my_num` 之后,在接下來的程序里,就可以使用`my_num` 代替這串數字:
*****
```
>>> my_num = 3456323255334353342
>>> print(my_num) # 打印 my_num
>>> my_num + my_num # 兩個 my_num 求和
```
*****
這有點像手機里的通訊錄,記住所有電話號碼是一件很難的事情,所以我們給每個電話號碼指定一個名字(就是變量,“變”的意思是,名字可以不變,但名字對應的電話號碼可能會變,例如換號)。
#### 變量類型
所有通過鍵盤輸入的內容,都可以指定給一個變量。這里介紹三種簡單的變量類型(還有很多更復雜的變量類型):
1. 字符串。把從鍵盤輸入的內容用英文輸入法的單引號或雙引號括起來就是字符串,注意是用**英文輸入法的單引號或雙引號括**(否則程序會報錯)。
```
>>> my_name = "Max"
>>> my_chinese_name = "小眀"
```
2. 數字。就是 `0 1 2 3 4 5 6 7 8 9` 這些數字的任意組合。注意,數字不能用英文輸入法的單引號或雙引號括起來,括起來之后就不是數字變量了,而是字符串了。
```
>>> my_num = 12 # my_num 記住的是一個數字12
>>> my_num + my_num # 數字可以求和
24
>>> my_wrong_name = "12" #my_num 記住的不是一個數字12,而是一個字符串
>>> my_wrong_name + my_wrong_name #字符串不能求和,但可以拼接
'1212'
```
3. 列表。列表的例子如下:
*****
```
corlors = ["red", "yellow", "blue", "green"]
```
*****
意思就是把紅、黃、藍、綠四種顏色放在`corlors` 變量里存儲起來。如果我們想找到某個顏色,要按順序,而且是從零開始查找。
```
>>> corlors = ["red", "yellow", "blue", "green"]
>>> print(corlors[0]) # 紅色是變量corlors里的第一個
red
>>> print(corlors[1]) # 黃色是變量corlors里的第二個
yellow
>>> print(corlors[2]) # 藍色是變量corlors里的第三個
blue
>>> print(corlors[3]) # 綠色是變量corlors里的第四個
green
```
*****
### 編程練習一:認識變量和數字
新建一個文件,寫入下面這些代碼,文件保存為`ThankYou.py` 。
```
my_name = "Bryson"
my_age = 38
your_name = input("你叫什么名字 ")
your_age = input("你多大了? ")
print("我的名字是", my_name, ", 我", my_age, "歲了。")
print("你的名字是", your_name, ", 你", your_age, "歲了。")
print("很高興和你一起學編程", your_name, "!")
```
按`F5` 執行這段代碼:
```
============= RESTART: C:/ThankYou.py =============
你叫什么名字 小明
你多大了? 8
我的名字是 Bryson , 我 38 歲了。
你的名字是 小明 , 你 8 歲了。
很高興和你一起學編程 小明 !
```
*****
### 編程練習二:給必勝客做一個計算器
編程任務:
1. 必勝客服務員問顧客想要多少個 Pizza ?
2. 顧客問每個 Pizza 的單價是多少?
3. 計算 Pizza 的總價是多少?
新建一個文件,寫入下面這些代碼,文件保存為`AtlantaPizza.py` 。
```
# AtlantaPizza.py - Pizza計算器
# 必勝客服務員問顧客想要多少個 Pizza:
number_of_pizzas = eval(input("How many pizzas do you want? "))
# 顧客問每個 Pizza 的單價是多少:
cost_per_pizza = eval(input("How much does each pizza cost? "))
# 計算 Pizza 的總價是多少:
total = number_of_pizzas * cost_per_pizza
# 打印賬單
print("The total cost is ¥",total)
```
按下`F5` 看看會出現什么。
*****
### 編程練習三:打印一百個彩色名字
新建一個文件,寫入下面這些代碼,文件保存為` SpiralMyName.py` 。
```
# SpiralMyName.py - 打印一百個彩色名字
#導入turtle模塊
import turtle
# 打開一個畫圖板
t = turtle.Pen()
# 改變背景顏色
turtle.bgcolor("black")
# 畫筆的顏色有四種,紅、黃、藍、綠
colors = ["red", "yellow", "blue", "green"]
# 打開文本輸入框,詢問你的名字
your_name = turtle.textinput("輸入你的名字", "你叫什么名字?")
# 畫一百個不同顏色的你的名字
for x in range(100):
t.pencolor(colors[x%4]) # 每移動一次就換一次顏色
t.penup() # 把筆抬起來,不要畫
t.forward(x*4) # 讓筆在屏幕上方移動
t.pendown() # 落筆,準備寫下你的名字
t.write(your_name, font = ("Arial", int( (x + 4) / 4), "bold") ) # 寫下你的名字
t.left(92) # 向左轉92°
```
*****
### 課程小結
* 在`python` 里可以直接輸入數字進行計算。
* `python` 有一些基本變量類型,例如字符串、數字、列表,在不同場景下我們會用到不同類型的變量。