Python基礎(二):多文件項目、註釋、算數運算符、程序執行原理和變量的基本使用

一、多文件項目的演練

  • 開發 項目 就是開發一個 專門解決一個複雜業務功能的軟件
  • 通常每 一個項目 就具有一個 獨立專屬的目錄,用於保存 所有和項目相關的文件
    • 一個項目通常會包含 很多源文件

目標

  • 在項目中添加多個文件,並且設置文件的執行

多文件項目演練

  1. 01_Python基礎 項目中新建一個 hm_02_第2個Python程序.py
  2. hm_02_第2個Python程序.py 文件中添加一句 print("hello")
  3. 點擊右鍵執行 hm_02_第2個Python程序.py

在這裏插入圖片描述

提示

  • PyCharm 中,要想讓哪一個 Python 程序能夠執行,必須首先通過 鼠標右鍵的方式執行 一下
  • 對於初學者而言,在一個項目中設置多個程序可以執行,是非常方便的,可以方便對不同知識點的練習和測試
  • 對於商業項目而言,通常在一個項目中,只有一個 可以直接執行的 Python 源程序

二、註釋

目標

  • 註釋的作用
  • 單行註釋(行註釋)
  • 多行註釋(塊註釋)

01. 註釋的作用

使用用自己熟悉的語言,在程序中對某些代碼進行標註說明,增強程序的可讀性

在這裏插入圖片描述

02. 單行註釋(行註釋)

  • # 開頭,# 右邊的所有東西都被當做說明文字,而不是真正要執行的程序,只起到輔助說明作用

  • 示例代碼如下:

# 這是第一個單行註釋
print("hello python")

爲了保證代碼的可讀性,# 後面建議先添加一個空格,然後再編寫相應的說明文字

在代碼後面增加的單行註釋

  • 在程序開發時,同樣可以使用 # 在代碼的後面(旁邊)增加說明性的文字

  • 但是,需要注意的是,爲了保證代碼的可讀性註釋和代碼之間 至少要有 兩個空格

  • 示例代碼如下:

print("hello python")  # 輸出 `hello python`

03. 多行註釋(塊註釋)

  • 如果希望編寫的 註釋信息很多,一行無法顯示,就可以使用多行註釋

  • 要在 Python 程序中使用多行註釋,可以用 一對 連續的 三個 引號(單引號和雙引號都可以)

  • 示例代碼如下:

"""
這是一個多行註釋

在多行註釋之間,可以寫很多很多的內容……
""" 
print("hello python")

什麼時候需要使用註釋?

  1. 註釋不是越多越好,對於一目瞭然的代碼,不需要添加註釋
  2. 對於 複雜的操作,應該在操作開始前寫上若干行註釋
  3. 對於 不是一目瞭然的代碼,應在其行尾添加註釋(爲了提高可讀性,註釋應該至少離開代碼 2 個空格)
  4. 絕不要描述代碼,假設閱讀代碼的人比你更懂 Python,他只是不知道你的代碼要做什麼

在一些正規的開發團隊,通常會有 代碼審覈 的慣例,就是一個團隊中彼此閱讀對方的代碼

關於代碼規範

任何語言的程序員,編寫出符合規範的代碼,是開始程序生涯的第一步

三、算數運算符

計算機,顧名思義就是負責進行 數學計算 並且 存儲計算結果 的電子設備

目標

  • 算術運算符的基本使用

01. 算數運算符

  • 算數運算符是 運算符的一種
  • 是完成基本的算術運算使用的符號,用來處理四則運算
運算符 描述 實例
+ 10 + 20 = 30
- 10 - 20 = -10
* 10 * 20 = 200
/ 10 / 20 = 0.5
// 取整除 返回除法的整數部分(商) 9 // 2 輸出結果 4
% 取餘數 返回除法的餘數 9 % 2 = 1
** 又稱次方、乘方,2 ** 3 = 8
  • 在 Python 中 * 運算符還可以用於字符串,計算結果就是字符串重複指定次數的結果
In [1]: "-" * 50
Out[1]: '----------------------------------------' 

02. 算數運算符的優先級

  • 和數學中的運算符的優先級一致,在 Python 中進行數學計算時,同樣也是:

    • 先乘除後加減
    • 同級運算符是 從左至右 計算
    • 可以使用 () 調整計算的優先級
  • 以下表格的算數優先級由高到最低順序排列

運算符 描述
** 冪 (最高優先級)
* / % // 乘、除、取餘數、取整除
+ - 加法、減法
  • 例如:
    • 2 + 3 * 5 = 17
    • (2 + 3) * 5 = 25
    • 2 * 3 + 5 = 11
    • 2 * (3 + 5) = 16

四、程序執行原理(科普)

目標

  • 計算機中的 三大件
  • 程序執行的原理
  • 程序的作用

01. 計算機中的三大件

計算機中包含有較多的硬件,但是一個程序要運行,有 三個 核心的硬件,分別是:

  1. CPU
    • 中央處理器,是一塊超大規模的集成電路
    • 負責 處理數據計算
  2. 內存
    • 臨時 存儲數據(斷電之後,數據會消失)
    • 速度快
    • 空間小(單位價格高)
  3. 硬盤
    • 永久 存儲數據
    • 速度慢
    • 空間大(單位價格低)
CPU 內存 硬盤
在這裏插入圖片描述 在這裏插入圖片描述 在這裏插入圖片描述

思考題

  1. 計算機中哪一個硬件設備負責執行程序?
    • CPU
  2. 內存 的速度快還是 硬盤 的速度快?
    • 內存
  3. 我們的程序是安裝在內存中的,還是安裝在硬盤中的?
    • 硬盤
  4. 我買了一個內存條,有 500G 的空間!!!,這句話對嗎?
    • 不對,內存條通常只有 4G / 8G / 16G / 32G
  5. 計算機關機之後,內存中的數據都會消失,這句話對嗎?
    • 正確

02. 程序執行的原理

在這裏插入圖片描述

  1. 程序 運行之前,程序是 保存在硬盤 中的
  2. 當要運行一個程序時
    • 操作系統會首先讓 CPU 把程序複製到 內存
    • CPU 執行 內存 中的 程序代碼

程序要執行,首先要被加載到內存

2.1 Python 程序執行原理

在這裏插入圖片描述

  1. 操作系統會首先讓 CPUPython 解釋器 的程序複製到 內存
  2. Python 解釋器 根據語法規則,從上向下CPU 翻譯 Python 程序中的代碼
  3. CPU 負責執行翻譯完成的代碼

Python 的解釋器有多大?

  • 執行以下終端命令可以查看 Python 解釋器的大小
# 1. 確認解釋器所在位置
$ which python

# 2. 查看 python 文件大小(只是一個軟鏈接)
$ ls -lh /usr/bin/python

# 3. 查看具體文件大小
$ ls -lh /usr/bin/python2.7

提示:建立 軟鏈接 的目的,是爲了方便使用者不用記住使用的解釋器是 哪一個具體版本

03. 程序的作用

程序就是 用來處理數據 的!

  • 新聞軟件 提供的 新聞內容、評論…… 是數據
  • 電商軟件 提供的 商品信息、配送信息…… 是數據
  • 運動類軟件 提供的 運動數據…… 是數據
  • 地圖類軟件 提供的 地圖信息、定位信息、車輛信息…… 是數據
  • 即時通訊軟件 提供的 聊天信息、好友信息…… 是數據
  • ……

3.1 思考 QQ 程序的啓動過程

  1. QQ 在運行之前,是保存在 硬盤 中的
  2. 運行之後,QQ 程序就會被加載到 內存 中了

在這裏插入圖片描述

3.2 思考 QQ 程序的 登錄 過程

  1. 讀取用戶輸入的 QQ 號碼
  2. 讀取用戶輸入的 QQ 密碼
  3. QQ 號碼QQ 密碼 發送給騰訊的服務器,等待服務器確認用戶信息

思考 1

在 QQ 這個程序將 QQ 號碼QQ 密碼 發送給服務器之前,是否需要先存儲一下 QQ 號碼 和 密碼?

答案

肯定需要!—— 否則 QQ 這個程序就不知道把什麼內容發送給服務器了!

思考 2

QQ 這個程序把 QQ 號碼QQ 密碼 保存在哪裏?

答案

保存在 內存 中,因爲 QQ 程序自己就在內存中

思考 3

QQ 這個程序是怎麼保存用戶的 QQ 號碼QQ 密碼 的?

答案

  1. 在內存中爲 QQ 號碼QQ 密碼 各自分配一塊空間
    • 在 QQ 程序結束之前,這兩塊空間是由 QQ 程序負責管理的,其他任何程序都不允許使用
    • 在 QQ 自己使用完成之前,這兩塊空間始終都只負責保存 QQ 號碼QQ 密碼
  2. 使用一個 別名 標記 QQ 號碼QQ 密碼 在內存中的位置

在這裏插入圖片描述

  • 在程序內部,爲 QQ 號碼QQ 密碼 在內存中分配的空間就叫做 變量
  • 程序就是用來處理數據的,而變量就是用來存儲數據的

五、變量的基本使用

程序就是用來處理數據的,而變量就是用來存儲數據的

目標

  • 變量定義
  • 變量的類型
  • 變量的命名

01. 變量定義

  • 在 Python 中,每個變量 在使用前都必須賦值,變量 賦值以後 該變量 纔會被創建
  • 等號(=)用來給變量賦值
    • = 左邊是一個變量名
    • = 右邊是存儲在變量中的值
變量名 =

變量定義之後,後續就可以直接使用了

1) 變量演練1 —— iPython

# 定義 qq_number 的變量用來保存 qq 號碼
In [1]: qq_number = "1234567"

# 輸出 qq_number 中保存的內容
In [2]: qq_number
Out[2]: '1234567'

# 定義 qq_password 的變量用來保存 qq 密碼
In [3]: qq_password = "123"

# 輸出 qq_password 中保存的內容
In [4]: qq_password
Out[4]: '123'

使用交互式方式,如果要查看變量內容,直接輸入變量名即可,不需要使用 print 函數

2) 變量演練 2 —— PyCharm

# 定義 qq 號碼變量
qq_number = "1234567"

# 定義 qq 密碼變量
qq_password = "123"

# 在程序中,如果要輸出變量的內容,需要使用 print 函數
print(qq_number)
print(qq_password)

使用解釋器執行,如果要輸出變量的內容,必須要要使用 print 函數

3) 變量演練 3 —— 超市買蘋果

  • 可以用 其他變量的計算結果 來定義變量
  • 變量定義之後,後續就可以直接使用了

需求

  • 蘋果的價格是 8.5 元/斤
  • 買了 7.5 斤 蘋果
  • 計算付款金額
# 定義蘋果價格變量
price = 8.5

# 定義購買重量
weight = 7.5

# 計算金額
money = price * weight

print(money)

思考題

  • 如果 只要買蘋果,就返 5 塊錢
  • 請重新計算購買金額
# 定義蘋果價格變量
price = 8.5

# 定義購買重量
weight = 7.5

# 計算金額
money = price * weight

# 只要買蘋果就返 5 元
money = money - 5
print(money)

提問

  • 上述代碼中,一共定義有幾個變量?
    • 三個:priceweightmoney
  • money = money - 5 是在定義新的變量還是在使用變量?
    • 直接使用之前已經定義的變量
    • 變量名 只有在 第一次出現 纔是 定義變量
    • 變量名 再次出現,不是定義變量,而是直接使用之前定義過的變量
  • 在程序開發中,可以修改之前定義變量中保存的值嗎?
    • 可以
    • 變量中存儲的值,就是可以

