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}")
輸出:
5 加 3 等於 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 中,數字與文字的結合是日常編程中不可避免的操作。
掌握如何在字串中嵌入數字,以及如何在需要時進行型別轉換,將使你的程式更加健壯和靈活。
建議多練習字串格式化的方法,選擇最適合你的編碼風格。
推薦閱讀: