别再print调试了!Python变量、数据类型、运算符3分钟速成

28 阅读6分钟

你是不是也这样写过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的"身份证系统"

基础类型速查表

类型英文例子特点
整数int10, -5, 0没有小数点
浮点数float3.14, -0.5有小数点
字符串str"Hello", 'Python'引号包围
布尔值boolTrue, False真或假
空值NoneTypeNone啥也不是

数据类型自动转换(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句话

  1. 变量是标签,不是盒子 - 一个数据可以有多个变量名
  2. 类型不匹配,神仙也救不了 - 先确保类型对了再计算
  3. 除数要检查,0不是朋友 - 永远警惕除零错误

你觉得Python的这些基础概念简单吗?

评论区聊聊你踩过哪些坑,或者有什么骚操作?(^_^)v

(如果觉得有用,别忘了点赞收藏,下次写Python进阶技巧!)


P.S. 这些知识点看似简单,但90%的bug都来源于此。把这些基础打牢,你离Python大神就不远了!