02. 變量的類型

  • 在內存中創建一個變量,會包括:
    1. 變量的名稱
    2. 變量保存的數據
    3. 變量存儲數據的類型
    4. 變量的地址(標示)

2.1 變量類型的演練 —— 個人信息

需求

  • 定義變量保存小明的個人信息
  • 姓名:小明
  • 年齡:18
  • 性別:男生
  • 身高:1.75
  • 體重:75.0 公斤

利用 單步調試 確認變量中保存數據的類型

提問

  1. 在演練中,一共有幾種數據類型?
    • 4 種
    • str —— 字符串
    • bool —— 布爾(真假)
    • int —— 整數
    • float —— 浮點數(小數)
  2. Python 中定義變量時需要指定類型嗎?
    • 不需要
    • Python 可以根據 = 等號右側的值,自動推導出變量中存儲數據的類型

2.2 變量的類型

  • Python 中定義變量是 不需要指定類型(在其他很多高級語言中都需要)
  • 數據類型可以分爲 數字型非數字型
  • 數字型
    • 整型 (int)
    • 浮點型(float
    • 布爾型(bool
      • True 非 0 數 —— 非零即真
      • False 0
    • 複數型 (complex)
      • 主要用於科學計算,例如:平面場問題、波動問題、電感電容等問題
  • 非數字型
    • 字符串
    • 列表
    • 元組
    • 字典

提示:在 Python 2.x 中,整數 根據保存數值的長度還分爲:

  • int(整數)
  • long(長整數)
  • 使用 type 函數可以查看一個變量的類型
In [1]: type(name)

2.3 不同類型變量之間的計算

1) 數字型變量 之間可以直接計算

  • 在 Python 中,兩個數字型變量是可以直接進行 算數運算的
  • 如果變量是 bool 型,在計算時
    • True 對應的數字是 1
    • False 對應的數字是 0

演練步驟

  1. 定義整數 i = 10
  2. 定義浮點數 f = 10.5
  3. 定義布爾型 b = True
  • 在 iPython 中,使用上述三個變量相互進行算術運算

2) 字符串變量 之間使用 + 拼接字符串

  • 在 Python 中,字符串之間可以使用 + 拼接生成新的字符串
In [1]: first_name = "三"

In [2]: last_name = "張"

In [3]: first_name + last_name
Out[3]: '三張'

3) 字符串變量 可以和 整數 使用 * 重複拼接相同的字符串

In [1]: "-" * 50
Out[1]: '--------------------------------------------------'

4) 數字型變量字符串 之間 不能進行其他計算

In [1]: first_name = "zhang"

In [2]: x = 10

In [3]: x + first_name
---------------------------------------------------------------------------
TypeError: unsupported operand type(s) for +: 'int' and 'str'
類型錯誤:`+` 不支持的操作類型:`int` 和 `str`

2.4 變量的輸入

  • 所謂 輸入,就是 用代碼 獲取 用戶通過 鍵盤 輸入的信息
  • 例如:去銀行取錢,在 ATM 上輸入密碼
  • 在 Python 中,如果要獲取用戶在 鍵盤 上的輸入信息,需要使用到 input 函數

1) 關於函數

  • 一個 提前準備好的功能(別人或者自己寫的代碼),可以直接使用,而 不用關心內部的細節
  • 目前已經學習過的函數
函數 說明
print(x) 將 x 輸出到控制檯
type(x) 查看 x 的變量類型

2) input 函數實現鍵盤輸入

  • 在 Python 中可以使用 input 函數從鍵盤等待用戶的輸入
  • 用戶輸入的 任何內容 Python 都認爲是一個 字符串
  • 語法如下:
字符串變量 = input("提示信息:")

3) 類型轉換函數

函數 說明
int(x) 將 x 轉換爲一個整數
float(x) 將 x 轉換到一個浮點數

4) 變量輸入演練 —— 超市買蘋果增強版

