Python 字串可以進行數學運算嗎?


從技術上講,您可以在 Python 字串上執行一些數學運算,但結果可能與您預期不同。以下是一些示例

使用 + 連線字串

示例

在這個例子中,我們使用 + 運算子連線兩個字串。這是可行的,因為 + 運算子在 Python 中被過載,可以用於字串和數字。當我們對字串使用 + 運算子時,它會將它們連線起來形成一個新的字串。

string1 = "Lorem "
string2 = "Ipsum"
result = string1 + string2
print(result)

輸出

Lorem Ipsum

使用 * 乘以字串

示例

在這個例子中,我們使用 * 運算子將一個字串乘以一個整數。這與 + 運算子類似,* 運算子在 Python 中被過載,可以用於字串和數字。當我們對字串和整數使用 * 運算子時,它會將字串重複指定的次數。

string1 = "Hello"
result = string1 * 3
print(result)

輸出

HelloHelloHello

對字串執行算術運算(無效)

示例

在這個例子中,我們嘗試將兩個表示數字的字串加在一起。但是,Python 並沒有執行加法運算,而是將這兩個字串連線起來,得到字串 "52"。這是因為 Python 將字串視為文字,而不是數字,所以它不會對它們執行算術運算。

string1 = "5"
string2 = "2"
result = string1 + string2
print(result)

輸出

52

使用 eval() 函式

eval() 函式可以用來評估 Python 中以字串形式編寫的數學表示式。以下四個程式碼示例及其說明演示瞭如何使用 eval() 函式對字串表示式執行數學運算。

兩個數字的加法

示例

在這個例子中,我們定義了一個表示兩個數字相加的字串表示式。然後,我們使用 eval() 函式來評估表示式並將結果儲存在 result 變數中。最後,我們將結果列印到控制檯。

expression = "3 + 5"
result = eval(expression)
print(result)

輸出

8

兩個數字的乘法

示例

在這個例子中,我們定義了一個表示兩個數字相乘的字串表示式。然後,我們使用 eval() 函式來評估表示式並將結果儲存在 result 變數中。最後,我們將結果列印到控制檯。

expression = "4 * 6"
result = eval(expression)
print(result)

輸出

24

複雜表示式的評估

示例

在這個例子中,我們定義了一個表示更復雜的數學表示式的字串表示式,其中包含多個運算。然後,我們使用 eval() 函式來評估表示式並將結果儲存在 result 變數中。最後,我們將結果列印到控制檯。

expression = "2 * (4 + 6) / 3 - 5"
result = eval(expression)
print(result)

輸出

1.66666667

無效表示式的錯誤處理

示例

在這個例子中,我們定義了一個包含除以零運算的字串表示式,這在數學中是不允許的。我們使用 try-except 塊來捕獲當 eval() 函式嘗試評估表示式時引發的 ZeroDivisionError 異常。我們沒有列印錯誤訊息,而是向控制檯列印自定義錯誤訊息,以告知使用者不允許除以零。

expression = "3 / 0"
try:
    result = eval(expression)
except ZeroDivisionError:
    print("Division by zero is not allowed!")
else:
    print(result)

輸出

Division by zero is not allowed!

總之,雖然您可以在 Python 字串上執行一些數學運算,但瞭解其侷限性和工作原理非常重要,以避免出現意外結果。通常最好對數值使用數學運算,對字串使用字串運算。

我們發現可以使用 eval() 函式對字串表示式執行數學運算。但是,在使用它時必須小心,因為它也可以評估潛在的危險程式碼。始終確保只評估可信程式碼並驗證任何使用者輸入,以防止潛在的安全漏洞。

更新於: 2023年8月10日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.