你是不是也这样写过Python?
# 看看你有没有这样写过
a = 10
b = 20
c = a + b
print(c) # 30
然后你心满意足地运行,结果发现:
- 变量名写错了:
print(c)→print(d)(NameError: name 'd' is not defined) - 字符串拼不上:
name = "小明",age = 18,print(name + age)(TypeError) - 除法算不对:
print(10 / 3)结果是3.333...而不是3
别慌,今天本小姐带你彻底搞懂Python的变量、数据类型和运算符,让你从小白变老司机! (^_^)b
变量:不是盒子,是标签
错误理解
很多人以为变量是个"盒子",把数据放进去:
[盒子] ← "Hello World"
正确理解
变量其实是贴在数据上的"标签":
"Hello World" ← name
← message
这意味着什么?
# 一个数据可以有多个标签
name = "小明"
message = "小明"
print(id(name)) # 200000001234567
print(id(message)) # 200000001234567 (同一个对象!)
print(name is message) # True
骚操作时间:
# 标签可以撕下来贴到别的地方
name = "小明"
name = "小红" # 小明还在内存里,但name标签贴给了小红
# 两个标签贴同一个对象
list1 = [1, 2, 3]
list2 = list1
list2.append(4)
print(list1) # [1, 2, 3, 4] (惊不惊喜?)
数据类型:Python的"身份证系统"
基础类型速查表
| 类型 | 英文 | 例子 | 特点 |
|---|---|---|---|
| 整数 | int | 10, -5, 0 | 没有小数点 |
| 浮点数 | float | 3.14, -0.5 | 有小数点 |
| 字符串 | str | "Hello", 'Python' | 引号包围 |
| 布尔值 | bool | True, False | 真或假 |
| 空值 | NoneType | None | 啥也不是 |
数据类型自动转换(Python的贴心之处)
# 整数 + 浮点数 = 浮点数
print(10 + 3.14) # 13.14 (Python自动升级类型)
# 布尔值的秘密身份
print(True + 1) # 2 (True就是1)
print(False + 1) # 1 (False就是0)
# 但字符串不行!
# print("10" + 5) # TypeError: 你以为你是JavaScript吗?
类型转换的"强制手段"
# str():万能转换器
age = 18
print("我今年" + str(age) + "岁") # 字符串拼接
# int():取整大师(会砍掉小数部分)
print(int(3.14)) # 3
print(int("123")) # 123
# print(int("3.14")) # ValueError:这锅我不背!
# float():小数制造机
print(float("3.14")) # 3.14
print(float(10)) # 10.0
运算符:Python的计算器
算术运算符(基础四则运算plus版)
print(10 + 3) # 13 (加法)
print(10 - 3) # 7 (减法)
print(10 * 3) # 30 (乘法)
print(10 / 3) # 3.333... (除法,总是浮点数)
print(10 // 3) # 3 (整除,砍掉小数)
print(10 % 3) # 1 (取余数)
print(10 ** 3) # 1000 (幂运算)
骚操作:整除和取余的实际用途
# 判断奇偶数
num = 17
if num % 2 == 0:
print("偶数")
else:
print("奇数") # 奇数
# 分钟转换成小时+分钟
total_minutes = 125
hours = total_minutes // 60 # 2小时
minutes = total_minutes % 60 # 5分钟
print(f"{hours}小时{minutes}分钟")
比较运算符(真假判断器)
print(10 > 3) # True
print(10 >= 3) # True
print(10 < 3) # False
print(10 <= 3) # False
print(10 == 3) # False (等于)
print(10 != 3) # True (不等于)
注意:= 和 == 的区别
# = 是赋值,把右边的东西给左边的变量
name = "小明" # 把"小明"赋值给name
# == 是比较,判断两边是否相等
print(name == "小明") # True
print(name == "小红") # False
# 常见错误:if name = "小明": # SyntaxError!
# 应该用:if name == "小明":
逻辑运算符(条件组合器)
# and:所有条件都为True才是True
print(True and True) # True
print(True and False) # False
print(10 > 5 and 3 < 7) # True
# or:只要有一个True就是True
print(True or False) # True
print(False or False) # False
# not:反着来
print(not True) # False
print(not False) # True
字符串的特殊运算符
# +:字符串拼接
greeting = "Hello"
name = "小明"
full_greeting = greeting + " " + name # "Hello 小明"
# *:字符串重复
print("哈" * 3) # "哈哈哈"
print("Python" * 2) # "PythonPython"
# in:判断子字符串
print("Python" in "I love Python") # True
print("Java" in "I love Python") # False
实战演练:做一个简单的计算器
学了这么多,来个实战怎么样?
# 简单计算器v1.0
num1 = float(input("请输入第一个数字: "))
operator = input("请输入运算符 (+, -, *, /): ")
num2 = float(input("请输入第二个数字: "))
if operator == "+":
result = num1 + num2
elif operator == "-":
result = num1 - num2
elif operator == "*":
result = num1 * num2
elif operator == "/":
if num2 != 0: # 防止除零错误
result = num1 / num2
else:
result = "错误:除数不能为0"
else:
result = "错误:不支持的运算符"
print(f"结果: {result}")
升级版:支持更多运算符
# 计算器v2.0 - 增强版
num1 = float(input("第一个数字: "))
operator = input("运算符 (+, -, *, /, //, %, **): ")
num2 = float(input("第二个数字: "))
operations = {
"+": lambda a, b: a + b,
"-": lambda a, b: a - b,
"*": lambda a, b: a * b,
"/": lambda a, b: a / b if b != 0 else "错误:除数不能为0",
"//": lambda a, b: a // b if b != 0 else "错误:除数不能为0",
"%": lambda a, b: a % b if b != 0 else "错误:除数不能为0",
"**": lambda a, b: a ** b
}
if operator in operations:
result = operations[operator](num1, num2)
print(f"{num1} {operator} {num2} = {result}")
else:
print(f"错误:不支持的运算符 '{operator}'")
踩坑指南:常见错误及解决方案
错误1:变量名拼写错误
name = "小明"
# print(nme) # NameError: name 'nme' is not defined
解决方案:
- 使用有意义的变量名
- 用IDE的自动补全功能
- 仔细检查拼写
错误2:字符串和数字直接相加
age = 18
# print("年龄:" + age) # TypeError: can only concatenate str (not "int") to str
解决方案:
age = 18
print("年龄:" + str(age)) # 方法1:类型转换
print(f"年龄:{age}") # 方法2:f-string(推荐)
print("年龄:" + str(age) + "岁") # 方法3:多个字符串拼接
错误3:除数为零
# print(10 / 0) # ZeroDivisionError: division by zero
解决方案:
divisor = 0
if divisor != 0:
result = 10 / divisor
else:
print("除数不能为0")
错误4:混淆 == 和 =
# if name = "小明": # SyntaxError
解决方案:
记住:= 是"赋值",== 是"比较"
终极技巧:调试三件套
当你的代码不工作时,试试这三招:
1. print大法(虽然low但有效)
num1 = 10
num2 = 20
result = num1 + num2
print(f"num1 = {num1}, type = {type(num1)}")
print(f"num2 = {num2}, type = {type(num2)}")
print(f"result = {result}, type = {type(result)}")
2. type()检查类型
value = "123"
print(type(value)) # <class 'str'>
print(type(int(value))) # <class 'int'>
3. 逐步验证
# 不要一步写完,一步一步来
expr = "2 + 3 * 4"
# 第一步:检查表达式
print(f"表达式: {expr}")
# 第二步:计算部分
result1 = 3 * 4
print(f"3 * 4 = {result1}")
# 第三步:完整计算
result2 = 2 + result1
print(f"2 + {result1} = {result2}")
记住这3句话
- 变量是标签,不是盒子 - 一个数据可以有多个变量名
- 类型不匹配,神仙也救不了 - 先确保类型对了再计算
- 除数要检查,0不是朋友 - 永远警惕除零错误
你觉得Python的这些基础概念简单吗?
评论区聊聊你踩过哪些坑,或者有什么骚操作?(^_^)v
(如果觉得有用,别忘了点赞收藏,下次写Python进阶技巧!)
P.S. 这些知识点看似简单,但90%的bug都来源于此。把这些基础打牢,你离Python大神就不远了!