需求

  • 收銀員輸入 蘋果的價格,單位:元/斤
  • 收銀員輸入 用戶購買蘋果的重量,單位:
  • 計算並且 輸出 付款金額
演練方式 1
# 1. 輸入蘋果單價
price_str = input("請輸入蘋果價格:")

# 2. 要求蘋果重量
weight_str = input("請輸入蘋果重量:")

# 3. 計算金額
# 1> 將蘋果單價轉換成小數
price = float(price_str)

# 2> 將蘋果重量轉換成小數
weight = float(weight_str)

# 3> 計算付款金額
money = price * weight

print(money)

提問

  1. 演練中,針對 價格 定義了幾個變量?
    • 兩個
    • price_str 記錄用戶輸入的價格字符串
    • price 記錄轉換後的價格數值
  2. 思考 —— 如果開發中,需要用戶通過控制檯 輸入 很多個 數字,針對每一個數字都要定義兩個變量,方便嗎
演練方式 2 —— 買蘋果改進版
  1. 定義 一個 浮點變量 接收用戶輸入的同時,就使用 float 函數進行轉換
price = float(input("請輸入價格:"))
  • 改進後的好處:
  1. 節約空間,只需要爲一個變量分配空間
  2. 起名字方便,不需要爲中間變量起名字
  • 改進後的“缺點”:
  1. 初學者需要知道,兩個函數能夠嵌套使用,稍微有一些難度

提示

  • 如果輸入的不是一個數字,程序執行時會出錯,有關數據轉換的高級話題,後續會講!

2.5 變量的格式化輸出

蘋果單價 9.00 元/斤,購買了 5.00 斤,需要支付 45.00

  • 在 Python 中可以使用 print 函數將信息輸出到控制檯
  • 如果希望輸出文字信息的同時,一起輸出 數據,就需要使用到 格式化操作符
  • % 被稱爲 格式化操作符,專門用於處理字符串中的格式
    • 包含 % 的字符串,被稱爲 格式化字符串
    • % 和不同的 字符 連用,不同類型的數據 需要使用 不同的格式化字符
格式化字符 含義
%s 字符串
%d 有符號十進制整數,%06d 表示輸出的整數顯示位數,不足的地方使用 0 補全
%f 浮點數,%.2f 表示小數點後只顯示兩位
%% 輸出 %
  • 語法格式如下:
print("格式化字符串" % 變量1)

print("格式化字符串" % (變量1, 變量2...))

格式化輸出演練 —— 基本練習

需求

  1. 定義字符串變量 name,輸出 我的名字叫 小明,請多多關照!
  2. 定義整數變量 student_no,輸出 我的學號是 000001
  3. 定義小數 priceweightmoney,輸出 蘋果單價 9.00 元/斤,購買了 5.00 斤,需要支付 45.00 元
  4. 定義一個小數 scale,輸出 數據比例是 10.00%
print("我的名字叫 %s,請多多關照!" % name)
print("我的學號是 %06d" % student_no)
print("蘋果單價 %.02f 元/斤,購買 %.02f 斤,需要支付 %.02f 元" % (price, weight, money))
print("數據比例是 %.02f%%" % (scale * 100))

課後練習 —— 個人名片

需求

  • 在控制檯依次提示用戶輸入:姓名公司職位電話郵箱
  • 按照以下格式輸出:
**************************************************
公司名稱

姓名 (職位)

電話:電話
郵箱:郵箱
**************************************************

實現代碼如下:

"""
在控制檯依次提示用戶輸入:姓名、公司、職位、電話、電子郵箱
"""
name = input("請輸入姓名:")
company = input("請輸入公司:")
title = input("請輸入職位:")
phone = input("請輸入電話:")
email = input("請輸入郵箱:")

print("*" * 50)
print(company)
print()
print("%s (%s)" % (name, title))
print()
print("電話:%s" % phone)
print("郵箱:%s" % email)
print("*" * 50)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章