iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
佛心分享-IT 人自學之術

30天轉職馬拉松:從0到Offer的學習計畫系列 第 17

程式語言基礎III:運算子基礎概念

  • 分享至 

  • xImage
  •  

還記得國中數學學過的那些數學符號嗎?加、減、乘、除...沒錯,就是它們!在程式語言世界裡,這些符號我們叫做 — 運算子。

今天要討論的就是這些運算子。看到熟悉的東西是不是倍感親切?其實程式設計並不像大家想像的那麼遙不可及,它就像是給電腦下達一連串的數學指令,而運算子就是其中之一。

本文將介紹賦值運算子、算術運算子、比較運算子以及邏輯運算子,由於每個語言的用法稍稍不同,故以下會用 Python 作為範例。

賦值運算子

賦值運算子用於將值賦給變量。除了基本的賦值運算子 (=),還有一些複合賦值運算子,它們結合了算術運算和賦值操作。

  • 基本賦值 (=): x = 5
  • 加法賦值 (+=): x += 3 等同於 x = x + 3
  • 減法賦值 (-=): x -= 2 等同於 x = x - 2
  • 乘法賦值 (*=): x *= 4 等同於 x = x * 4
  • 除法賦值 (/=): x /= 2 等同於 x = x / 2
  • 餘數賦值 (%=): x %= 3 等同於 x = x % 3
  • 冪次賦值 (**=): x **= 2 等同於 x = x ** 2

範例:

x = 10
print(x)  # 輸出: 10

x += 5
print(x)  # 輸出: 15

x *= 2
print(x)  # 輸出: 30

x /= 3
print(x)  # 輸出: 10.0

這些複合賦值運算子不僅使代碼更簡潔,還能提高程式的執行效率,因為它們通常被編譯成單一的機器指令。

算術運算子

算術運算子用於執行基本的數學運算。

  • 加法 (+): 5 + 3 = 8
  • 減法 (-): 10 - 4 = 6
  • 乘法 (*): 3 * 4 = 12
  • 除法 (/): 20 / 5 = 4
  • 餘數 (%): 17 % 5 = 2(17除以5的餘數)
  • 冪次 (**): 2 ** 3 = 8(2的3次方)

範例:

x = 10
y = 3
print(x + y)  # 輸出: 13
print(x * y)  # 輸出: 30

比較運算子

比較運算子用於比較兩個值,返回布林值(True或False)。

  • 等於 (==): 5 == 5 返回 True
  • 不等於 (!=): 5 != 3 返回 True
  • 大於 (>): 7 > 3 返回 True
  • 小於 (<): 2 < 8 返回 True
  • 大於等於 (>=): 5 >= 5 返回 True
  • 小於等於 (<=): 4 <= 4 返回 True

範例:

a = 10
b = 5
print(a > b)  # 輸出: True
print(a == b)  # 輸出: False

邏輯運算子

邏輯運算子用於組合多個條件,我們引用經典的文氏圖來比喻吧。

  • AND:當滿足 A 且滿足 B 時,返回 True 的結果
  • OR:當滿足 A 或滿足 B 其中一個時,返回 True 的結果
  • NOT:將返回結果的相反

範例:

x = 5
y = 10
print(x < 10 and y > 5)  # 輸出: True
print(x > 10 or y > 5)   # 輸出: True
print(not x == y)        # 輸出: True

數值 1 vs 字串 "1" 的比較

在實務上整理 Excel 資料時你可能經歷過,儲存格上顯示為 1 時,你無法馬上得知他是作為數值還是字串來儲存,必須得右鍵檢查他的儲存格格式是數值還是文字。

作為後端工程師,對於資料型別的敏銳度要求是很重要的,我們會盡可能避免不同型別的比較或運算,而「不同資料型別間的比較」這件事在不同程式語言中的判定其實是有區別的,因此我認為你可以先有個概念:

JavaScript

console.log(1 == "1");   // 輸出: true
console.log(1 === "1");  // 輸出: false

在 JavaScript 中,使用 == 在比較前會先進行類型轉換,而使用 === 則不進行類型轉換。

Python

print(1 == "1")  # 輸出: False
print(1 == int("1"))  # 輸出: True

Python 在比較前也不會進行類型轉換,但他不會報錯,只會認定是不同型別而返回 False,需要額外轉換型別才能比較不同型別。

Go (Golang)

fmt.Println(1 == 1)  // 輸出: true
// fmt.Println(1 == "1")  // 編譯錯誤
i, _ := strconv.Atoi("1")
fmt.Println(1 == i)  // 輸出: true

Go 作為靜態語言,他會嚴格要求類型匹配,否則會報錯,故需要額外轉換型別在進行比較。

這些算是程式語言中的基礎,接下來幾天讓我們繼續深入探索下去~


上一篇
程式語言基礎II:陣列和物件
下一篇
程式語言基礎IV:掌控程式的工作流程
系列文
30天轉職馬拉松:從0到Offer的學習計畫30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言