1. A + B 問題I
前言
本篇作為課程第一篇,主要是對Python基礎語法進行掃盲,本節課會學習到下面知識:
輸入
本道題目的工作任務很簡單,只是計算兩個數的和,但是在計算之前,我們首先要明確的一個問題就是如何把這兩個資料輸入到計算機中,並由程式讀取呢?
輸入當然是使用鍵盤之類的輸入裝置完成,這也意味著有一段程式讀取了我們的兩個輸入,而在Python中,這個獲取輸入的操作由內建的函式input()
來完成。
變數
解決了輸入問題之後,我們還有另一個問題需要解決,那就是:系統怎麼認識和標識我們輸入的數字呢?比如說,我們想要輸入兩個數字100、100,電腦系統內部如果使用100來標識100,那另外一個100應該怎麼標識呢?
所以就需要在系統內部使用某樣東西來指代和標識輸入的內容,比如x = 100、 y = 100
, 用 x 指代100,用 y 指代另一個100,這裡的x, y
在數學中被稱為變數,在程式設計中也被稱為變數,用來指代內容。
不過在數學中有整數、小數之分,此外我們還經常輸入一段文字資料,那計算機在儲存的時候也應該知道我們輸入的 x 是一個什麼型別的數字或者文字,這就是我們要講的資料型別。
資料型別
Python中有一些常見的基礎資料型別:這裡我們先進行簡單的介紹,你現在只需知道這些型別是什麼意思即可。
- 數字型別:用於表示數字,包括整數和浮點數兩種型別。
- 整數型別
int
:即我們常用的整數值,比如 - 1、0 、1就是整數。 - 浮點數型別
float
: 用於表示帶有小數點的數值,比如3.14、2.0。
- 整數型別
- 布林值型別
bool
:用於表示邏輯值真和假,即計算機世界中的0和1,True表示真,False表示假, 同時,True
也和 1相等,False
也和 0 相等,並且True
和False
能參與到數字型別的運算當中。 - 字串型別
string
:Python中的字串使用單引號''
或者雙引號""
擴起來,表示一段文字資料,比如字串"hello"
、"你好"。
變數賦值
不過空有變數而沒有值可不行,Python中的變數不需要提前宣告,但是在使用前必須賦值,變數只有賦值才會被建立,在數學中,我們透過等於符號=
來判定兩個數字是否相等,比如1 = 3
, 2 = 5
來判斷, 但是在程式設計中,一個=
往往意味著把右邊的值賦值給左邊的意思,比如i = 3
,就是將 值 3 賦值給左側的 i
賦值的過程是關聯的過程,就像“連連看”一樣,把“值”和“變數”連在一起。
name = "張三" # 表示把 右側的值 "張三"字串賦值給左側的 變數 name
age = 22 # 表示把 右側的值 22 賦值給左側的 變數 age
height = 1.68 # 定義一個浮點數,賦值給左側的 變數 height
而且Python是一種動態型別語言,這意味著變數的資料型別可以隨著分配給它們的值而改變。
x = 22 # x是一個整數
x = "張三" # x現在是一個字串
在上面的程式碼中,x
首先被賦值為整數 22,然後再次賦值為字串"張三",變數 x
的資料型別也隨之改變。
在瞭解了變數賦值和input()
的概念之後,我們就可以開始寫輸入的程式碼了。
# input()接收輸入的內容,然後與變數 user_input 相關聯
user_input = input()
上面的程式碼就表示把使用者輸入的資料存放到變數 user_input
裡,比如使用者輸入了一串文字"hello world"(以Enter鍵結束),就把文字字串的內容存到user_input
裡, 需要注意的是input
接收的總是一個字串,哪怕你輸入了數字,比如你輸入了123,但是user_input
接收的是"123"
字串123,但沒關係,你可以使用型別轉換int()
將之轉換成整數。
# int()將input()接收的字串轉換成整數
user_input = int(input()) # 輸入整數3, input()接收的內容是 "3", int("3")轉為整數3
此外,你還可以在input
裡面填充一些資訊,作為使用者輸入的提示:
user_input = input("請輸入一些文字: ")
上面的程式碼會在終端中顯示 "請輸入一些文字: ",然後等待使用者的輸入。之後輸入的內容會被儲存在 user_input
變數中。
輸出
在Python中,輸出也非常的簡單,只需要使用print()
,在()
內填充需要輸出的內容,內容就會顯示在螢幕(終端)上。
# 輸出1
print(1)
# 不會顯示 1 + 2, Python會先自動計算出結果再顯示,顯示結果為3
print(1 + 2)
print()
函式可以和input()
函式結合起來,實現和使用者的互動。
name = input("請輸入您的名字: ") # 提示使用者輸入名字
print(name) # 在螢幕上輸出你之前輸入的內容
計算 a + b
假設我們現在只有一組資料,即你只需要輸入一個 a 和 一個 b, a 和 b 之間透過空格隔開,如何計算這兩個數的值呢?
首先應該使用input()
接收使用者的一行輸入
data = input()
不過input()
遇到空格可不會停止接收輸入,並且輸入的是字串。
假設你輸入了3 和 4,即如下的輸入。
3 4
此時 data 資料接受的卻是字串"3 4"
。
那我們就需要想辦法把 3 和 4 拆開,好在字串提供了這樣的方法split
供我們使用
# input()表示輸入的內容,input().split()表示將輸入的內容根據空格拆分。
data = input().split()
split
方法用於將一個字串分割成多個小的子字串,並返回一個列表(下節課中我們會講到這種資料型別),列表包含分割後的子字串。預設情況下,split()
方法使用空格字元作為分隔符,將字串分成單詞。你也可以指定自定義的分隔符作為引數。
persons = "Mike Jerry Tom"
result = persons.split() # 將字串使用預設分隔符(空格)拆分成多個小的子字串
print(result) # 輸出: ['Mike', 'Jerry', 'Tom']
persons = "Mike,Jerry,Tom"
result = persons.split(",") # 將字串使用 "," 拆分成多個小的子字串
print(result) # 輸出: ['Mike', 'Jerry', 'Tom']
總之,split()
的作用就是將一串長的字串透過分割符號進行分割,分割成一個個小的字串, 如果是"3 4"
按照空格進行分割,會分割成["3", "4"]
。
之前我們提到過,可以透過資料型別轉換int()
,將"3"轉換成整數3, 那接下來的問題就是如何拿到 "3" 和 "4"呢?
列表透過索引[]
進行訪問,並且索引從0開始,索引0表示第一個元素,索引1表示第二個元素,即透過data[0]
和data[1]
可以分別拿到第一個元素"3"和第二個元素"4"。
# data[0]表示第一個元素,int()進行資料型別轉換,轉換成整數型別
# data[1]表示第二個元素,int()進行資料型別轉換,轉換成整數型別
# res = int(data[0]) + int(data[1]) 表示兩個資料進行相加, 最後賦值給res
res = int(data[0]) + int(data[1])
再將res
輸出即可,完整的程式碼如下
data = input().split() # 將輸入字串根據空格進行分割,得到資料列表
res = int(data[0])+int(data[1]) # 拿到元素後,進行資料型別轉換,累加後賦值給變數res
print(res)
迴圈輸入和輸出
上面的程式碼雖然完成了 A+B 的輸入、計算和輸出問題,但是並不能滿足多組資料的計算要求,這需要學習新的概念“迴圈”。
while
迴圈是一種在滿足特定條件時重複執行程式碼塊的控制結構,你可以透過設定while
迴圈的條件部分為真(布林值True
), 這樣,迴圈將一直執行,直到你使用break
語句來終止迴圈。
請注意:Python對於程式的縮排非常敏感,它使用縮排來表示程式碼塊的範圍,而不是大括號
{}
, 在同一個程式碼塊中,所有程式碼行的縮排級別必須相同,這需要格外注意。
while True:
data = input().split()
res = int(data[0])+int(data[1])
print(res)
在while True
的控制下,執行輸入、計算、輸出的三行程式碼會持續不斷的執行,你輸入一行資料,程式就處理一行資料,但是資料的輸入是不會一直進行下去的,當輸入結束時,迴圈也應該終止掉。
這可以使用try程式碼塊
來進行處理,try
中的程式碼會被嘗試執行,如果沒有發生錯誤,則正常執行,使用者停止輸入後,輸入的內容不能正確地分割成兩個整數,或者其他可能的錯誤發生,就會引起程式異常,這時就會由except
捕獲異常並執行異常處理程式碼
while True:
try:
# 嘗試執行這裡的程式
except:
# 捕獲異常,執行異常處理程式碼
break
這裡的break
是一個在迴圈內部使用的語句,用於終止當前迴圈並繼續執行迴圈之後的程式碼,通常用於在迴圈中的某個條件得到滿足時,提前結束迴圈,這裡使用break
跳出迴圈,結束程式的執行。
所以本道題目完整的程式碼如下:
💡溫馨提示: 一定要自己手敲,不要複製貼上,只有實踐才能加深印象
# while True表示迴圈
while True:
# 嘗試執行這裡的程式,遇到異常時執行except中的程式
try:
# 將輸入的字串分割成字元列表
data = input().split()
# 取得第一位和第二位元素後將之轉為int型別,並相加
res = int(data[0])+int(data[1])
# 列印結果res
print(res)
except:
# 遇到異常時,退出迴圈
break
擴充套件:多重賦值
除了a = 10
這種賦值方式外,Python還允許同時為多個變數進行賦值操作,這稱為多重賦值,具體有以下幾種。
# 1. 多個變數同時賦相同的值
a = b = c = 42 # 變數 a、b 和 c都被賦予了相同的值
# 2. 多個變數同時賦不同的值
x, y, z = 1, 2, 3 # 變數 x 被賦值為1,變數 y 被賦值為2,變數 z 被賦值為3
# 3. 還可以使用多重賦值獲取列表中的值。
a, b = [1, 2] # 將列表中的元素按照順序賦給 a 和 b,a 的值為 1,b 的值為 2。
擴充套件:模組
雖然我們現在只寫了幾行程式碼,但是以後我們會面對上千甚至上萬行程式碼,為了方便組織和管理,這些程式碼要分屬不同的模組,就像圖書館裡的書要分不同的類一樣。在Python工程化開發中,我們會建立很多個python
檔案,字尾名為.py
(就像一個個word檔案一樣),從而將一個完整的程式分解為一個一個小的模組(一個python
檔案就是一個模組),透過將模組組合和複用,從而搭建出一個完整的程式。
而且,Python中有許多內建的模組,比如math、sys
等,這些模組提供了一些內建功能方便使用,比如math
模組就提供了許多有用的數學運算。
需要注意的是,使用模組前,要使用import
語句來匯入:
一般情況下,
import
語句都會統一寫在程式的開頭,而每一個模組內部都有一個__name__
屬性,透過這個屬性可以獲取到模組的名字。
# 匯入math模組
import math
# 使用模組中的定義的變數或者函式的語法格式為:模組.變數/函式
print(math.sqrt(25)) # 使用math模組中的sqrt函式, 表示開平方根
或者你還可以使用from
語句匯入模組中的特定函式、變數,然後直接使用。
# 從 math 模組中 匯入 sqrt
from math import sqrt
print(sqrt(25)) # 直接使用sqrt函式,不用在前面加上 math
擴充套件:主模組
在Python中,主模組是執行Python程式的入口點, 一個程式只會有一個主模組,主模組的名稱是__main__
, 它的書寫有一個固定的格式:
這裡只是對主模組做了簡短的介紹,目前你只需要知道主模組是程式的入口並且知道如何書寫主模組即可。
# 表示這是主模組
if __name__ == "__main__":
# 主模組程式
總結
本文引用了博主”程式碼隨想錄“的部分文章,可以關注關注原作者:程式碼隨想錄
作為一個 Python 語言的初學者,本節課我們使用 Python 程式解決了A+B
問題,在這個過程中我們瞭解了輸入、輸出、變數、資料型別、迴圈、多重賦值、模組等基礎概念,並能使用迴圈控制多組資料的輸入和輸出,這是一個良好的開始,下節課,我們會對迴圈做一個重新解釋,相信你對本節課的一些疑問在下節內容中會得到解答。