第三章 Python基础知识:从零开始搭积木

各位同学,欢迎来到Python基础知识的环节。说实话,这一章的内容看起来有点琐碎,但它们是构建一切程序的基石。我个人习惯把这一章比作「搭积木前的认零件」——你得知道每块积木叫什么、能怎么拼,后面才能搭出漂亮的大楼。

3.1 注释:写给未来的自己看

注释这东西,说白了就是代码里的「便签纸」。Python解释器看到注释会直接跳过,不会执行。但你别小看它,我见过太多项目,几个月后连原作者都看不懂自己写的代码。

注释的两种写法:

# 这是单行注释,井号后面都是注释内容
print("Hello, World!")  # 也可以写在代码后面

"""
这是多行注释
用三个引号包起来
可以写很多行说明
"""

我的小建议:写注释时别写「废话」。比如 # 打印Hello 这种注释,看代码就知道的事,写了等于没写。要写「为什么这么做」,而不是「做了什么」。

我曾经接手过一个项目,里面全是 # 这里加1 这种注释。你想想看,加1谁不知道?关键是为什么加1?后来我花了整整两天才理清逻辑。嗯,从那以后我写注释都带着「为什么」。

3.2 变量与数据类型:给数据贴标签

变量是什么?就是给数据起个名字。Python里不需要提前声明类型,直接赋值就行。这很灵活,但也容易踩坑。

name = "小明"      # 字符串类型
age = 18           # 整数类型
height = 1.75      # 浮点数类型
is_student = True  # 布尔类型

Python的数据类型主要有这么几种:

类型 例子 说明
int 10, -5, 0 整数,没有小数点
float 3.14, -0.5 浮点数,带小数点
str "Hello", 'Python' 字符串,用引号包着
bool True, False 布尔值,注意首字母大写
NoneType None 空值,表示「什么都没有」

注意:Python是动态类型语言,变量可以随时改变类型。比如 x = 10 之后,你还可以写 x = "hello"。这在某些场景下很方便,但也容易让代码变得混乱。我个人建议:一个变量尽量只存一种类型的数据。

3.3 标识符和关键字:起名字的规矩

标识符就是变量名、函数名这些名字。Python对起名字有要求:

  • 只能包含字母、数字、下划线
  • 不能以数字开头
  • 不能是Python的关键字
  • 区分大小写(name和Name是两个变量)

那什么是关键字?就是Python自己保留的词,你不能拿来当变量名。比如 ifforwhile 这些。

# 合法的标识符
my_name = "张三"
age_2024 = 25
_temp = 36.5

# 不合法的标识符
# 2name = "李四"    # 数字开头,报错
# my-name = "王五"  # 有连字符,报错
# if = 10           # 关键字,报错

我的命名习惯:变量名用下划线分隔单词(snake_case),比如 user_nametotal_score。类名用大驼峰(CamelCase),比如 StudentInfo。保持统一,团队协作时特别重要。

3.4 输入与输出:和程序对话

输入用 input(),输出用 print()。这两个函数你以后天天都会用。

name = input("请输入你的名字:")
print("你好," + name + "!")

这里有个坑:input() 返回的永远是字符串。哪怕你输入的是数字,它也是字符串类型。我刚开始学的时候就被这个坑过——

我曾经犯过的错:写了一个计算年龄的程序,直接用 input() 拿到的数字去做加法,结果变成了字符串拼接。比如输入18,输出变成了「你明年19岁」?不,输出是「你明年181岁」。因为字符串拼接把18和1拼成了181。

解决办法?用 int()float() 转换一下:

age = int(input("请输入你的年龄:"))
print("明年你" + str(age + 1) + "岁了")

3.5 运算符:做计算的工具

运算符分几大类,我列个表给你看:

类型 运算符 例子 结果
算术 + - * / // % ** 10 // 3 3(整除)
比较 == != > < >= <= 5 > 3 True
逻辑 and or not True and False False
赋值 = += -= *= /= x += 1 等价于 x = x + 1

这里有个容易混淆的地方:/// 的区别。前者是普通除法,结果是浮点数;后者是整除,只保留整数部分。

print(10 / 3)   # 输出 3.3333333333333335
print(10 // 3)  # 输出 3
print(10 % 3)   # 输出 1(取余数)

实际项目中的应用:判断一个数是不是偶数,用 num % 2 == 0。判断年份是不是闰年,用 year % 4 == 0 and year % 100 != 0。这些写法我在项目中用了无数次。

3.6 类型转换:让数据变个样

Python里类型转换分两种:隐式转换和显式转换。

隐式转换是Python自动帮你做的。比如整数和浮点数做运算时,整数会自动转成浮点数:

result = 10 + 3.14  # 10自动转成10.0,结果是13.14

显式转换是你主动用函数去转。常用的有:

  • int(x):转成整数
  • float(x):转成浮点数
  • str(x):转成字符串
  • bool(x):转成布尔值
# 字符串转数字
price = "19.9"
price_float = float(price)  # 变成19.9

# 数字转字符串
count = 100
message = "总共" + str(count) + "个"  # 字符串拼接必须转

# 布尔转换的坑
print(bool(0))      # False
print(bool(""))     # False
print(bool([]))     # False
print(bool(1))      # True
print(bool("abc"))  # True

特别注意:不是所有字符串都能转成数字。int("hello") 会报错。所以做转换前最好先确认数据格式。我在项目中常用 try...except 来捕获这种错误,后面章节会详细讲。

3.7 避坑指南:新手最容易犯的错

最后,我总结几个我见过最多的坑:

  1. 变量名拼写错误——Python区分大小写,Namename 是两个变量。我曾经调试了半小时,结果发现是大小写写错了。
  2. 忘记类型转换——input() 返回字符串,直接做数学运算会出问题。
  3. 除零错误——任何数除以0都会报错,写代码时记得检查除数。
  4. 布尔值大小写——Python里是 TrueFalse,不是 truefalse
  5. 字符串拼接和数字相加搞混——"5" + 3 会报错,因为类型不同不能直接拼接。

好了,这一章的内容就到这里。说实话,这些基础知识看起来简单,但越是基础的东西越容易出错。你想想看,盖房子地基没打好,后面装修得再漂亮也没用。所以,多动手敲代码,把这些概念变成肌肉记忆,后面学起来就轻松多了。