Python 中數字與文字的結合:新手指南

更新日期: 2024 年 9 月 18 日

在 Python 編碼中,將數字文字(字串)結合是非常常見的操作,無論是輸出結果、生成動態訊息,還是處理用戶輸入。

本篇文章將詳細介紹,如何在 Python 中有效地將數字與文字結合,適合新手學習和參考。

基本概念

在開始之前,了解 Python 中的數據類型非常重要。主要涉及到以下兩種:

  • 數字型別:如整數(int)、浮點數(float)
  • 字串型別:以引號(’ 或 “)包裹的文字

直接將數字與字串相加會導致錯誤,因為 Python 無法直接將不同型別的數據結合。

age = 25
message = "我的年齡是 " + age  # 這會引發 TypeError

錯誤訊息:

TypeError: can only concatenate str (not "int") to str

將數字轉換為字串

為了將數字與字串結合,我們需要先將數字轉換為字串。可以使用內建的 str() 函數。

age = 25
message = "我的年齡是 " + str(age)
print(message)

輸出:

我的年齡是 25

str() 函數

str(object) 會將指定的對象轉換為字串。

number = 3.14
text = str(number)
print(text)        # 輸出:3.14
print(type(text))  # 輸出:<class 'str'>

使用字串格式化

字串格式化是更優雅且靈活的方式來結合數字與文字。Python 提供了多種字串格式化的方法。

百分號 % 格式化

這是早期 Python 的格式化方式。

name = "小明"
score = 95
message = "學生 %s 的成績是 %d" % (name, score)
print(message)

輸出:

學生 小明 的成績是 95
  • %s:字串
  • %d:整數
  • %f:浮點數

str.format() 方法

str.format() 提供了更強大的格式化功能。

name = "小明"
score = 95.5
message = "學生 {} 的成績是 {:.1f}".format(name, score)
print(message)

輸出:

學生 小明 的成績是 95.5
  • {}:佔位符,format() 中的參數依次填入
  • {:.1f}:格式化浮點數,保留一位小數

F-字串(格式化字串字面值)

從 Python 3.6 開始,引入了更加簡潔的 F-字串。

name = "小明"
score = 95.5
message = f"學生 {name} 的成績是 {score} 分"
print(message)

輸出:

學生 小明 的成績是 95.5

可以直接在 {} 中進行運算或調用函數。

a = 5
b = 3
print(f"{a}{b} 等於 {a + b}")

輸出:

53 等於 8

轉換字串為數字

有時,我們需要將字串轉換為數字,例如處理用戶輸入。

user_input = "50"
number = int(user_input)
print(number * 2)

輸出:

100

int() 函數

將字串轉換為整數。

text = "100"
number = int(text)
print(number)        # 輸出:100
print(type(number))  # 輸出:<class 'int'>

float() 函數

將字串轉換為浮點數。

text = "3.14"
number = float(text)
print(number)        # 輸出:3.14
print(type(number))  # 輸出:<class 'float'>

注意事項

如果字串無法被轉換為數字,會引發 ValueError。

text = "abc"
number = int(text)  # 這會引發 ValueError

錯誤訊息:

ValueError: invalid literal for int() with base 10: 'abc'

實際應用示例

計算 BMI 指數

height = float(input("請輸入您的身高(公尺):"))
weight = float(input("請輸入您的體重(公斤):"))
bmi = weight / (height ** 2)
print(f"您的 BMI 指數為:{bmi:.2f}")

輸出示例:

請輸入您的身高(公尺):1.75
請輸入您的體重(公斤):68
您的 BMI 指數為:22.20

倒計時計時器

import time

seconds = int(input("請輸入倒計時秒數:"))
for i in range(seconds, 0, -1):
    print(f"倒計時:{i} 秒")
    time.sleep(1)
print("時間到!")

常見錯誤與解決方案

TypeError: can only concatenate str (not “int”) to str

問題原因:嘗試將字串與數字直接相加。

解決方案:使用 str() 將數字轉換為字串,或使用字串格式化。

# 錯誤寫法
age = 30
message = "我的年齡是 " + age  # 引發錯誤

# 正確寫法
message = "我的年齡是 " + str(age)
# 或
message = f"我的年齡是 {age}"

ValueError: invalid literal for int() with base 10

問題原因:嘗試將非數字字串轉換為整數。

解決方案:在轉換前,驗證字串是否為數字,或使用異常處理。

text = "abc"

# 方法一:使用 str.isdigit()
if text.isdigit():
    number = int(text)
else:
    print("輸入的不是數字")

# 方法二:使用 try-except
try:
    number = int(text)
except ValueError:
    print("轉換失敗,請輸入有效的數字")

總結

在 Python 中,數字與文字的結合是日常編程中不可避免的操作。

掌握如何在字串中嵌入數字,以及如何在需要時進行型別轉換,將使你的程式更加健壯和靈活。

建議多練習字串格式化的方法,選擇最適合你的編碼風格。

推薦閱讀:

Similar Posts

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *