👀 你以为 Python 是“弱类型”,其实它只是灵活而有趣。 今天我们不讲概念,我们来玩点类型魔法!
✅ 本文目标
- 掌握
type()、isinstance()基本用法 - 理解隐式类型转换 + 强制类型转换
- 编写一个智能输入助手:用户输入啥都能处理
🧠 第一关:认识类型的本质
print(type("hello")) # <class 'str'>
print(type(123)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
还可以判断类型:
num = 42
print(isinstance(num, int)) # True
print(isinstance(num, str)) # False
🔧 第二关:类型转换的正确姿势
✅ 强制转换
age = "30"
age_int = int(age)
print(age_int + 1) # 31
score = 98.5
print(str(score) + " 分") # "98.5 分"
⚠️ 注意:不是所有字符串都能转数字!
print(int("abc")) # ❌ ValueError
你需要做保护:
if "abc".isdigit():
print(int("abc"))
else:
print("不是数字,别转")
🧠 第三关:写一个智能输入助手
自动判断用户输入类型,转成 int/float/bool/str,返回统一结果
def smart_input(prompt):
raw = input(prompt)
if raw.isdigit():
return int(raw)
try:
return float(raw)
except ValueError:
pass
if raw.lower() in ["true", "false"]:
return raw.lower() == "true"
return raw # 默认是字符串
💻 运行:
🔥 第四关:加点骚操作(输入识别日期)
from datetime import datetime
def smart_input_v2(prompt):
raw = input(prompt)
try:
return int(raw)
except:
pass
try:
return float(raw)
except:
pass
if raw.lower() in ['true', 'false']:
return raw.lower() == 'true'
try:
return datetime.strptime(raw, "%Y-%m-%d")
except:
return raw
val = smart_input_v2("输入点啥试试:")
print(f"🧪 值:{val},类型:{type(val).__name__}")
🧪 运行结果:
💡 项目拓展方向
- 添加对 JSON 格式的支持(尝试
json.loads) - 返回值 + 类型封装成字典,方便后续处理
- 封装为模块
from smart_input import get_input
🧠 总结
Python 的类型系统虽然不像 Java/C++ 那么严格,但它有非常清晰的动态强类型模型。
下次再有人说「Python 是弱类型语言」,你可以用一句话回怼:
“不是弱,是灵活强大。”