---
title: 'Python學習筆記'
disqus: hackmd
---
Python 學習筆記
=
> 在看完黑馬程序員學習完Python之後,複習同時所整理的筆記。
> 後面有時候會有練習題,因為我只做出跟答案一樣的「結果」而不是「一模一樣的程式碼」所以程式碼很可能跟黑馬頻道的不一樣,若寫法不同以自己習慣的為主即可。
>
> 第一次使用HackMD進行筆記,內容可能不完整或排版不佳
> 若有疏漏、建議或問題歡迎Email給我。
目錄
==
[TOC]
進行Pyhthon前需要知道..
==
#### 1. 要先下載Pyhton再去下載IDE
#### 2. 請挑一款適合你的介面,Jupyter、Spyder、Pycharm...等等
> 筆者是用Spyder進行Coding
#### 3. Python是利用縮排進行辨認,所以每一個空格都很重要!!!
#### 4. 註解是用# 字號進行註解,我們通常會在# 後空一格,這是默契
Pyhton 數據類型與轉換
===
Python數據類型:
---
Python基礎數據類型,可以通過type(x)查看
#### **1. Number :數字類型**
又分int(整數)、float(浮點)、complex(複數)、bool(布爾判斷,又稱邏輯)
#### **2. String :字符串**
*由任意字符所構建*
#### **3. Tuple :元組**
內容不可變動、具順序性(有index索引性質)
#### **4. List :列表**
內容不可變動、具順序性(有index索引性質)
#### **5. Set :集合**
內容可變動、不具順序性、不支持重複概念
#### **6. Dictionary:字典**
一堆的key-value組成
Python數據類型察看與轉換
---
```
# 在print語法中,直接輸出類型type
#寫法1
print(type("Hello world"))
#寫法2
string_type = type("Hello")
print(string_type)
# 將數字轉換成string
num_str = str(90)
print(type(num_str),num_str)
# 將字符串轉換成數字
num = int("11")
print(type(num),num)
# 浮點數轉整數
int_num = int(18.3994)
print(type(int_num),int_num)
```
Python運算符號與運用
=
### Python 運算符號表達:
+ 加
- 減
* 乘
/ 除
// 取整除
% 取餘數
** 指數
```
--復合運算符號
+= c+=a 等同於 c=c+a 意思為將 +連同C一起賦予a
-= c-=a 等同於 c=c-a
*= c*=a 等同於 c=c*a
/= c/=a 等同於 c=c/a
%= c%=a 等同於 c=c%a
**= c**=a 等同於 c=c**a
//= c//=a 等同於 c=c//a
```
Input語法與Print函數
=
> 利用Input語句獲得用戶訊息,並且Print出用戶所使用的訊息。
用%宣告(占用)位置,並且用S表示字符串,意思為我將要占用這個地方,等等會輸入字符串*
>有個更便捷的寫法print(f'你想印出的語句{函式}'),後面有範例
```
# # Input語法:接受鍵盤輸入內容
print("請告訴我你是誰")
name = input()
print("我知道了,你是%s" % name)
# # input可以在使用者輸出內容前,輸出提示內容
name = input("請告訴我你是誰")
print("我知道了,你是%s" % name)
# 輸入數字類型
# input不論你輸出甚麼,都會當成字符串
num = input("請告訴我你的銀行卡密碼:")
print("你的銀行卡密碼的類型是:", type(num))
# 若要輸出數字類型,就需要數據轉換
# 藉由int語句將input輸入的數據轉換成數值
num = input("請告訴我你的銀行卡密碼:")
num = int(num)
print("你的銀行卡密碼類型是:",type(num))
```
```
# 練習題 input語法練習
user_name = input("請輸入您的大名:")
user_type = input("請輸入VIP等級:")
print("您好:%s ,您是尊貴的 %s 用戶,歡迎您的光臨" % (user_name,user_type))
```
Bool(邏輯)的運算與應用
=
### 比較運算符號:
#### 符號: ==, !=, >, <, >=, <=
#### 意義:等於(要完全相等)、不等於、大於、小於、大於等於、小於等於
##### 判斷結果為1 v 0,就是TRUE or FALSE
##### 特別說明邏輯的運算:
##### And(且)、Or(或)、Iff大家都很清楚,主要是Imply(若P則Q)會比較難懂
### 若P則Q、非Q則非P:
#### 前提成立-->結論成立,P為Q的充分條件、Q為P的必要條件
#### 懶人記憶:若前提假設為假,無論結論是否為真,其判斷皆為真
| p | q | p and q | | p | q | p or q |
| --- | --- | ------- | --- | --- | --- | ------ |
| 0 | 0 | 0 | | 0 | 0 | 0 |
| 0 | 1 | 0 | | 0 | 1 | 1 |
| 1 | 0 | 0 | | 1 | 0 | 1 |
| 1 | 1 | 1 | | 1 | 1 | 1 |
| p | q | p imply q |
| --- | --- | --------- |
| 0 | 0 | 1 |
| 0 | 1 | 1 |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
```
# 定義variable 存儲的bool type數據
bool_1 = True
bool_2 = False
print(f"bool_1變量的內容是:{bool_1}, 類型是:{type(bool_1)}")
num1 = 10
num2 = 10
print(f"10 == 10的結果是:{num1 == num2}")
print(f"10 != 15的結果是:{num1 != num2}")
name1 = "itc"
name2 = "icb"
print(f"名字內的結果:{name1 == name2}")
#大於小於等於的示範
num1 = 10
num2 = 5
print(f"10 > 5 的結果是{num1 >= num2}")
print(f" 10 <5 的結果是:{num1 <= num2}")
```
迴圈
=
## 1.IF與其相關語法
### If
> 若條件為TRUE則運行;FALSE則不執行
> 在這裡我並未介紹If not語句,在後面爬蟲會重新說明
```
# if基本語法
age = 30
if age >= 18:
print("哎呀")
print("好老了喔")
# 黑馬練習題
age = input("請輸入您的年齡:")
age = int(age)
print(f"歡迎來到兒童遊樂園,兒童免費,成人收費。\n請輸入您的年齡:{age}\n")
if age >= 18:
print("您已成年,遊玩需要補票10元")
```
### If...else
>若條件為TRUE,則執行if的內容
>若條件為FALSE,則執行else的內容
```
# if,else語法
age = int(input("請輸入您的年齡: "))
if age >= 18 :
print("您已成年, 需要買票10元")
else :
print("您尚未成年,可免費進場")
# 黑馬練習題
height = int(input("請輸入您的身高(cm) : "))
if height > 120 :
print("您的身高超出120cm, 遊玩需要加票10元")
else :
print("您的身高未超出120cm, 可免費遊玩")
print("祝您遊玩愉快")
# ===================================================================
```
### If...elif...elif...else
>若第一個條件為TRUE,則執行if的內容
>若第一個條件為FALSE,判斷下個條件elif的內容,TRUE則執行,FALSE則判斷下一個elif
>若上述條件全為FALSE,則執行else內容
```
# 多條件語句if...elif...elif...else
height = int(input("請輸入您的身高(cm) : "))
vip_level = int(input("請輸入您的VIP等級 : "))
if height <120:
print("身高小於120cm , 可以免費遊玩") #滿足第一句後面就會停止
elif vip_level >3 :
print("vip級別大於3, 可以免費.")
else :
print("不好意思,條件都不滿足, 需要買票10元")
## 可以直接將variable寫進去if條件句
if int(input("請輸入您的身高(cm) : ")) <120:
print("身高小於120cm , 可以免費遊玩") #滿足第一句後面就會停止
elif int(input("請輸入您的VIP等級 : ")) >3 :
print("vip級別大於3, 可以免費.")
else :
print("不好意思,條件都不滿足, 需要買票10元")
### if...elif...elif...else語法黑馬練習題
if int(input("請輸入第一次猜想的數字: ")) == 10 :
print("答對了!")
elif int(input("不對,再猜一次: ")) == 10:
print("答對了!")
elif int(input("不對,再猜最後一次:")) != 10:
print("Sorry, 全部猜錯啦, 我想的是: 10")
```
### 多條件語句判斷
> 先用最外層IF進行判斷,接著在外層IF內還有一個IF
若內層IF為TRUE,則先執行內層IF後,再執行外層else
若內層IF為FALSE,則先執行內層else後,再執行外層else
##### 若你的身高為130cm、VIP等級為6
##### 經過程序後:
> 在最外圈IF為TRUE,身高超過限制
> 接著進入內圈判斷VIP等級為多少,VIP等級大於3
> 內層IF判斷為TRUE,Print出【你可以免費遊玩】
> 最後執行外層else,Print出【歡迎你!免費遊玩】
```
# 多層次條件句
if int(input("你的身高是多少:"))>120:
print("身高超出限制, 不可以免費")
print("但是, 如果VIP級別大於3, 可以免費")
if int(input("你的VIP級別是多少:"))>3:
print("恭喜你, VIP級別達標, 可以免費")
else:
print("sorry 你需要買票10元")
else :
print("歡迎你! 免費遊玩")
```
### 利用多次邏輯判斷,猜數字
> 這裡先行透過Import,從外面導入random這個Packages,因為我們要讓電腦隨機產生數字
> 後面會寫關於Packages的相關知識
```
### 透過三次猜測機會猜出號碼 ###
import random
num = random.randint(1, 10) # 產生1~10隨機數字
guess_num = int(input("你猜的數字:"))
if guess_num == num :
print("恭喜一次就猜對")
else:
if guess_num > num:
print("你的數字猜大了")
else:
print("你的數字猜小了")
guess_num = int(input("再次猜的數字:"))
if guess_num == num:
print("恭喜你猜對了!")
else:
if guess_num > num:
print("有夠會猜,又猜大了了不起")
else:
print("猜小了哥,沒那麼誇張吧..")
guess_num = int(input("最後一次猜的數字:"))
if guess_num == num :
print("恭喜你終於猜對了")
else:
print(f"給你機會不中用阿, 最後一次了還猜不到, 阿數字不就是 {num}")
```
## 2. For
> For 迴圈用法
> 語法:for 臨時變量 in 數據容器:
```
# for循環
name = "Hello world"
for x in name :
print(x)
黑馬練習題
定義name = "itheima is a brand of itcast"
透過for循環,找出有多少個a
name = "itheima is a brand of itcast"
x = 0
for i in name:
if i == "a" :
x +=1
print(x)
```
```
for 循環中的range語法
# 語法1
# range(num) 獲取從一個0開始倒num的序列,但不含num本身
range(5)=[0,1,2,3,4]
# 語法2
#range(num1, num2)
# 獲得一個從num1開始,倒num2結束的數字序列(不含num2本身)
# 如,range(5,10)=[5,6,7,8,9]
# 語法3
# range(num1, num2, step)獲得從num1到num2結束的數字序列(不含num2
# 本身)
# 如, range(5, 10, 2)=[5,7,9]
# 語法1
for x in range(10):
print(x)
# 語法2
for x in range(5,10):
print(x)
# 語法3
for x in range(5, 10, 2):
print(x)
for x in range(10):
print("送花")
count = 0
for i in range(100):
if i%2 == 0:
count += 1
print(count)
```
```
# for循環中的套娃使用
# 堅持表白100天,每天都送10朵花
i = 0
for i in range(1,101):
print(f"今天是向小美告白的第{i}天")
for j in range(1,11):
print(f"給小美送的第 {j} 朵玫瑰花")
print("小美我喜歡你")
print(f"第{i}天我成功了")
# 黑馬練習題
# 透過for迴圈寫出99乘法表
for i in range(1,10):
for j in range(1,10):
print(f"{j} * {i} = {i * j}\t", end = '')
print()
```
## 3. While
```
# 循環語法While
i = 0
while i < 10 :
print("我每天都要學pytohn")
i +=1
# 黑馬練習題
i = 1
sum = 0
while i <= 100 :
sum += i
i += 1
print(f"1累加到100的和為: {sum}")
```
```
## while猜數字遊戲
# 獲取範圍在1-100的隨機數字
import random
num = random.randint(1, 100)
# 定義變量,紀錄總共猜了多少次
count = 0
# 通過bool類型變量,做循環是否繼續的標記
# 利用bool完成無限次猜測的機會
flag = True
while flag :
guess_num = int(input("請輸入你猜測的數字: "))
count += 1
if guess_num == num:
print("猜中了")
# 設置Fals就是終止循環條件
flag = False
else:
if guess_num > num:
print("你猜的大了")
else:
print("你猜的小了")
print(f"你總共猜測了{count}次")
```
```
# while的套娃循環
# 外層循環:表白100天的控制
# 內層: 每天都送10朵玫瑰花
i = 1
while i <= 100:
print(f"今天是第{i}天,準備告白...")
# 內層循環
j = 1
while j <= 10:
print(f"送給小美第{j}隻玫瑰花")
j +=1
print("小美,我喜歡你")
i += 1
print(f"堅持到{i-1}天小美我喜歡你")
```
```
# 利用while列出99乘法表
# 寫法1
i = 1
while i <=9:
j= 1
while j <= i:
# 內層循環的print語法, 不換行, 通過\t製表示符號對齊
print(f"{j} * {i} = {j * i}\t", end='')
j += 1
i += 1
print() # 輸出一個換行
# =============================================================================
# 寫法2 (我比較喜歡這種輸出結果)
i = 1
while i <= 9:
j = 1
while j <= 9:
result = i * j
print(f"{i} x {j} = {result}\t", end="")
j += 1
print()
i += 1
```
## 4. If、for、continue、break
| 比較兩個語法 | 使用方式 |
| ------------ | -------- |
| continue | 結束當前迴圈並繼續執行「剩下的迴圈」 |
| break | 直接結束當前迴圈程式碼 |
```
# countine 循環
for i in range(6):
print("hello")
continue
print("world")
# countine套娃應用
for i in range(1,6):
print("hello")
for j in range(1,6):
print("world")
continue
print("你好")
print("哈哈")
# break 語法
for i in range(1,101):
print("語法1")
break
print("語法三")
print("哈哈")
for i in range(1,6):
print("hello")
for j in range(1,6):
print("world")
break
print("你好")
print("哈哈")
```
## 5. 巢式迴圈 綜合練習
> 其實前面就有巢式迴圈,就是我所打的「套娃應用」
> 就是在迴圈裡面還有迴圈
```
## 黑馬練習題 ##
# 某公司帳戶餘額有1萬元, 給20名員工發工資
# 員編從1到20, 從1開始, 一次領取工資,每人可以領1000元
# 領工資時,依照員工績效(1-10分)(隨機生成),如果低於5不發工資,換下一位
# 若工資發完了就結束發放工資
import random
account = 10000
for i in range(1,21):
num = random.randint(1, 10)
if num <5 :
print(f"員工{i}, 績效分{num}, 低於5, 不發工資, 下一位。")
else:
account -= 1000
print(f"向第{i}位員工發放工資1000元, 餘額還剩{account}元")
if account == 0:
print("工資已發完,下個月請早")
break
```
## 結語
目前小小的紀錄了一部分:
從基礎數據類型、邏輯判斷、迴圈...等,下一篇會從自製函數到數據容器的介紹與練習
:::info
**Find this document incomplete?** Leave a comment!
:::